adding test API information and spinner indicating report loading
[vid.git] / vid-app-common / src / main / webapp / app / vid / scripts / modals / report-modal / report-modal-request.controller.test.js
1 /*-
2  * ============LICENSE_START=======================================================
3  * VID
4  * ================================================================================
5  * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
6  * ================================================================================
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  *      http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  * ============LICENSE_END=========================================================
19  */
20
21 require('./report-modal-request.controller');
22 const jestMock = require('jest-mock');
23
24 describe('Testing error report creation', () => {
25     const mockAPI = "testAPI";
26
27     let $notNeeded;
28     let $controller;
29
30     let mockHttp;
31
32     let mockModalInstance;
33     let mockWindow;
34     let mockReportService;
35     let testErrorMsg;
36     let mockDataService;
37
38     let correctResponse;
39     let failResponse;
40
41     let mockInfo;
42
43     beforeEach(
44         angular.mock.module('app')
45     );
46
47     beforeEach(inject(function (_$controller_) {
48         $notNeeded = jestMock.fn();
49         mockHttp = jestMock.fn();
50         mockDataService = jestMock.fn();
51
52         mockDataService.getMsoRequestParametersTestApi = function() {
53             return mockAPI;
54         };
55
56         mockModalInstance = {};
57         mockWindow = {
58             webkitURL: {
59                 createObjectURL: function (blob) {
60                     return blob;
61                 }
62             }
63         };
64
65         correctResponse = {data:{report:"test-error-report",status:202}};
66         failResponse = {data:{report:"test-fail-report",status:404}};
67
68         mockReportService = {
69
70             getReportData: function(info) {
71                 return Promise.resolve(correctResponse);
72             },
73             getReportTimeStamp: function () {
74                 return "testTime";
75             }
76         };
77
78         testErrorMsg = 'testing message';
79
80         $controller = _$controller_('reportModalInstanceController',{
81             $uibModalInstance: mockModalInstance,
82             $scope: $notNeeded,
83             $window: mockWindow,
84             ReportService: mockReportService,
85             DataService: mockDataService,
86             errorMsg: testErrorMsg,
87             requestInfo: mockInfo
88         });
89     }));
90
91     test('Verify close will call close in modal instance', () => {
92         mockModalInstance.close = jestMock.fn();
93
94         $controller.close();
95
96         expect(mockModalInstance.close).toHaveBeenCalled();
97     });
98
99     test('Verify report was constructed properly', () => {
100
101         $controller.saveReportData(correctResponse);
102
103         expect($controller.report).toEqual(
104             "Selected test API: \n" + mockAPI
105             + "\n\n Data from GUI:\n" + testErrorMsg
106             + "\n\n Collected data from API:\n" + JSON.stringify(correctResponse.data,  null, "\t"));
107         expect($controller.downloadEnable).toBeTruthy();
108         expect($controller.download).toEqual(new Blob([ $controller.report ], { type : 'text/plain' }));
109     });
110
111     test('Verify report contains error if API did not respond', () => {
112
113         $controller.printReportFail(failResponse);
114
115         expect($controller.report).toEqual(testErrorMsg + "\n\n API error:\n" + JSON.stringify(failResponse.data,  null, "\t"));
116         expect($controller.downloadEnable).toBeFalsy();
117     });
118
119 });