1 import { NO_ERRORS_SCHEMA } from '@angular/core';
2 import { async, ComponentFixture } 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 { GroupInstance } from '../../../../../../models/graph/zones/group-instance';
9 import { EventListenerService } from '../../../../../../services/event-listener-service';
10 import { GroupsService } from '../../../../../services/groups.service';
11 import { TranslateService } from '../../../../../shared/translator/translate.service';
12 import { WorkspaceService } from '../../../../workspace/workspace.service';
13 import { CompositionService } from '../../../composition.service';
14 import { GroupMembersTabComponent } from './group-members-tab.component';
16 describe('group members tab component', () => {
18 let fixture: ComponentFixture<GroupMembersTabComponent>;
21 let workspaceServiceMock: Partial<WorkspaceService>;
22 let eventsListenerServiceMock: Partial<EventListenerService>;
23 let groupServiceMock: Partial<GroupsService>;
24 let loaderServiceMock: Partial<SdcUiServices.LoaderService>;
25 let compositionServiceMock: Partial<CompositionService>;
26 let modalServiceMock: Partial<SdcUiServices.ModalService>;
28 const membersToAdd = [
29 {uniqueId: '1', name: 'inst1'},
30 {uniqueId: '2', name: 'inst2'},
36 eventsListenerServiceMock = {};
38 groupServiceMock = Mock.of<GroupsService>(
40 updateMembers: jest.fn().mockImplementation((compType, uid, groupUniqueId, updatedMembers) => {
41 if (updatedMembers === undefined) {
42 return Observable.throwError('error');
44 return Observable.of(updatedMembers);
49 compositionServiceMock = {
50 getComponentInstances: jest.fn().mockImplementation( () => {
51 return [{uniqueId: '1', name: 'inst1'},
52 {uniqueId: '2', name: 'inst2'},
53 {uniqueId: '3', name: 'inst3'},
54 {uniqueId: '4', name: 'inst4'},
55 {uniqueId: '5', name: 'inst5'}
61 workspaceServiceMock = {
62 metadata: Mock.of<ComponentMetadata>()
65 const addMemberModalInstance = {
66 innerModalContent: { instance: { existingElements: membersToAdd }},
71 openInfoModal: jest.fn(),
72 openCustomModal: jest.fn().mockImplementation(() => addMemberModalInstance)
80 const groupInstanceMock = Mock.of<GroupInstance>();
82 const configure: ConfigureFn = (testBed) => {
83 testBed.configureTestingModule({
84 declarations: [GroupMembersTabComponent],
85 schemas: [NO_ERRORS_SCHEMA],
87 {provide: TranslateService, useValue: { translate: jest.fn() }},
88 {provide: GroupsService, useValue: groupServiceMock},
89 {provide: SdcUiServices.ModalService, useValue: modalServiceMock },
90 {provide: EventListenerService, useValue: eventsListenerServiceMock },
91 {provide: CompositionService, useValue: compositionServiceMock },
92 {provide: WorkspaceService, useValue: workspaceServiceMock},
93 {provide: SdcUiServices.LoaderService, useValue: loaderServiceMock }
98 configureTests(configure).then((testBed) => {
99 fixture = testBed.createComponent(GroupMembersTabComponent);
100 fixture.componentInstance.group = groupInstanceMock;
105 it('test that initially all members are available for adding', () => {
106 const testedComponent = fixture.componentInstance;
108 // No members are currently in the group, all 5 members should be returned
109 const optionalMembersToAdd = testedComponent.getOptionalsMembersToAdd();
110 expect(optionalMembersToAdd).toHaveLength(5);
113 it('test list of available instances to add does not include existing members', () => {
114 const testedComponent = fixture.componentInstance;
116 // Mock the group instance to return the members that we are about to add
117 testedComponent.group.getMembersAsUiObject = jest.fn().mockImplementation( () => membersToAdd);
119 // The opened modal shall return 2 members to be added
120 testedComponent.openAddMembersModal();
121 testedComponent.addMembers(); // Shall add 2 members (1,2)
123 // Now the getOptionalsMembersToAdd shall return 3 which are the members that were no added yet
124 const optionalMembersToAdd = testedComponent.getOptionalsMembersToAdd();
125 expect(optionalMembersToAdd).toHaveLength(3);