UNPKG

@ng2-dynamic-forms/ui-foundation

Version:

Foundation UI package for ng2 Dynamic Forms

114 lines (112 loc) 6.38 kB
import { TestBed, async, inject } from "@angular/core/testing"; import { DebugElement, SimpleChange } from "@angular/core"; import { ReactiveFormsModule, FormGroup, FormControl } from "@angular/forms"; import { By } from "@angular/platform-browser"; import { TextMaskModule } from "angular2-text-mask"; import { DynamicFormsCoreModule, DynamicFormService, DynamicCheckboxModel, DynamicCheckboxGroupModel, DynamicDatePickerModel, DynamicEditorModel, DynamicFileUploadModel, DynamicFormArrayModel, DynamicFormControlModel, DynamicFormGroupModel, DynamicInputModel, DynamicRadioGroupModel, DynamicSelectModel, DynamicSliderModel, DynamicSwitchModel, DynamicTextAreaModel, DynamicTimePickerModel } from "@ng2-dynamic-forms/core"; import { DynamicFormFoundationSitesComponent } from "./dynamic-form-foundation-sites.component"; describe("DynamicFormFoundationSitesComponent test suite", function () { var formModel = [ new DynamicCheckboxModel({ id: "checkbox" }), new DynamicCheckboxGroupModel({ id: "checkboxGroup", group: [] }), new DynamicDatePickerModel({ id: "datepicker" }), new DynamicEditorModel({ id: "editor" }), new DynamicFileUploadModel({ id: "upload", url: "" }), new DynamicFormArrayModel({ id: "formArray", groupFactory: function () { return []; } }), new DynamicFormGroupModel({ id: "formGroup", group: [] }), new DynamicInputModel({ id: "input", maxLength: 51 }), new DynamicRadioGroupModel({ id: "radioGroup" }), new DynamicSelectModel({ id: "select", options: [{ value: "One" }, { value: "Two" }], value: "One" }), new DynamicSliderModel({ id: "slider" }), new DynamicSwitchModel({ id: "switch" }), new DynamicTextAreaModel({ id: "textarea" }), new DynamicTimePickerModel({ id: "timepicker" }) ], testModel = formModel[7], formGroup, fixture, component, debugElement, testElement; beforeEach(async(function () { TestBed.configureTestingModule({ imports: [ReactiveFormsModule, TextMaskModule, DynamicFormsCoreModule.forRoot()], declarations: [DynamicFormFoundationSitesComponent] }).compileComponents().then(function () { fixture = TestBed.createComponent(DynamicFormFoundationSitesComponent); component = fixture.componentInstance; debugElement = fixture.debugElement; }); })); beforeEach(inject([DynamicFormService], function (service) { formGroup = service.createFormGroup(formModel); component.group = formGroup; component.model = testModel; component.ngOnChanges({ group: new SimpleChange(null, component.group, true), model: new SimpleChange(null, component.model, true) }); fixture.detectChanges(); testElement = debugElement.query(By.css("input[id='" + testModel.id + "']")); })); it("should initialize correctly", function () { expect(component.context).toBeNull(); expect(component.control instanceof FormControl).toBe(true); expect(component.group instanceof FormGroup).toBe(true); expect(component.model instanceof DynamicFormControlModel).toBe(true); expect(component.hasErrorMessaging).toBe(false); expect(component.onControlValueChanges).toBeDefined(); expect(component.onModelDisabledUpdates).toBeDefined(); expect(component.onModelValueUpdates).toBeDefined(); expect(component.blur).toBeDefined(); expect(component.change).toBeDefined(); expect(component.focus).toBeDefined(); expect(component.onValueChange).toBeDefined(); expect(component.onFocusChange).toBeDefined(); expect(component.isValid).toBe(true); expect(component.isInvalid).toBe(false); expect(component.showErrorMessages).toBe(false); expect(component.type).toEqual(4 /* Input */); }); it("should have an input element", function () { expect(testElement instanceof DebugElement).toBe(true); }); it("should listen to native focus and blur events", function () { spyOn(component, "onFocusChange"); testElement.triggerEventHandler("focus", null); testElement.triggerEventHandler("blur", null); expect(component.onFocusChange).toHaveBeenCalledTimes(2); }); it("should listen to native change event", function () { spyOn(component, "onValueChange"); testElement.triggerEventHandler("change", null); expect(component.onValueChange).toHaveBeenCalled(); }); it("should update model value when control value changes", function () { spyOn(component, "onControlValueChanges"); component.control.setValue("test"); expect(component.onControlValueChanges).toHaveBeenCalled(); }); it("should update control value when model value changes", function () { spyOn(component, "onModelValueUpdates"); testModel.valueUpdates.next("test"); expect(component.onModelValueUpdates).toHaveBeenCalled(); }); it("should update control activation when model disabled property changes", function () { spyOn(component, "onModelDisabledUpdates"); testModel.disabledUpdates.next(true); expect(component.onModelDisabledUpdates).toHaveBeenCalled(); }); it("should determine correct form control type", function () { var testFn = DynamicFormFoundationSitesComponent.getFormControlType; expect(testFn(formModel[0])).toEqual(2 /* Checkbox */); expect(testFn(formModel[1])).toEqual(3 /* Group */); expect(testFn(formModel[2])).toBeNull(); expect(testFn(formModel[3])).toBeNull(); expect(testFn(formModel[4])).toBeNull(); expect(testFn(formModel[5])).toEqual(1 /* Array */); expect(testFn(formModel[6])).toEqual(3 /* Group */); expect(testFn(formModel[7])).toEqual(4 /* Input */); expect(testFn(formModel[8])).toEqual(5 /* RadioGroup */); expect(testFn(formModel[9])).toEqual(6 /* Select */); expect(testFn(formModel[10])).toBeNull(); expect(testFn(formModel[11])).toEqual(7 /* Switch */); expect(testFn(formModel[12])).toEqual(8 /* TextArea */); expect(testFn(formModel[13])).toBeNull(); }); }); //# sourceMappingURL=dynamic-form-foundation-sites.component.spec.js.map