1 import { NO_ERRORS_SCHEMA } from '@angular/core';
2 import { async, ComponentFixture, TestBed } from '@angular/core/testing';
3 import { SdcUiCommon, SdcUiComponents, SdcUiServices } from 'onap-ui-angular';
4 import { Observable } from 'rxjs/Rx';
5 import { Mock } from 'ts-mockery';
6 import { ConfigureFn, configureTests } from '../../../../../../../jest/test-config.helper';
7 import { ComponentMetadata } from '../../../../../../models/component-metadata';
8 import { EventListenerService } from '../../../../../../services/event-listener-service';
9 import { TranslateService } from '../../../../../shared/translator/translate.service';
10 import { WorkspaceService } from '../../../../workspace/workspace.service';
11 import { CompositionService } from '../../../composition.service';
12 import { PolicyTargetsTabComponent } from "app/ng2/pages/composition/panel/panel-tabs/policy-targets-tab/policy-targets-tab.component";
13 import { PoliciesService } from "app/services-ng2";
14 import { PolicyInstance, GroupInstance } from "app/models";
15 import { NgxsModule } from "@ngxs/store";
16 import { GraphState } from "app/ng2/pages/composition/common/store/graph.state";
17 import { WorkspaceState } from "app/ng2/store/states/workspace.state";
18 import { TargetUiObject } from "app/models/ui-models/ui-target-object";
19 import { TargetOrMemberType } from "app/utils";
24 describe('policy targets tab component', () => {
26 let fixture: ComponentFixture<PolicyTargetsTabComponent>;
27 let component: PolicyTargetsTabComponent;
29 let policiesServiceMock = Mock.of<PoliciesService>(
31 updateTargets: jest.fn().mockImplementation((compType, uid, policyUniqueId, updatedTargets) => {
32 if (updatedTargets === undefined) {
33 return Observable.throwError('error');
35 return Observable.of(updatedTargets);
40 let compositionServiceMock = {
41 componentInstances: [{uniqueId: '1', name: 'inst1'},
42 {uniqueId: '2', name: 'inst2'},
43 {uniqueId: '3', name: 'inst3'},
44 {uniqueId: '4', name: 'inst4'},
45 {uniqueId: '5', name: 'inst5'}
48 Mock.of<GroupInstance>({uniqueId: "group1", name: "group1"}),
49 Mock.of<GroupInstance>({uniqueId: "group2", name: "group2"}),
50 Mock.of<GroupInstance>({uniqueId: "group3", name: "group3"})
54 let workspaceServiceMock = {
55 metadata: Mock.of<ComponentMetadata>()
58 let modalServiceMock = {
59 openInfoModal: jest.fn(),
60 openCustomModal: jest.fn().mockImplementation(() => { return {
61 innerModalContent: { instance: { existingElements: targetsToAdd }},
66 let loaderServiceMock = {
71 const targetsToAdd = [
72 <TargetUiObject>{uniqueId: '1', name: 'inst1', type: TargetOrMemberType.COMPONENT_INSTANCES},
73 <TargetUiObject>{uniqueId: "group1", name: "group1", type: TargetOrMemberType.GROUPS}
76 const policyInstanceMock = Mock.of<PolicyInstance>(
77 { getTargetsAsUiObject: jest.fn().mockImplementation( () => targetsToAdd)
81 TestBed.configureTestingModule({
82 declarations: [PolicyTargetsTabComponent],
83 imports: [NgxsModule.forRoot([WorkspaceState])],
84 schemas: [NO_ERRORS_SCHEMA],
86 {provide: TranslateService, useValue: { translate: jest.fn() }},
87 {provide: PoliciesService, useValue: policiesServiceMock},
88 {provide: SdcUiServices.ModalService, useValue: modalServiceMock },
89 {provide: EventListenerService, useValue: {} },
90 {provide: CompositionService, useValue: compositionServiceMock },
91 {provide: WorkspaceService, useValue: workspaceServiceMock},
92 {provide: SdcUiServices.LoaderService, useValue: loaderServiceMock }
96 fixture = TestBed.createComponent(PolicyTargetsTabComponent);
97 component = fixture.componentInstance;
98 component.policy = policyInstanceMock;
102 it('if there are no existing targets, all component instances AND all groups are available for adding', () => {
103 component.targets = [];
104 const optionalTargetsToAdd = component.getOptionalsTargetsToAdd();
105 expect(optionalTargetsToAdd).toHaveLength(8);
108 it('list of available instances to add does not include existing targets', () => {
109 component.targets = targetsToAdd;
110 const optionalMembersToAdd = component.getOptionalsTargetsToAdd();
111 expect(optionalMembersToAdd).toHaveLength(6);