Skip to content

Commit 910116e

Browse files
Steve RhoadesSteve Rhoades
authored andcommitted
Improve test coverage
1 parent 457d96e commit 910116e

File tree

1 file changed

+78
-7
lines changed

1 file changed

+78
-7
lines changed

projects/ng-dynamic-forms/core/src/lib/service/dynamic-form-data.service.spec.ts

Lines changed: 78 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {
1212
import {Observable, of} from 'rxjs';
1313
import {Injectable} from '@angular/core';
1414
import {DynamicInputModel} from '../model/input/dynamic-input.model';
15+
import {DynamicFormGroupModel} from '../model/form-group/dynamic-form-group.model';
1516

1617
@Injectable()
1718
class TestProvider implements DynamicFormControlListDataProvider, DynamicFormControlOptionDataProvider {
@@ -69,8 +70,8 @@ describe("DynamicFormDataService test suite", () => {
6970
service: TestProvider
7071
}
7172
}),
72-
invalidProvider: DynamicInputModel = new DynamicInputModel({
73-
id: "testInput3",
73+
invalidListProvider: DynamicInputModel = new DynamicInputModel({
74+
id: "invalidListProvider",
7475
list: ['item-1', 'item-2', 'item-3'],
7576
value: "item-1",
7677
dataProvider: {
@@ -79,7 +80,54 @@ describe("DynamicFormDataService test suite", () => {
7980
},
8081
service: InvalidTestProvider,
8182
}
82-
})
83+
}),
84+
invalidOptionProvider: DynamicSelectModel<any> = new DynamicSelectModel({
85+
id: "invalidOptionProvider",
86+
options: [{value: "option-1"}, {value: "option-2"}, {value: "option-3"}],
87+
value: "option-1",
88+
dataProvider: {
89+
relation: {
90+
id: 'testInput'
91+
},
92+
service: InvalidTestProvider,
93+
}
94+
}),
95+
referenceInvalidControl: DynamicInputModel = new DynamicInputModel({
96+
id: "referenceInvalidControl",
97+
list: ['item-1', 'item-2', 'item-3'],
98+
value: "item-1",
99+
dataProvider: {
100+
relation: {
101+
id: 'not-an-id'
102+
},
103+
service: TestProvider,
104+
}
105+
}),
106+
groupModel = new DynamicFormGroupModel({
107+
id: 'test',
108+
group: [
109+
new DynamicRadioGroupModel({
110+
id: "testRootRadioGroup",
111+
options: [{value: "option-1"}, {value: "option-2"}, {value: "option-3"}],
112+
value: "option-1",
113+
dataProvider: {
114+
relation: {
115+
id: 'testInput'
116+
},
117+
service: TestProvider
118+
}
119+
}),
120+
]
121+
}),
122+
groupInputTest = new DynamicInputModel({
123+
id: "testInput",
124+
dataProvider: {
125+
relation: {
126+
rootPath: 'test.testRootRadioGroup'
127+
},
128+
service: TestProvider,
129+
}
130+
})
83131
;
84132

85133
beforeEach(() => {
@@ -100,7 +148,9 @@ describe("DynamicFormDataService test suite", () => {
100148
model,
101149
select,
102150
radio,
103-
invalidProvider
151+
invalidListProvider,
152+
invalidOptionProvider,
153+
groupModel
104154
]);
105155
}));
106156

@@ -138,12 +188,33 @@ describe("DynamicFormDataService test suite", () => {
138188
radio.options$.subscribe((options) => expect(options[0].value).toBe('test'));
139189
}));
140190

141-
it("should not fail with invalid provider but receive warning.", fakeAsync(() => {
191+
it("should not fail with invalid provider but receive warning with missing list data provider.", fakeAsync(() => {
142192
const triggerControl = group.get('testInput');
143193

144-
service.connectDynamicFormControls(invalidProvider, group);
194+
service.connectDynamicFormControls(invalidListProvider, group);
145195
triggerControl.setValue('newVal');
146196
tick(401);
147-
invalidProvider.list$.subscribe((list) => expect(list[0]).toBe('item-1'));
197+
invalidListProvider.list$.subscribe((list) => expect(list[0]).toBe('item-1'));
148198
}));
199+
200+
it("should not fail with invalid provider but receive warning with missing options data provider.", fakeAsync(() => {
201+
const triggerControl = group.get('testInput');
202+
203+
service.connectDynamicFormControls(invalidOptionProvider, group);
204+
triggerControl.setValue('newVal');
205+
tick(401);
206+
radio.options$.subscribe((options) => expect(options[0].value).toBe('option-1'));
207+
}));
208+
209+
it('should show warning with invalid relatedform control', () => {
210+
const relatedFormControl = service.getRelatedFormControl(referenceInvalidControl, group);
211+
expect(relatedFormControl).toBe(null);
212+
});
213+
214+
it('should get related form control from rootPath', () => {
215+
const compareControl = group.root.get('test.testRootRadioGroup');
216+
const relatedFormControl = service.getRelatedFormControl(groupInputTest, group);
217+
218+
expect(relatedFormControl).toBe(compareControl);
219+
});
149220
});

0 commit comments

Comments
 (0)