UNPKG

ng-cordova

Version:

[ngCordova](http://ngcordova.com/) ==========

157 lines (130 loc) 3.89 kB
/** * @ngdoc service * @name ngCordovaMocks.cordovaDialogs * * @description * A service for testing dialogs * in an app build with ngCordova. */ ngCordovaMocks.factory('$cordovaDialogs', ['$q', function ($q) { var dialogText = false; var dialogTitle = ''; var defaultValue = ''; var promptResponse = ''; var beepCount = 0; var useHostAbilities = true; return { /** @ngdoc property @name dialogText @propertyOf ngCordovaMocks.cordovaDialogs @description The main content in the dialog. This property should only be used in automated tests. */ dialogText: dialogText, /** @ngdoc property @name dialogTitle @propertyOf ngCordovaMocks.cordovaDialogs @description The title of the dialog. This property should only be used in automated tests. */ dialogTitle: dialogTitle, /** @ngdoc property @name defaultValue @propertyOf ngCordovaMocks.cordovaDialogs @description The default value to be used in a prompt. This property should only be used in automated tests. */ defaultValue: defaultValue, /** @ngdoc property @name promptResponse @propertyOf ngCordovaMocks.cordovaDialogs @description Used to simulate a user's response to a prompt. This property should only be used in automated tests. */ promptResponse: promptResponse, /** @ngdoc property @name buttonLabels @propertyOf ngCordovaMocks.cordovaDialogs @description An array of the text of each button in the dialog. This property should only be used in automated tests. */ buttonLabels: [], /** @ngdoc property @name beepCount @propertyOf ngCordovaMocks.cordovaDialogs @description The number of times a beep has occurred. This property should only be used in automated tests. */ beepCount: beepCount, /** @ngdoc property @name useHostAbilities @propertyOf ngCordovaMocks.cordovaDialogs @description A flag that signals whether or not to try and use the host's (browser or otherwise) prompting capabilities. This property should only be used in automated tests. */ useHostAbilities: useHostAbilities, alert: function (message, title, buttonName) { var d = $q.defer(); if (this.useHostAbilities) { // NOTE: The window.alert method doesn't support a title or callbacks. alert(message); d.resolve(); } else { this.dialogText = message; this.dialogTitle = title; this.buttonLabels.push(buttonName); d.resolve(); } return d.promise; }, confirm: function (message, title, buttonName) { var d = $q.defer(); if (this.useHostAbilities) { // NOTE: The window.confirm method doesn't support a title or custom button naming. var result = confirm(message); d.resolve(result ? 2 : 1); } else { this.dialogText = message; this.dialogTitle = title; this.buttonLabels.push(buttonName); d.resolve(0); } return d.promise; }, prompt: function (message, title, buttonLabels, defaultText) { var d = $q.defer(); if (this.useHostAbilities) { // NOTE: The window.prompt method doesn't support a title or custom button naming. var result = prompt(message, defaultText); d.resolve(result); } else { this.dialogText = message; this.dialogTitle = title; this.defaultValue = defaultText; for (var i = 0; i < buttonLabels.length; i++) { this.buttonLabels.push(buttonLabels[i]); } d.resolve(this.promptResponse); } return d.promise; }, beep: function (times) { this.beepCount = times; } }; }]);