Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / catalog / catalog.component.spec.ts
1
2 import { async, ComponentFixture, TestBed } from "@angular/core/testing";
3 import {ConfigureFn, configureTests} from "../../../../jest/test-config.helper";
4 import {NO_ERRORS_SCHEMA} from "@angular/core";
5 import { CacheService} from "../../../../app/services-ng2";
6 import {CatalogComponent} from "./catalog.component";
7 import {  SdcUiServices } from "onap-ui-angular";
8 import { SdcConfigToken } from "../../config/sdc-config.config";
9 import { SdcMenuToken} from "../../config/sdc-menu.config";
10 import { ResourceNamePipe } from "../../pipes/resource-name.pipe";
11 import { CatalogService } from "../../services/catalog.service";
12 import {TranslatePipe} from "../../shared/translator/translate.pipe";
13 import {TranslateService} from "../../shared/translator/translate.service";
14 import {Observable} from "rxjs";
15 import {LoaderService} from "onap-ui-angular/dist/loader/loader.service";
16 import {categoriesElements} from "../../../../jest/mocks/categories.mock";
17 import {sdcMenu} from "../../../../jest/mocks/sdc-menu.mock";
18 import {IEntityFilterObject} from "../../pipes/entity-filter.pipe";
19
20
21
22
23
24 describe('catalog component', () => {
25
26     let fixture: ComponentFixture<CatalogComponent>;
27
28     //Data variables
29     let catalogSelectorItemsMock;
30     let checkListModelMock;
31     let filterParamsMock;
32     let checkboxesFilterMock;
33     let checkboxesFilterKeysMock;
34
35
36     //Service variables
37     let stateServiceMock;
38     let cacheServiceMock: Partial<CacheService>;
39     let loaderServiceMock: Partial<LoaderService>;
40     let catalogServiceMock: Partial<CatalogService>;
41
42
43     beforeEach(
44
45         async(() => {
46             console.info = jest.fn();
47             catalogSelectorItemsMock = [
48                 {
49                     value: 0,
50                     title: 'Active Items',
51                     header: 'Active'
52                 },
53                 {
54                     value: 1,
55                     title: 'Archive',
56                     header: 'Archived'
57                 }
58             ];
59             checkListModelMock = {
60                 checkboxes: [
61                     {label: "VF", disabled: false, isChecked: false, testId: "checkbox-vf", value: "Resource.VF"},
62                     {label: "VFC", disabled: false, isChecked: false, testId: "checkbox-vfc", value: "Resource.VFC",
63                         subLevelChecklist: {checkboxes:[{label: "VFD", disabled: false, isChecked: false, testId: "checkbox-vfd", value: "Resource.VFD"}],
64                         selectedValues: ["Resource.VFD"]}
65                         },
66                     {label: "CR", disabled: false, isChecked: false, testId: "checkbox-cr", value: "Resource.CR",
67                         subLevelChecklist: { checkboxes:[{label: "VF", disabled: false, isChecked: false, testId: "checkbox-vf", value: "Resource.VF"}],
68                         selectedValues: []}
69                     }],
70                 selectedValues: ["Resource.VF"]
71             }
72             filterParamsMock = {
73                 active: true,
74                 categories: ["resourceNewCategory.allotted resource.allotted resource", "resourceNewCategory.allotted resource.contrail route", "resourceNewCategory.application l4+.application server"],
75                 components: ["Resource.VF", "Resource.VFC"],
76                 order:  ["lastUpdateDate", true],
77                 statuses: ["inDesign"],
78                 term: "Vf"
79             }
80             checkboxesFilterMock = {
81                 selectedCategoriesModel: ["serviceNewCategory.network l4+", "resourceNewCategory.allotted resource.allotted resource"],
82                 selectedComponentTypes: ["Resource.VF", "Resource.VFC"],
83                 selectedResourceSubTypes: ["VF", "VFC"],
84                 selectedStatuses: ["NOT_CERTIFIED_CHECKOUT", "NOT_CERTIFIED_CHECKIN"]
85             };
86             checkboxesFilterKeysMock = {
87                 categories:{_main: ["serviceNewCategory.network l4+"]},
88                 componentTypes: { Resource: ["Resource.VF", "Resource.VFC"], _main: ["Resource.VFC"]},
89                 statuses: {_main: ["inDesign"]}
90             }
91
92             stateServiceMock = {
93                 go: jest.fn(),
94                 current: jest.fn()
95             };
96             cacheServiceMock = {
97                 get: jest.fn().mockImplementation(()=> categoriesElements),
98                 set: jest.fn(),
99                 contains: jest.fn().mockImplementation(()=> true)
100             };
101             loaderServiceMock = {
102                 activate: jest.fn(),
103                 deactivate: jest.fn()
104             };
105             catalogServiceMock = {
106                 //TODO create mock function of archive
107                 getCatalog: jest.fn().mockImplementation(()=>  Observable.of(categoriesElements)),
108                 getArchiveCatalog: jest.fn().mockImplementation(()=>  Observable.of(categoriesElements))
109             };
110             const configure: ConfigureFn = testBed => {
111                 testBed.configureTestingModule({
112                     declarations: [CatalogComponent, TranslatePipe],
113                     imports: [],
114                     schemas: [NO_ERRORS_SCHEMA],
115                     providers: [
116                         {provide: SdcConfigToken, useValue: {}},
117                         {provide: SdcMenuToken, useValue: sdcMenu},
118                         {provide: "$state", useValue: stateServiceMock },
119                         {provide: CacheService, useValue: cacheServiceMock },
120                         {provide: CatalogService, useValue: catalogServiceMock },
121                         {provide: ResourceNamePipe, useValue: {}},
122                         {provide: SdcUiServices.LoaderService, useValue: loaderServiceMock },
123                         {provide: TranslateService, useValue: {}}
124                     ],
125                 });
126             };
127
128             configureTests(configure).then(testBed => {
129                 fixture = testBed.createComponent(CatalogComponent);
130             });
131         })
132     );
133
134
135     it('should match current snapshot of catalog component', () => {
136         expect(fixture).toMatchSnapshot();
137     });
138
139     it ('should call on catalog component onInit' , () => {
140         const component = TestBed.createComponent(CatalogComponent);
141         component.componentInstance.initGui = jest.fn();
142         component.componentInstance.initLeftSwitch = jest.fn();
143         component.componentInstance.initScopeMembers = jest.fn();
144         component.componentInstance.loadFilterParams = jest.fn();
145         component.componentInstance.initCatalogData = jest.fn();
146         component.componentInstance.ngOnInit();
147         expect(component.componentInstance.initGui).toHaveBeenCalled();
148         expect(component.componentInstance.initLeftSwitch).toHaveBeenCalled();
149         expect(component.componentInstance.initScopeMembers).toHaveBeenCalled();
150         expect(component.componentInstance.loadFilterParams).toHaveBeenCalled();
151         expect(component.componentInstance.initCatalogData).toHaveBeenCalled();
152     });
153
154     it ('should call on catalog component initLeftSwitch' , () => {
155         const component = TestBed.createComponent(CatalogComponent);
156         component.componentInstance.initLeftSwitch();
157         expect(component.componentInstance.showCatalogSelector).toEqual(false);
158         expect(component.componentInstance.catalogSelectorItems).toEqual(catalogSelectorItemsMock);
159         expect(component.componentInstance.selectedCatalogItem).toEqual(catalogSelectorItemsMock[0]);
160     });
161
162     it ('should call on catalog component initCatalogData and selectedCatalogItem is archive ' , () => {
163         const component = TestBed.createComponent(CatalogComponent);
164         component.componentInstance.getArchiveCatalogItems = jest.fn();
165         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[1];
166         component.componentInstance.initCatalogData();
167         expect(component.componentInstance.getArchiveCatalogItems).toHaveBeenCalled();
168     });
169
170     it ('should call on catalog component initCatalogData and selectedCatalogItem is active ' , () => {
171         const component = TestBed.createComponent(CatalogComponent);
172         component.componentInstance.getActiveCatalogItems = jest.fn();
173         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[0];
174         component.componentInstance.initCatalogData();
175         expect(component.componentInstance.getActiveCatalogItems).toHaveBeenCalled();
176     });
177
178     it ('should call on catalog component initScopeMembers' , () => {
179         const component = TestBed.createComponent(CatalogComponent);
180         component.componentInstance.makeSortedCategories = jest.fn().mockImplementation(()=> categoriesElements);
181         component.componentInstance.initCategoriesMap = jest.fn();
182         component.componentInstance.initCheckboxesFilter = jest.fn();
183         component.componentInstance.initCheckboxesFilterKeys = jest.fn();
184         component.componentInstance.buildCheckboxLists = jest.fn();
185         component.componentInstance.initScopeMembers();
186         expect(component.componentInstance.numberOfItemToDisplay).toEqual(0);
187         expect(component.componentInstance.categories).toEqual(categoriesElements);
188         expect(component.componentInstance.confStatus).toEqual(component.componentInstance.sdcMenu.statuses);
189         expect(component.componentInstance.expandedSection).toEqual( ["type", "category", "status"]);
190         expect(component.componentInstance.catalogItems).toEqual([]);
191         expect(component.componentInstance.search).toEqual({FilterTerm: ""});
192         expect(component.componentInstance.initCategoriesMap).toHaveBeenCalled();
193         expect(component.componentInstance.initCheckboxesFilter).toHaveBeenCalled();
194         expect(component.componentInstance.initCheckboxesFilterKeys).toHaveBeenCalled();
195         expect(component.componentInstance.buildCheckboxLists).toHaveBeenCalled();
196         expect(component.componentInstance.version).toEqual(categoriesElements);
197         expect(component.componentInstance.sortBy).toEqual('lastUpdateDate');
198         expect(component.componentInstance.reverse).toEqual(true);
199     });
200
201     it ('should call on catalog component buildCheckboxLists ' , () => {
202         const component = TestBed.createComponent(CatalogComponent);
203         component.componentInstance.buildChecklistModelForTypes = jest.fn();
204         component.componentInstance.buildChecklistModelForCategories = jest.fn();
205         component.componentInstance.buildChecklistModelForStatuses = jest.fn();
206         component.componentInstance.buildCheckboxLists();
207         expect(component.componentInstance.buildChecklistModelForTypes).toHaveBeenCalled();
208         expect(component.componentInstance.buildChecklistModelForCategories).toHaveBeenCalled();
209         expect(component.componentInstance.buildChecklistModelForStatuses).toHaveBeenCalled();
210     });
211
212     it ('should call on catalog component getTestIdForCheckboxByText ' , () => {
213         const component = TestBed.createComponent(CatalogComponent);
214         let testId = component.componentInstance.getTestIdForCheckboxByText("catalog filter");
215         expect(testId).toEqual("checkbox-catalogfilter");
216     });
217
218     it ('should call on catalog component selectLeftSwitchItem with active catalog' , () => {
219         const component = TestBed.createComponent(CatalogComponent);
220         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[1];
221         component.componentInstance.getActiveCatalogItems = jest.fn();
222         component.componentInstance.changeFilterParams = jest.fn();
223         component.componentInstance.selectLeftSwitchItem(catalogSelectorItemsMock[0]);
224         expect(component.componentInstance.getActiveCatalogItems).toBeCalledWith(true);
225         expect(component.componentInstance.changeFilterParams).toBeCalledWith({"active": true});
226     });
227
228     it ('should call on catalog component selectLeftSwitchItem with archive catalog' , () => {
229         const component = TestBed.createComponent(CatalogComponent);
230         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[0];
231         component.componentInstance.getArchiveCatalogItems = jest.fn();
232         component.componentInstance.changeFilterParams = jest.fn();
233         component.componentInstance.selectLeftSwitchItem(catalogSelectorItemsMock[1]);
234         expect(component.componentInstance.getArchiveCatalogItems).toBeCalledWith(true);
235         expect(component.componentInstance.changeFilterParams).toBeCalledWith({"active": false});
236     });
237
238     it ('should call on catalog component buildChecklistModelForTypes' , () => {
239         const component = TestBed.createComponent(CatalogComponent);
240         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
241         component.componentInstance.buildChecklistModelForTypes();
242         expect(component.componentInstance.componentTypes).toEqual({ Resource: ['VF', 'VFC', 'CR', 'PNF', 'CP', 'VL'],
243             Service: null})
244         expect(component.componentInstance.typesChecklistModel.checkboxes.length).toEqual(2);
245     });
246
247     it ('should call on catalog component buildChecklistModelForCategories' , () => {
248         const component = TestBed.createComponent(CatalogComponent);
249         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
250         component.componentInstance.categories = categoriesElements;
251         component.componentInstance.buildChecklistModelForCategories();
252         expect(component.componentInstance.categoriesChecklistModel.checkboxes).not.toEqual(null);
253     });
254
255     it ('should call on catalog component buildChecklistModelForStatuses' , () => {
256         const component = TestBed.createComponent(CatalogComponent);
257         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
258         component.componentInstance.categories = categoriesElements;
259         component.componentInstance.confStatus = sdcMenu.statuses;
260         component.componentInstance.buildChecklistModelForStatuses();
261         expect(component.componentInstance.statusChecklistModel.checkboxes.length).toEqual(3);
262     });
263
264     it ('should call on catalog component initCheckboxesFilter' , () => {
265         const component = TestBed.createComponent(CatalogComponent);
266         component.componentInstance.initCheckboxesFilter();
267         expect(component.componentInstance.checkboxesFilter.selectedComponentTypes).toEqual([]);
268         expect(component.componentInstance.checkboxesFilter.selectedResourceSubTypes).toEqual([]);
269         expect(component.componentInstance.checkboxesFilter.selectedCategoriesModel).toEqual([]);
270         expect(component.componentInstance.checkboxesFilter.selectedStatuses).toEqual([]);
271     });
272
273     it ('should call on catalog component initCheckboxesFilterKeys' , () => {
274         const component = TestBed.createComponent(CatalogComponent);
275         component.componentInstance.initCheckboxesFilterKeys();
276         expect(component.componentInstance.checkboxesFilterKeys.componentTypes).toEqual({ _main: [] });
277         expect(component.componentInstance.checkboxesFilterKeys.categories).toEqual({ _main: [] });
278         expect(component.componentInstance.checkboxesFilterKeys.statuses).toEqual({ _main: [] });
279     });
280
281     it ('should call on catalog component initCategoriesMap' , () => {
282         const component = TestBed.createComponent(CatalogComponent);
283         const categoriesMap = component.componentInstance.initCategoriesMap(categoriesElements);
284         expect(categoriesMap["resourceNewCategory.allotted resource.allotted resource"].parent.name).toEqual("Allotted Resource");
285         expect(categoriesMap["resourceNewCategory.generic"].category.uniqueId).toEqual("resourceNewCategory.generic");
286         expect(categoriesMap["serviceNewCategory.voip call control"].category.name).toEqual("VoIP Call Control");
287
288     });
289
290
291     it ('should call on catalog component selectLeftSwitchItem with active and selectedCatalogItem equal to archived' , () => {
292         const component = TestBed.createComponent(CatalogComponent);
293         component.componentInstance.getActiveCatalogItems = jest.fn();
294         component.componentInstance.changeFilterParams = jest.fn();
295         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[1]
296         component.componentInstance.selectLeftSwitchItem(catalogSelectorItemsMock[0]);
297         expect(component.componentInstance.getActiveCatalogItems).toHaveBeenCalledWith(true);
298         expect(component.componentInstance.changeFilterParams).toHaveBeenCalledWith({active: true})
299     });
300
301     it ('should call on catalog component selectLeftSwitchItem with archived and selectedCatalogItem equal to active' , () => {
302         const component = TestBed.createComponent(CatalogComponent);
303         component.componentInstance.getArchiveCatalogItems = jest.fn();
304         component.componentInstance.changeFilterParams = jest.fn();
305         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[0]
306         component.componentInstance.selectLeftSwitchItem(catalogSelectorItemsMock[1]);
307         expect(component.componentInstance.getArchiveCatalogItems).toBeCalledWith(true);
308         expect(component.componentInstance.changeFilterParams).toHaveBeenCalledWith({active: false})
309     });
310
311     it ('should call on catalog component sectionClick with section contains in expandedSection' , () => {
312         const component = TestBed.createComponent(CatalogComponent);
313         component.componentInstance.expandedSection =  ["type", "category", "status"];
314         component.componentInstance.sectionClick("type");
315         expect(component.componentInstance.expandedSection).toEqual(["category", "status"])
316     });
317
318     it ('should call on catalog component sectionClick with section not contains in expandedSection' , () => {
319         const component = TestBed.createComponent(CatalogComponent);
320         component.componentInstance.expandedSection =  ["type", "category", "status"];
321         component.componentInstance.sectionClick("newItem");
322         expect(component.componentInstance.expandedSection).toEqual(["type", "category", "status", "newItem"])
323     });
324
325     it ('should call on catalog component makeFilterParamsFromCheckboxes with selected values' , () => {
326         const component = TestBed.createComponent(CatalogComponent);
327         expect(component.componentInstance.makeFilterParamsFromCheckboxes(checkListModelMock)).toEqual(["Resource.VF", "Resource.VFD"])
328     });
329
330     it ('should call on catalog component order with resourceName value' , () => {
331         const component = TestBed.createComponent(CatalogComponent);
332         component.componentInstance.changeFilterParams = jest.fn();
333         component.componentInstance.filterParams = filterParamsMock
334         component.componentInstance.order("resourceName");
335         expect(component.componentInstance.changeFilterParams).toHaveBeenCalledWith( {"order": ["resourceName", false]})
336     });
337
338     it ('should call on catalog component goToComponent' , () => {
339         const component = TestBed.createComponent(CatalogComponent);
340        const componentMock = { uniqueId: "d3e80fed-12f6-4f29-aeb1-771050e5db72", componentType: "RESOURCE"}
341         component.componentInstance.goToComponent(componentMock);
342        expect(stateServiceMock.go).toHaveBeenCalledWith('workspace.general', {id: componentMock.uniqueId, type: componentMock.componentType.toLowerCase()})
343
344     });
345
346     it ('should call on catalog component getNumOfElements for active catalog' , () => {
347         const component = TestBed.createComponent(CatalogComponent);
348         component.componentInstance.selectedCatalogItem = catalogSelectorItemsMock[0]
349         expect(component.componentInstance.getNumOfElements(3)).toEqual("3 <b>Active</b> Elements found")
350
351     });
352
353     it ('should call on catalog component raiseNumberOfElementToDisplay with empty catalogFilteredItems' , () => {
354         const component = TestBed.createComponent(CatalogComponent);
355         component.componentInstance.catalogFilteredItems = []
356         component.componentInstance.raiseNumberOfElementToDisplay(true);
357         expect(component.componentInstance.numberOfItemToDisplay).toEqual(NaN);
358         expect(component.componentInstance.catalogFilteredSlicedItems).toEqual([]);
359     });
360
361     it ('should call on catalog component raiseNumberOfElementToDisplay with full catalogFilteredItems' , () => {
362         const component = TestBed.createComponent(CatalogComponent);
363         component.componentInstance.catalogFilteredItems = [1 , 2 , 3, 4, 5, 6]
364         component.componentInstance.numberOfItemToDisplay = 2;
365         component.componentInstance.raiseNumberOfElementToDisplay(false);
366          expect(component.componentInstance.numberOfItemToDisplay).toEqual(6);
367          expect(component.componentInstance.catalogFilteredSlicedItems).toEqual([1 , 2 , 3, 4, 5, 6]);
368     });
369
370     it ('should call on catalog component componentShouldReload return false' , () => {
371         const component = TestBed.createComponent(CatalogComponent);
372         component.componentInstance.isDefaultFilter = jest.fn().mockImplementation(() => false);
373         cacheServiceMock.get.mockImplementation(()=> "mockConstructor");
374         let componentShouldReload = component.componentInstance.componentShouldReload();
375         expect(component.componentInstance.cacheService.get()).toEqual(component.componentInstance.$state.current.name);
376         expect(component.componentInstance.cacheService.contains()).toEqual(true);
377         expect(component.componentInstance.isDefaultFilter).toHaveBeenCalled();
378         expect(componentShouldReload).toEqual(false);
379     });
380
381     it ('should call on catalog component componentShouldReload return true' , () => {
382         const component = TestBed.createComponent(CatalogComponent);
383         component.componentInstance.isDefaultFilter = jest.fn();
384         let componentShouldReload = component.componentInstance.componentShouldReload();
385         expect(component.componentInstance.cacheService.get()).not.toEqual(component.componentInstance.$state.current.name);
386         expect(component.componentInstance.cacheService.contains()).toEqual(true);
387         expect(componentShouldReload).toEqual(true);
388     });
389
390     it ('should call on catalog component getActiveCatalogItems with true' , () => {
391         const component = TestBed.createComponent(CatalogComponent);
392         let resp = component.componentInstance.cacheService.get();
393         component.componentInstance.updateCatalogItems = jest.fn().mockImplementation((resp) => {});
394         component.componentInstance.getActiveCatalogItems(true);
395         expect(component.componentInstance.loaderService.activate).toHaveBeenCalled();
396         expect(component.componentInstance.updateCatalogItems).toHaveBeenCalledWith(resp);
397         expect(component.componentInstance.loaderService.deactivate).toHaveBeenCalled();
398         expect(component.componentInstance.cacheService.set).toHaveBeenCalledWith('breadcrumbsComponentsState', "mockConstructor");
399         expect(component.componentInstance.cacheService.set).toHaveBeenCalledWith('breadcrumbsComponents', categoriesElements);
400         expect(component.componentInstance.catalogService.getCatalog).toHaveBeenCalled();
401     });
402
403     it ('should call on catalog component getActiveCatalogItems with false' , () => {
404         const component = TestBed.createComponent(CatalogComponent);
405         component.componentInstance.componentShouldReload = jest.fn();
406         component.componentInstance.updateCatalogItems = jest.fn().mockImplementation((resp) => {});
407         component.componentInstance.getActiveCatalogItems(false);
408         expect(component.componentInstance.componentShouldReload).toHaveBeenCalled();
409         let resp = component.componentInstance.cacheService.get();
410         expect(component.componentInstance.updateCatalogItems).toHaveBeenCalledWith(resp);
411     });
412
413     it ('should call on catalog component getActiveCatalogItems with true observable return error' , () => {
414         const component = TestBed.createComponent(CatalogComponent);
415         catalogServiceMock.getCatalog.mockImplementation(()=>  Observable.throwError('error'));
416         component.componentInstance.getActiveCatalogItems(true);
417         expect(component.componentInstance.loaderService.activate).toHaveBeenCalled();
418         expect(console.info).toHaveBeenCalledWith('Failed to load catalog CatalogViewModel::getActiveCatalogItems');
419         expect(component.componentInstance.loaderService.deactivate).toHaveBeenCalled();
420         expect(component.componentInstance.catalogService.getCatalog).toHaveBeenCalled();
421     });
422
423     it ('should call on catalog component getArchiveCatalogItems with true' , () => {
424         const component = TestBed.createComponent(CatalogComponent);
425         const resp = component.componentInstance.cacheService.get();
426         component.componentInstance.updateCatalogItems = jest.fn().mockImplementation((resp) => {});
427         component.componentInstance.getArchiveCatalogItems(true);
428         expect(component.componentInstance.loaderService.activate).toHaveBeenCalled();
429         expect(component.componentInstance.catalogService.getArchiveCatalog).toHaveBeenCalled();
430         expect(component.componentInstance.cacheService.set).toHaveBeenCalledWith('archiveComponents', categoriesElements);
431         expect(component.componentInstance.loaderService.deactivate).toHaveBeenCalled();
432         expect(component.componentInstance.updateCatalogItems).toHaveBeenCalledWith(resp)
433     });
434
435     it ('should call on catalog component getArchiveCatalogItems with false' , () => {
436         const component = TestBed.createComponent(CatalogComponent);
437         component.componentInstance.updateCatalogItems = jest.fn().mockImplementation((resp) => Observable.of());
438         component.componentInstance.getArchiveCatalogItems(false);
439         expect(component.componentInstance.cacheService.contains).toHaveBeenCalled();
440         expect(component.componentInstance.cacheService.get).toHaveBeenCalled();
441         let resp = component.componentInstance.cacheService.get();
442         expect(component.componentInstance.updateCatalogItems).toHaveBeenCalledWith(resp);
443     });
444
445     it ('should call on catalog component getArchiveCatalogItems with true observable return error' , () => {
446         const component = TestBed.createComponent(CatalogComponent);
447         catalogServiceMock.getArchiveCatalog.mockImplementation(()=>  Observable.throwError('error'));
448         component.componentInstance.getArchiveCatalogItems(true);
449         expect(component.componentInstance.loaderService.activate).toHaveBeenCalled();
450         expect(component.componentInstance.catalogService.getArchiveCatalog).toHaveBeenCalled();
451         expect(component.componentInstance.loaderService.deactivate).toHaveBeenCalled();
452         expect(console.info).toHaveBeenCalledWith('Failed to load catalog CatalogViewModel::getArchiveCatalogItems');
453     });
454
455     it ('should call on catalog component updateCatalogItems' , () => {
456         const component = TestBed.createComponent(CatalogComponent);
457         component.componentInstance.filterCatalogItems = jest.fn();
458         component.componentInstance.addFilterTermToComponent = jest.fn();
459         component.componentInstance.updateCatalogItems([1, 2, 3]);
460         expect(component.componentInstance.catalogItems).toEqual([1, 2, 3]);
461         expect(component.componentInstance.addFilterTermToComponent).toHaveBeenCalled();
462         expect(component.componentInstance.filterCatalogItems).toHaveBeenCalled();
463     });
464
465     it ('should call on catalog component applyFilterParamsToView' , () => {
466         const component = TestBed.createComponent(CatalogComponent);
467         component.componentInstance.initCheckboxesFilter = jest.fn();
468         component.componentInstance.filterCatalogCategories = jest.fn();
469         component.componentInstance.applyFilterParamsComponents = jest.fn();
470         component.componentInstance.applyFilterParamsCategories = jest.fn();
471         component.componentInstance.applyFilterParamsStatuses = jest.fn();
472         component.componentInstance.applyFilterParamsOrder = jest.fn();
473         component.componentInstance.applyFilterParamsTerm = jest.fn();
474         component.componentInstance.filterCatalogItems = jest.fn();
475         component.componentInstance.applyFilterParamsToView(filterParamsMock);
476         expect(component.componentInstance.initCheckboxesFilter).toHaveBeenCalled();
477         expect(component.componentInstance.filterCatalogCategories).toHaveBeenCalled();
478         expect(component.componentInstance.applyFilterParamsComponents).toHaveBeenCalledWith(filterParamsMock);
479         expect(component.componentInstance.applyFilterParamsCategories).toHaveBeenCalledWith(filterParamsMock);
480         expect(component.componentInstance.applyFilterParamsStatuses).toHaveBeenCalledWith(filterParamsMock);
481         expect(component.componentInstance.applyFilterParamsOrder).toHaveBeenCalledWith(filterParamsMock);
482         expect(component.componentInstance.applyFilterParamsTerm).toHaveBeenCalledWith(filterParamsMock);
483         expect(component.componentInstance.filterCatalogItems).toHaveBeenCalled();
484     });
485
486     it ('should call on catalog component filterCatalogCategories' , () => {
487         const component = TestBed.createComponent(CatalogComponent);
488         component.componentInstance.makeFilteredCategories = jest.fn();
489         component.componentInstance.buildChecklistModelForCategories = jest.fn();
490         component.componentInstance.categories = categoriesElements;
491         component.componentInstance.checkboxesFilter = {selectedComponentTypes: ["firstType", "secondType"]};
492         component.componentInstance.filterCatalogCategories();
493         expect(component.componentInstance.makeFilteredCategories).toHaveBeenCalledWith(categoriesElements, ["firstType", "secondType"]);
494         expect(component.componentInstance.buildChecklistModelForCategories).toHaveBeenCalled();
495     });
496
497     it ('should call on catalog component filterCatalogItems' , () => {
498         const component = TestBed.createComponent(CatalogComponent);
499         component.componentInstance.makeFilteredItems = jest.fn().mockImplementation(() => [1,2,3]);
500         component.componentInstance.raiseNumberOfElementToDisplay = jest.fn();
501         component.componentInstance.catalogItems = ["firstComponent", "secondComponent"];
502         component.componentInstance.checkboxesFilter = {};
503         component.componentInstance.search = {};
504         component.componentInstance.sortBy = "";
505         component.componentInstance.reverse = true;
506         component.componentInstance.numberOfItemToDisplay = 2;
507        // component.componentInstance.catalogFilteredItems = component.componentInstance.makeFilteredItems();
508         component.componentInstance.filterCatalogItems();
509         expect(component.componentInstance.makeFilteredItems).toHaveBeenCalledWith(["firstComponent", "secondComponent"], {}, {}, "",true);
510         expect(component.componentInstance.raiseNumberOfElementToDisplay).toHaveBeenCalledWith(true);
511         expect(component.componentInstance.catalogFilteredSlicedItems).toEqual([1,2]);
512     });
513
514     it ('should call on catalog component applyFilterParamsToCheckboxes' , () => {
515         const component = TestBed.createComponent(CatalogComponent);
516         component.componentInstance.applyFilterParamsToCheckboxes(checkListModelMock, ["Resource.CR", "Resource.VFD", "Resource.VF"]);
517         expect(checkListModelMock.selectedValues).toEqual(["Resource.VF","Resource.CR"]);
518         expect(checkListModelMock.checkboxes[1].subLevelChecklist.selectedValues).toEqual(["Resource.VFD"]);
519         expect(checkListModelMock.checkboxes[2].subLevelChecklist.selectedValues).toEqual(["Resource.VF"])
520     });
521
522     it ('should call on catalog component applyFilterParamsComponents and filterParams.active equal true' , () => {
523         const component = TestBed.createComponent(CatalogComponent);
524         component.componentInstance.applyFilterParamsToCheckboxes = jest.fn();
525         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
526         component.componentInstance.checkboxesFilter = checkboxesFilterMock;
527         component.componentInstance.catalogSelectorItems = catalogSelectorItemsMock;
528         component.componentInstance.typesChecklistModel = checkListModelMock;
529         component.componentInstance.applyFilterParamsComponents(filterParamsMock);
530         expect(component.componentInstance.applyFilterParamsToCheckboxes).toHaveBeenCalledWith(checkListModelMock, filterParamsMock.components);
531         expect(component.componentInstance.checkboxesFilter.selectedComponentTypes).toEqual(["Resource.VFC"]);
532         expect(component.componentInstance.checkboxesFilter.selectedResourceSubTypes).toEqual(["VF", "VFC"]);
533         expect(component.componentInstance.selectedCatalogItem).toEqual(catalogSelectorItemsMock[0]);
534     });
535
536     it ('should call on catalog component applyFilterParamsComponents and filterParams.active equal false' , () => {
537         const component = TestBed.createComponent(CatalogComponent);
538         component.componentInstance.applyFilterParamsToCheckboxes = jest.fn();
539         filterParamsMock.active = false;
540         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
541         component.componentInstance.checkboxesFilter = checkboxesFilterMock;
542         component.componentInstance.catalogSelectorItems = catalogSelectorItemsMock;
543         component.componentInstance.typesChecklistModel = checkListModelMock;
544         component.componentInstance.applyFilterParamsComponents(filterParamsMock);
545         expect(component.componentInstance.applyFilterParamsToCheckboxes).toHaveBeenCalledWith(checkListModelMock, filterParamsMock.components);
546         expect(component.componentInstance.checkboxesFilter.selectedComponentTypes).toEqual(["Resource.VFC"]);
547         expect(component.componentInstance.checkboxesFilter.selectedResourceSubTypes).toEqual(["VF", "VFC"]);
548         expect(component.componentInstance.selectedCatalogItem).toEqual(catalogSelectorItemsMock[1]);
549     });
550
551     it ('should call on catalog component applyFilterParamsCategories' , () => {
552         const component = TestBed.createComponent(CatalogComponent);
553         component.componentInstance.applyFilterParamsToCheckboxes = jest.fn();
554         component.componentInstance.categoriesChecklistModel = checkListModelMock;
555         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
556         component.componentInstance.checkboxesFilter = checkboxesFilterMock;
557         component.componentInstance.applyFilterParamsCategories(filterParamsMock);
558         expect(component.componentInstance.applyFilterParamsToCheckboxes).toHaveBeenCalledWith(checkListModelMock, filterParamsMock.categories);
559         expect(component.componentInstance.checkboxesFilter.selectedCategoriesModel).toEqual(["serviceNewCategory.network l4+"]);
560     });
561
562     it ('should call on catalog component applyFilterParamsStatuses' , () => {
563         const component = TestBed.createComponent(CatalogComponent);
564         component.componentInstance.applyFilterParamsToCheckboxes = jest.fn();
565
566         component.componentInstance.statusChecklistModel = checkListModelMock;
567         component.componentInstance.checkboxesFilterKeys = checkboxesFilterKeysMock;
568         component.componentInstance.checkboxesFilter = checkboxesFilterMock;
569         component.componentInstance.confStatus = sdcMenu.statuses;
570         component.componentInstance.applyFilterParamsStatuses(filterParamsMock);
571         expect(component.componentInstance.applyFilterParamsToCheckboxes).toHaveBeenCalledWith(checkListModelMock, filterParamsMock.statuses);
572         expect(component.componentInstance.checkboxesFilter.selectedStatuses).toEqual(["NOT_CERTIFIED_CHECKOUT", "NOT_CERTIFIED_CHECKIN"]);
573     });
574
575     it ('should call on catalog component applyFilterParamsOrder' , () => {
576         const component = TestBed.createComponent(CatalogComponent);
577         component.componentInstance.applyFilterParamsOrder(filterParamsMock);
578         expect(component.componentInstance.sortBy).toEqual("lastUpdateDate");
579         expect(component.componentInstance.reverse).toEqual( true);
580     });
581
582     it ('should call on catalog component applyFilterParamsTerm' , () => {
583         const component = TestBed.createComponent(CatalogComponent);
584         component.componentInstance.applyFilterParamsTerm(filterParamsMock);
585         expect(component.componentInstance.search.filterTerm).toEqual("Vf");
586     });
587
588     // it ('should call on catalog component loadFilterParams' , () => {
589     //     const component = TestBed.createComponent(CatalogComponent);
590     //     component.componentInstance.$state = {params: {}};
591     //     component.componentInstance.loadFilterParams();
592     // });
593
594     it ('should call on catalog component changeFilterParams' , () => {
595         const component = TestBed.createComponent(CatalogComponent);
596         component.componentInstance.applyFilterParamsToView = jest.fn();
597         component.componentInstance.filterParams =  { active: true, categories: [], components: [], order:  ["lastUpdateDate", true], statuses: [], term: ""};
598         component.componentInstance.$state.go = jest.fn().mockImplementation(() => Promise.resolve({ json: () => [] }));
599         const newParams = {"filter.active": true, "filter.categories": "resourceNewCategory.allotted resource.allotted resource,resourceNewCategory.allotted resource.contrail route,resourceNewCategory.application l4+.application server", "filter.components": "Resource.VF,Resource.VFC", "filter.order": "-lastUpdateDate", "filter.statuses": "inDesign", "filter.term": "Vf"}
600         component.componentInstance.changeFilterParams(filterParamsMock);
601         expect(component.componentInstance.filterParams).toEqual(filterParamsMock);
602         expect(component.componentInstance.$state.go).toHaveBeenCalledWith('.',newParams, {location: 'replace', notify: false});
603         expect(component.componentInstance.applyFilterParamsToView).toHaveBeenCalledWith(filterParamsMock);
604     });
605
606     it ('should call on catalog component changeFilterParams and rebuild equal true' , () => {
607         const component = TestBed.createComponent(CatalogComponent);
608         component.componentInstance.applyFilterParamsToView = jest.fn();
609         component.componentInstance.makeFilterParamsFromCheckboxes = jest.fn();
610         component.componentInstance.buildCheckboxLists = jest.fn();
611         component.componentInstance.filterParams =  { active: true, categories: [], components: [], order:  ["lastUpdateDate", true], statuses: [], term: ""};
612         component.componentInstance.$state.go = jest.fn().mockImplementation(() => Promise.resolve({ json: () => [] }));
613         const newParams = {"filter.active": true, "filter.categories": "resourceNewCategory.allotted resource.allotted resource,resourceNewCategory.allotted resource.contrail route,resourceNewCategory.application l4+.application server", "filter.components": "Resource.VF,Resource.VFC", "filter.order": "-lastUpdateDate", "filter.statuses": "inDesign", "filter.term": "Vf"}
614         component.componentInstance.typesChecklistModel = checkListModelMock;
615         component.componentInstance.categoriesChecklistModel = checkListModelMock;
616         component.componentInstance.statusChecklistModel = checkListModelMock;
617         component.componentInstance.changeFilterParams(filterParamsMock, true);
618         expect(component.componentInstance.filterParams).toEqual(filterParamsMock);
619         expect(component.componentInstance.$state.go).toHaveBeenCalledWith('.',newParams, {location: 'replace', notify: false});
620         //expect(component.componentInstance.makeFilterParamsFromCheckboxes).toHaveBeenCalledWith(component.componentInstance.typesChecklistModel);
621         //expect(component.componentInstance.buildCheckboxLists).toHaveBeenCalled();
622         expect(component.componentInstance.applyFilterParamsToView).toHaveBeenCalledWith(filterParamsMock);
623     });
624
625     it ('should call on catalog component makeFilteredCategories' , () => {
626         const component = TestBed.createComponent(CatalogComponent);
627         const categoryMock = [{"name":"Network L1-3","normalizedName":"network l1-3","uniqueId":"serviceNewCategory.network l1-3","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null}];
628         cacheServiceMock.get.mockImplementation(()=> categoryMock);
629         const resp = component.componentInstance.makeFilteredCategories(categoriesElements, checkboxesFilterMock.selectedComponentTypes);
630         expect(component.componentInstance.cacheService.get).toHaveBeenCalledWith("resourceCategories");
631         expect(resp).toEqual(categoryMock);
632     });
633
634     it ('should call on catalog component makeFilteredCategories return unique elements' , () => {
635         const component = TestBed.createComponent(CatalogComponent);
636         const categoryMock = [{"name":"Network L1-3","normalizedName":"network l1-3","uniqueId":"serviceNewCategory.network l1-3","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null},
637             {"name":"Network L1-3","normalizedName":"network l1-3","uniqueId":"serviceNewCategory.network l1-3","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null},
638             {"name":"Network Service","normalizedName":"network service","uniqueId":"serviceNewCategory.network service","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null}];
639         const categoryUniqueMock = [{"name":"Network L1-3","normalizedName":"network l1-3","uniqueId":"serviceNewCategory.network l1-3","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null},
640             {"name":"Network Service","normalizedName":"network service","uniqueId":"serviceNewCategory.network service","icons":["network_l_1-3"],"subcategories":null,"version":null,"ownerId":null,"empty":false,"type":null}];
641         cacheServiceMock.get.mockImplementation(()=> categoryMock);
642         checkboxesFilterMock.selectedComponentTypes = ["SERVICE", "Resource.VF"];
643         const resp = component.componentInstance.makeFilteredCategories(categoriesElements, checkboxesFilterMock.selectedComponentTypes);
644         expect(component.componentInstance.cacheService.get).toHaveBeenCalledWith("resourceCategories");
645         expect(resp).toEqual(categoryUniqueMock);
646     });
647
648
649 });