Skip to content

Commit 85ce162

Browse files
committed
test(combo): form control binding w/ empty array and value reset #8098
1 parent 85fc9ec commit 85ce162

File tree

1 file changed

+52
-3
lines changed

1 file changed

+52
-3
lines changed

projects/igniteui-angular/src/lib/combo/combo.component.spec.ts

Lines changed: 52 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import { AfterViewInit, ChangeDetectorRef, Component, Injectable, OnInit, ViewChild, OnDestroy, DebugElement } from '@angular/core';
2-
import { async, TestBed, tick, fakeAsync } from '@angular/core/testing';
2+
import { async, TestBed, tick, fakeAsync, ComponentFixture } from '@angular/core/testing';
33
import { By } from '@angular/platform-browser';
44
import { NoopAnimationsModule } from '@angular/platform-browser/animations';
5-
import { FormGroup, FormControl, Validators, FormBuilder, ReactiveFormsModule, FormsModule, NgControl } from '@angular/forms';
5+
import { FormGroup, FormControl, Validators, FormBuilder, ReactiveFormsModule, FormsModule, NgControl, NgModel } from '@angular/forms';
66
import { IgxComboComponent, IgxComboModule, IComboSelectionChangeEventArgs, IgxComboState, IComboSearchInputEventArgs } from './combo.component';
77
import { IgxComboItemComponent } from './combo-item.component';
88
import { IgxComboDropDownComponent } from './combo-dropdown.component';
@@ -60,7 +60,7 @@ const defaultDropdownItemHeight = 40;
6060
const defaultDropdownItemMaxHeight = 400;
6161

6262
describe('igxCombo', () => {
63-
let fixture;
63+
let fixture: ComponentFixture<any>;
6464
let combo: IgxComboComponent;
6565
let input: DebugElement;
6666

@@ -2643,6 +2643,55 @@ describe('igxCombo', () => {
26432643
expect(combo.valid).toEqual(IgxComboState.INVALID);
26442644
expect(combo.comboInput.valid).toEqual(IgxInputState.INVALID);
26452645
});
2646+
it('should properly init with empty array and handle consecutive model changes', fakeAsync(() => {
2647+
const model = fixture.debugElement.query(By.directive(NgModel)).injector.get(NgModel);
2648+
fixture.componentInstance.values = [];
2649+
fixture.detectChanges();
2650+
tick();
2651+
expect(combo.valid).toEqual(IgxComboState.INITIAL);
2652+
expect(combo.comboInput.valid).toEqual(IgxInputState.INITIAL);
2653+
expect(model.valid).toBeFalse();
2654+
expect(model.dirty).toBeFalse();
2655+
expect(model.touched).toBeFalse();
2656+
2657+
fixture.componentInstance.values = ['Missouri'];
2658+
fixture.detectChanges();
2659+
tick();
2660+
expect(combo.valid).toEqual(IgxComboState.INITIAL);
2661+
expect(combo.comboInput.valid).toEqual(IgxInputState.INITIAL);
2662+
expect(combo.selectedItems()).toEqual(['Missouri']);
2663+
expect(combo.value).toEqual('Missouri');
2664+
expect(model.valid).toBeTrue();
2665+
expect(model.touched).toBeFalse();
2666+
2667+
fixture.componentInstance.values = ['Missouri', 'Missouri'];
2668+
fixture.detectChanges();
2669+
expect(combo.valid).toEqual(IgxComboState.INITIAL);
2670+
expect(combo.comboInput.valid).toEqual(IgxInputState.INITIAL);
2671+
expect(combo.selectedItems()).toEqual(['Missouri']);
2672+
expect(combo.value).toEqual('Missouri');
2673+
expect(model.valid).toBeTrue();
2674+
expect(model.touched).toBeFalse();
2675+
2676+
fixture.componentInstance.values = null;
2677+
fixture.detectChanges();
2678+
tick();
2679+
expect(combo.valid).toEqual(IgxComboState.INITIAL);
2680+
expect(combo.comboInput.valid).toEqual(IgxInputState.INITIAL);
2681+
expect(combo.selectedItems()).toEqual([]);
2682+
expect(combo.value).toEqual('');
2683+
expect(model.valid).toBeFalse();
2684+
expect(model.touched).toBeFalse();
2685+
expect(model.dirty).toBeFalse();
2686+
2687+
combo.onBlur();
2688+
fixture.detectChanges();
2689+
expect(combo.valid).toEqual(IgxComboState.INVALID);
2690+
expect(combo.comboInput.valid).toEqual(IgxInputState.INVALID);
2691+
expect(model.valid).toBeFalse();
2692+
expect(model.touched).toBeTrue();
2693+
expect(model.dirty).toBeFalse();
2694+
}));
26462695
it('should have correctly bound focus and blur handlers', () => {
26472696
spyOn(combo, 'onFocus');
26482697
spyOn(combo, 'onBlur');

0 commit comments

Comments
 (0)