Catalog alignment
[sdc.git] / catalog-ui / src / app / ng2 / pages / composition / graph / connection-wizard / connection-wizard.service.spec.ts
1 import {TestBed} from "@angular/core/testing";
2 import {WorkspaceService} from "../../../../pages/workspace/workspace.service";
3 import { ConnectionWizardService } from "app/ng2/pages/composition/graph/connection-wizard/connection-wizard.service";
4 import { ConnectRelationModel, Match, Requirement, Capability } from "app/models";
5 import { Mock } from "ts-mockery/dist";
6
7 describe('Connection Wizard Service', () => {
8
9     let service: ConnectionWizardService;
10
11     const connectRelationModelMock = Mock.of<ConnectRelationModel>({
12         possibleRelations: [
13             Mock.of<Match>({isFromTo: true, requirement: Mock.of<Requirement>({uniqueId: 'requirement1', capability: "cap1"}), capability: Mock.of<Capability>({uniqueId: 'capability1', type: 'othertype'})}),
14             Mock.of<Match>({isFromTo: true, requirement: Mock.of<Requirement>({uniqueId: 'requirement2', capability: "cap1"}), capability: Mock.of<Capability>({uniqueId: 'capability2', type: 'tosca'})}),
15             Mock.of<Match>({isFromTo: true, requirement: Mock.of<Requirement>({uniqueId: 'requirement3', capability: "cap1"}), capability: Mock.of<Capability>({uniqueId: 'capability3', type: 'tosca'})}),
16             Mock.of<Match>({isFromTo: true, requirement: Mock.of<Requirement>({uniqueId: 'requirement4', capability: "cap1"}), capability: Mock.of<Capability>({uniqueId: 'capability2', type: 'tosca'})}),
17             Mock.of<Match>({isFromTo: true, requirement: Mock.of<Requirement>({uniqueId: 'requirement5', capability: "cap2"}), capability: Mock.of<Capability>({uniqueId: 'capability1', type: 'tosca'})}),
18             Mock.of<Match>({isFromTo: false, requirement: Mock.of<Requirement>({uniqueId: 'requirement6', capability: "cap2"}), capability: Mock.of<Capability>({uniqueId: 'capability2', type: 'tosca'})}),
19             Mock.of<Match>({isFromTo: false, requirement: Mock.of<Requirement>({uniqueId: 'requirement7', capability: "cap2"}), capability: Mock.of<Capability>({uniqueId: 'capability1', type: 'othertype'})})
20         ]
21     });
22
23     beforeEach(() => {
24         TestBed.configureTestingModule({
25             imports: [],
26             providers: [ConnectionWizardService,
27                                 {provide: WorkspaceService, useValue: {}}
28             ]
29         });
30
31         service = TestBed.get(ConnectionWizardService);
32         service.connectRelationModel = connectRelationModelMock;
33     });
34
35     describe('getOptionalRequirementsByInstanceUniqueId', ()  => {
36         it('if no capability to match is sent in and isFromTo is true, ALL isFromTo==true requirements are returned', () => {
37             const requirements = service.getOptionalRequirementsByInstanceUniqueId(true);
38             expect(requirements['cap1'].length).toBe(4);
39             expect(requirements['cap2'].length).toBe(1);
40         });
41
42         it('if no capability to match is sent in and isFromTo is false, ALL isFromTo==false requirements are returned', () => {
43             const requirements = service.getOptionalRequirementsByInstanceUniqueId(false);
44             expect(requirements['cap1']).toBeUndefined();
45             expect(requirements['cap2'].length).toBe(2);
46         });
47
48         it('if capability to match IS sent in and isFromTo is true, matches with the same uniqueID and isFromTo==true are returned', () => {
49             const capability = Mock.of<Capability>({uniqueId: 'capability1'});
50             const requirements = service.getOptionalRequirementsByInstanceUniqueId(true, capability);
51             expect(requirements['cap1'].length).toBe(1);
52             expect(requirements['cap2'].length).toBe(1);
53         });
54
55         it('if capability to match IS sent in and isFromTo is false, requirements with the same uniqueID and isFromTo==false are returned', () => {
56             const capability = Mock.of<Capability>({uniqueId: 'capability1'});
57             const requirements = service.getOptionalRequirementsByInstanceUniqueId(false, capability);
58             expect(requirements['cap1']).toBeUndefined();
59             expect(requirements['cap2'].length).toBe(1);
60         });
61     })
62
63     describe('getOptionalCapabilitiesByInstanceUniqueId', ()  => {
64         it('if requirement to match IS sent in and isFromTo is true, matches with the same uniqueID and isFromTo==true are returned', () => {
65             const requirement = Mock.of<Requirement>({uniqueId: 'requirement1'});
66             const capabilities = service.getOptionalCapabilitiesByInstanceUniqueId(true, requirement);
67             expect(capabilities['othertype'].length).toBe(1);
68             expect(capabilities['tosca']).toBeUndefined();
69         });
70
71         it('if no requirement to match is sent in and isFromTo is true, a UNIQUE list of all capabilities with isFromTo==true are returned', () => {
72             const capabilities = service.getOptionalCapabilitiesByInstanceUniqueId(true);
73             expect(capabilities['othertype'].length).toBe(1);
74             expect(capabilities['tosca'].length).toBe(2);
75         });
76
77         it('if no requirement to match is sent in and isFromTo is false, all capabilities with isFromTo==false are returned', () => {
78             const capabilities = service.getOptionalCapabilitiesByInstanceUniqueId(false);
79             expect(capabilities['othertype'].length).toBe(1);
80             expect(capabilities['tosca'].length).toBe(1);
81         });
82     });
83
84 });
85