summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/composition/panel/panel-tabs/policy-targets-tab/policy-targets-tab.component.spec.ts
blob: 7774138cabcbbbef5cd28938a90cc1addf629688 (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
import { NO_ERRORS_SCHEMA } from '@angular/core';
import { async, ComponentFixture, TestBed } from '@angular/core/testing';
import { SdcUiCommon, SdcUiComponents, SdcUiServices } from 'onap-ui-angular';
import { Observable } from 'rxjs/Rx';
import { Mock } from 'ts-mockery';
import { ConfigureFn, configureTests } from '../../../../../../../jest/test-config.helper';
import { ComponentMetadata } from '../../../../../../models/component-metadata';
import { EventListenerService } from '../../../../../../services/event-listener-service';
import { TranslateService } from '../../../../../shared/translator/translate.service';
import { WorkspaceService } from '../../../../workspace/workspace.service';
import { CompositionService } from '../../../composition.service';
import { PolicyTargetsTabComponent } from "app/ng2/pages/composition/panel/panel-tabs/policy-targets-tab/policy-targets-tab.component";
import { PoliciesService } from "app/services-ng2";
import { PolicyInstance, GroupInstance } from "app/models";
import { NgxsModule } from "@ngxs/store";
import { GraphState } from "app/ng2/pages/composition/common/store/graph.state";
import { WorkspaceState } from "app/ng2/store/states/workspace.state";
import { TargetUiObject } from "app/models/ui-models/ui-target-object";
import { TargetOrMemberType } from "app/utils";




describe('policy targets tab component', () => {

    let fixture: ComponentFixture<PolicyTargetsTabComponent>;
    let component: PolicyTargetsTabComponent;

    let policiesServiceMock = Mock.of<PoliciesService>(
        {
            updateTargets: jest.fn().mockImplementation((compType, uid, policyUniqueId, updatedTargets) => {
                    if (updatedTargets === undefined) {
                        return Observable.throwError('error');
                    } else {
                        return Observable.of(updatedTargets);
                    }
                }
    )});

    let compositionServiceMock = {
        componentInstances: [{uniqueId: '1', name: 'inst1'},
                    {uniqueId: '2', name: 'inst2'},
                    {uniqueId: '3', name: 'inst3'},
                    {uniqueId: '4', name: 'inst4'},
                    {uniqueId: '5', name: 'inst5'}
        ],
        groupInstances : [
            Mock.of<GroupInstance>({uniqueId: "group1", name: "group1"}),
            Mock.of<GroupInstance>({uniqueId: "group2", name: "group2"}),
            Mock.of<GroupInstance>({uniqueId: "group3", name: "group3"})
        ]
    };

    let workspaceServiceMock = {
        metadata: Mock.of<ComponentMetadata>()
    };

    let modalServiceMock = {
        openInfoModal: jest.fn(),
        openCustomModal: jest.fn().mockImplementation(() => { return  {
            innerModalContent: { instance: { existingElements: targetsToAdd }},
            closeModal: jest.fn()
        }})
    };

    let loaderServiceMock = {
        activate: jest.fn(),
        deactivate: jest.fn()
    };

    const targetsToAdd = [
        <TargetUiObject>{uniqueId: '1', name: 'inst1', type: TargetOrMemberType.COMPONENT_INSTANCES},
        <TargetUiObject>{uniqueId: "group1", name: "group1", type: TargetOrMemberType.GROUPS}
    ];

    const policyInstanceMock = Mock.of<PolicyInstance>(
        { getTargetsAsUiObject: jest.fn().mockImplementation( () => targetsToAdd)
    });

    beforeEach(() => {
        TestBed.configureTestingModule({
                declarations: [PolicyTargetsTabComponent],
                imports: [NgxsModule.forRoot([WorkspaceState])],
                schemas: [NO_ERRORS_SCHEMA],
                providers: [
                    {provide: TranslateService, useValue: { translate: jest.fn() }},
                    {provide: PoliciesService, useValue: policiesServiceMock},
                    {provide: SdcUiServices.ModalService, useValue: modalServiceMock },
                    {provide: EventListenerService, useValue: {} },
                    {provide: CompositionService, useValue: compositionServiceMock },
                    {provide: WorkspaceService, useValue: workspaceServiceMock},
                    {provide: SdcUiServices.LoaderService, useValue: loaderServiceMock }
                ],
        });
        
        fixture = TestBed.createComponent(PolicyTargetsTabComponent);
        component = fixture.componentInstance;
        component.policy = policyInstanceMock;
    });
    

    it('if there are no existing targets, all component instances AND all groups are available for adding', () => {
        component.targets = [];
        const optionalTargetsToAdd = component.getOptionalsTargetsToAdd();
        expect(optionalTargetsToAdd).toHaveLength(8);
    });

    it('list of available instances to add does not include existing targets', () => {
        component.targets = targetsToAdd;
        const optionalMembersToAdd = component.getOptionalsTargetsToAdd();
        expect(optionalMembersToAdd).toHaveLength(6);
    });
});