summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/workspace/req-and-capabilities/req-and-capabilities.component.spec.ts
blob: b7fad045d318b38adecd3e8bd900ff3dcaff216a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
import {async, ComponentFixture, TestBed} from "@angular/core/testing";
import { NO_ERRORS_SCHEMA} from "@angular/core";
import {ConfigureFn, configureTests} from "../../../../../jest/test-config.helper";

import {Observable} from "rxjs/Observable";
import {NgxDatatableModule} from "@swimlane/ngx-datatable";
import {SdcUiServices, SdcUiCommon} from "onap-ui-angular";
import 'rxjs/add/observable/of';
import {ReqAndCapabilitiesComponent} from "./req-and-capabilities.component";
import {ReqAndCapabilitiesService} from "./req-and-capabilities.service";
import {WorkspaceService} from "../workspace.service";
import {
    capabilitiesMock,
    filterRequirmentsMock,
    requirementMock
} from "../../../../../jest/mocks/req-and-capabilities.mock";
import {ComponentMetadata} from "../../../../models/component-metadata";
import { TopologyTemplateService } from "../../../services/component-services/topology-template.service";
import {EventListenerService} from "../../../../services/event-listener-service";

describe('req and capabilities component', () => {

    let fixture: ComponentFixture<ReqAndCapabilitiesComponent>;
    let workspaceServiceMock: Partial<WorkspaceService>;
    let loaderServiceMock: Partial<SdcUiServices.LoaderService>;
    let topologyTemplateServiceMock: Partial<TopologyTemplateService>;
    let createDynamicComponentServiceMock: Partial<SdcUiServices.CreateDynamicComponentService>
    let reqAndCapabilitiesService: Partial<ReqAndCapabilitiesService>;
    let modalService: Partial<SdcUiServices.ModalService>;
    let eventListenerService: Partial<EventListenerService>;



    beforeEach(
        async(() => {

            workspaceServiceMock = {
               metadata: new ComponentMetadata()
            };

            topologyTemplateServiceMock = {
                getRequirementsAndCapabilitiesWithProperties: jest.fn().mockImplementation(() =>
                Observable.of({requirements: {'tosca.requirements.Node': requirementMock},
                capabilities: {'tosca.capabilities.Node': capabilitiesMock}}))
            };

            loaderServiceMock = {
                activate : jest.fn(),
                deactivate: jest.fn()
            }
            createDynamicComponentServiceMock = {
                insertComponentDynamically: jest.fn()
            }

            const configure: ConfigureFn = testBed => {
                testBed.configureTestingModule({
                    declarations: [ReqAndCapabilitiesComponent],
                    imports: [NgxDatatableModule],
                    schemas: [NO_ERRORS_SCHEMA],
                    providers: [
                        { provide: WorkspaceService, useValue: workspaceServiceMock },
                        { provide: SdcUiServices.LoaderService, useValue: loaderServiceMock },
                        { provide: TopologyTemplateService, useValue: topologyTemplateServiceMock },
                        { provide: SdcUiServices.CreateDynamicComponentService, useValue: createDynamicComponentServiceMock },
                        { provide: ReqAndCapabilitiesService, useValue: reqAndCapabilitiesService },
                        { provide: SdcUiServices.ModalService, useValue: modalService },
                        { provide: EventListenerService, useValue: eventListenerService }
                    ],
                });
            };
            configureTests(configure).then(testBed => {
                fixture = testBed.createComponent(ReqAndCapabilitiesComponent);
            });
        })
    );

    it('should see exactly 2 requirement in requirements table when call initCapabilitiesAndRequirements and meta data requirements null', () => {
        workspaceServiceMock.metadata.requirements = null;
        fixture.componentInstance.initCapabilitiesAndRequirements();
        expect(workspaceServiceMock.metadata.requirements["tosca.requirements.Node"].length).toBe(3);
    });
    it('should see exactly 2 capabilities in capabilities table when call initCapabilitiesAndRequirements and meta data capabilities null', () => {
        workspaceServiceMock.metadata.capabilities = null;
        fixture.componentInstance.initCapabilitiesAndRequirements();
        expect(workspaceServiceMock.metadata.capabilities["tosca.capabilities.Node"].length).toBe(2);
    });

    it('capabilities array papulated when call populateReqOrCap with capabilities', () => {
        workspaceServiceMock.metadata.capabilities = {"tosca.capabilities.Node": capabilitiesMock, "tosca.capabilities.Scalable": capabilitiesMock};
        fixture.componentInstance.populateReqOrCap("capabilities");
        expect(fixture.componentInstance.capabilities.length).toBe(4);
    });

    it('create requirements component when call loadReqOrCap with true', () => {
        createDynamicComponentServiceMock.insertComponentDynamically.mockImplementation(() => { return {instance: {requirements: requirementMock}}});
        fixture.componentInstance.requirements = requirementMock;
        fixture.componentInstance.loadReqOrCap(true);
        expect(fixture.componentInstance.instanceRef.instance.requirements.length).toEqual(3);
    });

    it('create capabilities component when call loadReqOrCap with false', () => {
        fixture.componentInstance.instanceRef = {instance: {requirements: null}};
        createDynamicComponentServiceMock.insertComponentDynamically.mockImplementation(() => { return {instance: {capabilities: capabilitiesMock}}});
        fixture.componentInstance.capabilities = capabilitiesMock;
        fixture.componentInstance.requirementsUI = filterRequirmentsMock;
        let event = {
            target : {
                value : 'root'
            }
        }
        fixture.componentInstance.updateFilter(event);
        expect(fixture.componentInstance.instanceRef.instance.requirements.length).toBe(1);
    });

    it('should filter 1 capabilities when searching and call updateFilter function and instanceRef is capabilities component', () => {
        fixture.componentInstance.instanceRef = {instance: {capabilities: null}};
        fixture.componentInstance.capabilities = capabilitiesMock;
        fixture.componentInstance.selectTabName = 'CAPABILITIES';
        let event = {
            target : {
                value : '1source'
            }
        }
        fixture.componentInstance.updateFilter(event);
        expect(fixture.componentInstance.instanceRef.instance.capabilities[0].type).toBe("tosca.capabilities.Node");
    });
});