77 lines
1.8 KiB
JavaScript
77 lines
1.8 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* @ngdoc service
|
|
* @name ngCordovaMocks.cordovaPush
|
|
*
|
|
* @description
|
|
* A service for testing push notifications features
|
|
* in an app build with ngCordova.
|
|
*/
|
|
ngCordovaMocks.factory('$cordovaPush', ['$q', '$timeout', '$rootScope', function ($q, $timeout, $rootScope) {
|
|
var throwsError = false;
|
|
|
|
var deviceToken = '';
|
|
|
|
return {
|
|
/**
|
|
* @ngdoc property
|
|
* @name throwsError
|
|
* @propertyOf ngCordovaMocks.cordovaPush
|
|
*
|
|
* @description
|
|
* A flag that signals whether a promise should be rejected or not.
|
|
* This property should only be used in automated tests.
|
|
**/
|
|
throwsError: throwsError,
|
|
|
|
/**
|
|
* @ngdoc property
|
|
* @name deviceToken
|
|
* @propertyOf ngCordovaMocks.cordovaPush
|
|
*
|
|
* @description
|
|
* Token send when service register device
|
|
* This property should only be used in automated tests.
|
|
**/
|
|
deviceToken: deviceToken,
|
|
|
|
onNotification: function (notification) {
|
|
$timeout(function () {
|
|
$rootScope.$broadcast('$cordovaPush:notificationReceived', notification);
|
|
});
|
|
},
|
|
|
|
register: function (config) {
|
|
var _self = this;
|
|
var defer = $q.defer();
|
|
if (config !== undefined && config.ecb === undefined) {
|
|
config.ecb = this.onNotification;
|
|
}
|
|
|
|
if (this.throwsError) {
|
|
defer.reject('There was a register error.');
|
|
} else {
|
|
defer.resolve(this.deviceToken);
|
|
if (config && config.ecb) {
|
|
config.ecb({
|
|
event: 'registered',
|
|
regid: _self.deviceToken
|
|
});
|
|
}
|
|
}
|
|
return defer.promise;
|
|
},
|
|
|
|
unregister: function (options) {
|
|
var defer = $q.defer();
|
|
if (this.throwsError) {
|
|
defer.reject('There was a register error.');
|
|
} else {
|
|
defer.resolve();
|
|
}
|
|
return defer.promise;
|
|
},
|
|
};
|
|
}]);
|