blob: 4ed7304257252741086eb0ece4a0abc4f2e1ccda [file] [log] [blame]
Matteo Scandolo686547a2017-08-08 13:05:25 -07001
2/*
3 * Copyright 2017-present Open Networking Foundation
4
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8
9 * http://www.apache.org/licenses/LICENSE-2.0
10
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18
Matteo Scandoloa5d03d52016-07-21 11:35:46 -070019(function () {
20 'use strict';
21
22 describe('The xos.helper module', function(){
23 describe('The xosNotification service', () => {
24
25 let service, scope;
26
27 const options = {icon: 'icon', body: 'message'};
28
29 let notificationMock = {
30 requestPermission: () => {
31 return {
32 then: cb => cb('granted')
33 }
34 },
35 permission: 'granted'
36 }
37
38
39 // load the application module
40 beforeEach(module('xos.helpers', ($provide) => {
41 $provide.value('Notification', notificationMock);
42 }));
43
44 // inject the cartService
45 beforeEach(inject(function (_xosNotification_, $rootScope) {
46 // The injector unwraps the underscores (_) from around the parameter names when matching
47 service = _xosNotification_;
48 scope = $rootScope;
49 spyOn(service, 'sendNotification');
50 spyOn(service, 'checkPermission').and.callThrough();
51 spyOn(notificationMock, 'requestPermission').and.callThrough();
52 }));
53
54 it('should exist', () => {
55 expect(service).toBeDefined();
56 });
57
58 describe('when permission are granted', () => {
59 it('should send the notification', () => {
60 service.notify('Test', options);
61 expect(service.sendNotification).toHaveBeenCalledWith('Test', options);
62 });
63 });
64
65 describe('when permission are not granted', () => {
66 beforeEach(() => {
67 notificationMock.permission = false;
68 });
69
70 it('should request permission', () => {
71 service.notify('Test', options);
72 expect(service.checkPermission).toHaveBeenCalled();
73 scope.$apply(); // this resolve the promise
74 expect(service.sendNotification).toHaveBeenCalledWith('Test', options);
75 });
76 });
77
78 });
79 });
80
81})();