1 import {NO_ERRORS_SCHEMA} from '@angular/core';
2 import {ComponentFixture, TestBed} from '@angular/core/testing';
3 import {CompositionService} from 'app/ng2/pages/composition/composition.service';
4 import {EventListenerService} from '../../../../../services/event-listener-service';
5 import {ComponentInstanceServiceNg2} from 'app/ng2/services/component-instance-services/component-instance.service';
6 import {WorkspaceService} from 'app/ng2/pages/workspace/workspace.service';
7 import {GroupsService, PoliciesService} from 'app/services-ng2';
8 import {CompositionPanelHeaderComponent} from './panel-header.component';
9 import {SdcUiServices} from 'onap-ui-angular';
15 FullComponentInstance,
21 import {Observable, of} from "rxjs";
23 describe('CompositionPanelHeaderComponent', () => {
24 let component: CompositionPanelHeaderComponent;
25 let fixture: ComponentFixture<CompositionPanelHeaderComponent>;
26 const componentInstanceServiceNg2Stub = {
27 updateComponentInstance: jest.fn()
29 const valueEditModalInstance = {
31 instance: {name: "VF Test"}
33 buttons: [{id: 'saveButton', text: 'OK', size: 'xsm', callback: jest.fn(), closeModal: false}],
39 const compositionServiceStub = {};
40 const eventListenerServiceStub = {};
42 const workspaceServiceStub = {
44 componentType: "SERVICE",
48 const groupsServiceStub = {
51 const policiesServiceStub = {
55 TestBed.configureTestingModule({
56 schemas: [NO_ERRORS_SCHEMA],
57 declarations: [CompositionPanelHeaderComponent],
59 {provide: CompositionService, useValue: compositionServiceStub},
60 {provide: EventListenerService, useValue: eventListenerServiceStub},
62 provide: ComponentInstanceServiceNg2,
63 useValue: componentInstanceServiceNg2Stub
65 {provide: WorkspaceService, useValue: workspaceServiceStub},
66 {provide: GroupsService, useValue: groupsServiceStub},
67 {provide: PoliciesService, useValue: policiesServiceStub},
68 {provide: SdcUiServices.ModalService, useValue: {}}
71 fixture = TestBed.createComponent(CompositionPanelHeaderComponent);
72 component = fixture.componentInstance;
76 it('can load instance', () => {
77 expect(component).toBeTruthy();
80 it('should close the modal without saving if the name has not changed', () => {
81 component.selectedComponent = <FullComponentInstance>{name: "VF Test"};
82 component.valueEditModalInstance = valueEditModalInstance;
84 component.saveInstanceName();
85 expect(component.componentInstanceService.updateComponentInstance).not.toHaveBeenCalled();
86 expect(component.valueEditModalInstance.closeModal).toHaveBeenCalled();
89 it('after editing instance name, capabilities/requirements should be updated with new name', () => {
90 const newName = "New VF NAME";
91 component.selectedComponent = new FullComponentInstance(<ComponentInstance>{
93 requirements: new RequirementsGroup(),
94 capabilities: new CapabilitiesGroup()
96 component.selectedComponent.requirements['key'] = [<Requirement>{ownerName: "VF Test"}, <Requirement>{ownerName: "VF Test"}];
97 component.selectedComponent.capabilities['key'] = [<Capability>{ownerName: "VF Test"}];
98 component.valueEditModalInstance = valueEditModalInstance;
99 component.valueEditModalInstance.innerModalContent.instance.name = newName;
100 jest.spyOn(component.componentInstanceService, 'updateComponentInstance').mockReturnValue(of(<ComponentInstance>{name: newName}));
101 component.saveInstanceName();
103 expect(component.selectedComponent.name).toBe(newName);
104 expect(component.selectedComponent.requirements['key'][0].ownerName).toEqual(newName);
105 expect(component.selectedComponent.requirements['key'][1].ownerName).toEqual(newName);
106 expect(component.selectedComponent.capabilities['key'][0].ownerName).toEqual(newName);
109 it('if update fails, name is reverted to old value', () => {
110 component.selectedComponent = new GroupInstance(<GroupInstance>{name: "GROUP NAME"});
111 component.valueEditModalInstance = valueEditModalInstance;
112 jest.spyOn(component.groupService, 'updateName').mockReturnValue(Observable.throw(new Error('Error')));
113 component.saveInstanceName();
114 expect(component.selectedComponent.name).toEqual("GROUP NAME");
117 it('policy instance uses policies service for update name', () => {
118 component.selectedComponent = new PolicyInstance(<PolicyInstance>{name: "Policy OLD NAME"});
119 component.valueEditModalInstance = valueEditModalInstance;
120 jest.spyOn(component.policiesService, 'updateName').mockReturnValue(of(true));
121 component.saveInstanceName();
122 expect(component.policiesService.updateName).toHaveBeenCalledTimes(1);
125 it('group instance uses groups service for update name', () => {
126 component.selectedComponent = new GroupInstance(<GroupInstance>{name: "GROUP NAME"});
127 component.valueEditModalInstance = valueEditModalInstance;
128 jest.spyOn(component.groupService, 'updateName').mockReturnValue(of(true));
129 component.saveInstanceName();
130 expect(component.groupService.updateName).toHaveBeenCalledTimes(1);