87edca319611364f09fc225c4be1504e889d7dc8
[vid.git] /
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     let $notNeeded;
26     let $controller;
27
28     let mockHttp;
29
30     let mockModalInstance;
31     let mockWindow;
32     let mockReportService;
33     let testErrorMsg;
34
35     let correctResponse;
36     let failResponse;
37
38     let mockInfo;
39
40     beforeEach(
41         angular.mock.module('app')
42     );
43
44     beforeEach(inject(function (_$controller_) {
45         $notNeeded = jestMock.fn();
46         mockHttp = jestMock.fn();
47
48         mockModalInstance = {};
49         mockWindow = {
50             webkitURL: {
51                 createObjectURL: function (blob) {
52                     return blob;
53                 }
54             }
55         };
56
57         correctResponse = {data:{report:"test-error-report",status:202}};
58         failResponse = {data:{report:"test-fail-report",status:404}};
59
60         mockReportService = {
61
62             getReportData: function(info) {
63                 return Promise.resolve(correctResponse);
64             },
65             getReportTimeStamp: function () {
66                 return "testTime";
67             }
68         };
69
70         testErrorMsg = 'testing message';
71
72         $controller = _$controller_('reportModalInstanceController',{
73             $uibModalInstance: mockModalInstance,
74             $scope: $notNeeded,
75             $window: mockWindow,
76             ReportService: mockReportService,
77             errorMsg: testErrorMsg,
78             requestInfo: mockInfo
79         });
80     }));
81
82     test('Verify close will call close in modal instance', () => {
83         mockModalInstance.close = jestMock.fn();
84
85         $controller.close();
86
87         expect(mockModalInstance.close).toHaveBeenCalled();
88     });
89
90     test('Verify report was constructed properly', () => {
91
92         $controller.saveReportData(correctResponse);
93
94         expect($controller.report).toEqual(testErrorMsg + "\n\n Collected data from API:\n" + JSON.stringify(correctResponse.data,  null, "\t"));
95         expect($controller.downloadEnable).toBeTruthy();
96         expect($controller.download).toEqual(new Blob([ $controller.report ], { type : 'text/plain' }));
97     });
98
99     test('Verify report contains error if API did not respond', () => {
100
101         $controller.printReportFail(failResponse);
102
103         expect($controller.report).toEqual(testErrorMsg + "\n\n API error:\n" + JSON.stringify(failResponse.data,  null, "\t"));
104         expect($controller.downloadEnable).toBeFalsy();
105     });
106
107 });