aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/webapp/app/vid/scripts/modals/change-management-manual-tasks-controller/change-management-manual-tasks.controller.test.js
blob: f5821f7de17885e735c1160af3cb2130eb93cba3 (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
/*-
 * ============LICENSE_START=======================================================
 * VID
 * ================================================================================
 * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *      http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * ============LICENSE_END=========================================================
 */

require('./change-management-manual-tasks.controller');
const jestMock = require('jest-mock');

describe('changeManagementManualTasksController testing', () => {
    let $controller;
    let $uibModalInstance = jestMock.fn();
    let $MsoService = jestMock.fn();
    let $log = jestMock.fn();

    beforeEach(
        angular.mock.module('app')
    );

    beforeEach(inject(function (_$controller_) {
        $MsoService.getManualTasks = jestMock.fn().mockResolvedValue(
            {data: [manualTaskResponse]});
        $log.error = jestMock.fn();

        $controller = _$controller_('changeManagementManualTasksController', {
            "MsoService": $MsoService,
            "$uibModalInstance": $uibModalInstance,
            "$log": $log,
            "jobInfo": {
                requestState: job.requestStatus.requestState,
                details: job.requestStatus.statusMessage,
                job: job,
            },
            "COMPONENT": {
                MANUAL_TASKS: ["manualTaskName1", "manualTaskName2"]
            },
        });
    }));

    const job = {
        "requestId": "db775fac-d9b5-480e-8b3e-4f0d0ae67890",
        "requestScope": "vnf",
        "requestStatus": {
            "percentProgress": 100.0,
            "requestState": "FAILED",
            "statusMessage": "Error validating request. No valid catalog entry is specified",
            "finishTime": "Thu, 05 Oct 2017 18:58:29 GMT"
        },
        "requestType": "replaceInstance",
        "startTime": "Thu, 05 Oct 2017 18:58:29 GMT",
        "instanceReferences": {
            "serviceInstanceId": "cc8fa0a9-7576-4c39-af31-7ad61d057ac9",
            "vnfInstanceId": "bec0c3d3-09ae-4eb1-b694-057987a10982",
            "requestorId": "pa2396"
        }
    };

    const manualTaskResponse = {
        "taskId": "db775fac-d9b5-480e-8b3e-4f0d0ae67890",
        "validResponses": ["rollback", "abort", "skip", "resume", "retry"]
    };

    test('should populate vm.manualTasks (while init)', () => {
        expect($controller.manualTasks).toEqual(
            manualTaskResponse.validResponses);
    });

    test('should populate vm.MANUAL_TASKS from COMPONENT (while init)', () => {
        expect($controller.MANUAL_TASKS).toEqual(
            ["manualTaskName1", "manualTaskName2"]);
    });

    test('should populate vm.task (while init)', () => {
        expect($controller.task).toEqual(manualTaskResponse);
    });

    test('should find manual task using isTaskAvailable', () => {
        expect($controller.isTaskAvailable('abort')).toBeTruthy();
        expect($controller.isTaskAvailable('resume')).toBeTruthy();

        expect($controller.isTaskAvailable('foo')).toBeFalsy();
        expect($controller.isTaskAvailable(undefined)).toBeFalsy();
    });

    test('should call MsoService upon completeTask', () => {
        $MsoService.completeTask = jestMock.fn().mockResolvedValue({data: {}});

        $controller.completeTask("taskName");
        expect($MsoService.completeTask).toBeCalledWith(
            manualTaskResponse.taskId, "taskName");
    });

    test('should close modal upon completeTask', done => {
        $MsoService.completeTask = jestMock.fn().mockResolvedValue({data: {}});
        $uibModalInstance.close = jestMock.fn(() => {
            done();
        });

        $controller.completeTask("taskName");
    });

    test('should close modal upon failed completeTask', done => {
        $MsoService.completeTask = jestMock.fn().mockRejectedValue();
        $uibModalInstance.close = jestMock.fn(() => {
            done();
        });

        $controller.completeTask("taskName");
    });

});