import {TestBed, getTestBed} from '@angular/core/testing'; import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing'; import {NgRedux} from "@angular-redux/store"; import {DrawingBoardTreeService, TreeNodeContextMenuModel} from "./drawing-board-tree.service"; import {ITreeNode} from "angular-tree-component/dist/defs/api"; class MockAppStore { getState() { return { service: { serviceInstance: { "serviceInstanceId": { vnfs: { "vnfStoreKey": { isMissingData: true, vfModules: { "vfModulesName": { "vfModulesName": { isMissingData: true } } } }, "vnfStoreKey1": { isMissingData: false, vfModules: { "vfModulesName": { "vfModulesName": { isMissingData: false } } } } } } } } } } } describe('Drawing board tree Service', () => { let injector; let service: DrawingBoardTreeService; let httpMock: HttpTestingController; beforeAll(done => (async () => { TestBed.configureTestingModule({ imports: [HttpClientTestingModule], providers: [ DrawingBoardTreeService, {provide: NgRedux, useClass: MockAppStore}] }); await TestBed.compileComponents(); injector = getTestBed(); service = injector.get(DrawingBoardTreeService); httpMock = injector.get(HttpTestingController); })().then(done).catch(done.fail)); test('generateContextMenuOptions should return list of optional context menu', () => { const options: TreeNodeContextMenuModel[] = service.generateContextMenuOptions(); const expected: TreeNodeContextMenuModel[] = [ new TreeNodeContextMenuModel('edit', 'context-menu-edit', 'Edit', 'edit-file-o'), new TreeNodeContextMenuModel('duplicate', 'context-menu-duplicate', 'Duplicate', 'copy-o'), new TreeNodeContextMenuModel('showAuditInfo', 'context-menu-showAuditInfo', 'Show audit info', 'eye-o'), new TreeNodeContextMenuModel('addGroupMember', 'context-menu-addGroupMember', 'Add group members', 'plus'), new TreeNodeContextMenuModel('delete', 'context-menu-delete', 'Delete', 'trash-o'), new TreeNodeContextMenuModel('remove', 'context-menu-remove', 'Remove', 'trash-o'), new TreeNodeContextMenuModel('undoDelete', 'context-menu-undoDelete', 'Undo Delete', 'undo-delete'), new TreeNodeContextMenuModel('changeAssociations', 'context-menu-changeAssociations', 'Change Associations', 'edit-file-o') ]; expect(options.length).toEqual(8); expect(options).toEqual(expected); }); test('isVNFMissingData should return true if vnf isMissingData = true', () => { let node: ITreeNode = { data: { type: 'VF', vnfStoreKey: "vnfStoreKey" } }; let result: boolean = service.isVNFMissingData(node, "serviceInstanceId"); expect(result).toBeTruthy(); }); test('isVNFMissingData should return false if vnf has isMissingData = false', () => { let node: ITreeNode = { data: { type: 'VFModule', modelName: "vfModulesName", dynamicModelName: "vfModulesName", parent: { vnfStoreKey: "vnfStoreKey1", type: 'VF' } } }; let result: boolean = service.isVNFMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); test('isVFModuleMissingData should return true if vnfModule has isMissingData = true', () => { let node: ITreeNode = { data: { type: 'VFModule', modelName: "vfModulesName", dynamicModelName: "vfModulesName", parent: { vnfStoreKey: "vnfStoreKey", type: 'VF' } } }; let result: boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); test('isVFModuleMissingData should return false if vnfModule has isMissingData = false', () => { let node: ITreeNode = { data: { type: 'VFModule', modelName: "vfModulesName", dynamicModelName: "vfModulesName", parent: { vnfStoreKey: "vnfStoreKey1", type: 'VF' } } }; let result: boolean = service.isVFModuleMissingData(node, "serviceInstanceId"); expect(result).toBeFalsy(); }); });