From 0347cb5bda490f9e801db133ed547412a152f01b Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 19 Jun 2014 15:07:20 -0300 Subject: [PATCH 1/3] add isMobile service and tests --- js/controllers/send.js | 25 +---------------------- js/services/isMobile.js | 26 ++++++++++++++++++++++++ test/unit/controllers/controllersSpec.js | 14 +++++++++++++ test/unit/services/servicesSpec.js | 16 +++++++++++++++ 4 files changed, 57 insertions(+), 24 deletions(-) create mode 100644 js/services/isMobile.js diff --git a/js/controllers/send.js b/js/controllers/send.js index 8320e9f2d..49a5506c8 100644 --- a/js/controllers/send.js +++ b/js/controllers/send.js @@ -2,7 +2,7 @@ var bitcore = require('bitcore'); angular.module('copayApp.controllers').controller('SendController', - function($scope, $rootScope, $window, $location, $timeout, $anchorScroll, $modal) { + function($scope, $rootScope, $window, $location, $timeout, $anchorScroll, $modal, isMobile) { $scope.title = 'Send'; $scope.loading = false; var satToUnit = 1 / config.unitToSatoshi; @@ -23,29 +23,6 @@ angular.module('copayApp.controllers').controller('SendController', return flag; }; - // TODO this shouldnt be on a particular controller. - // Detect mobile devices - var isMobile = { - Android: function() { - return navigator.userAgent.match(/Android/i); - }, - BlackBerry: function() { - return navigator.userAgent.match(/BlackBerry/i); - }, - iOS: function() { - return navigator.userAgent.match(/iPhone|iPad|iPod/i); - }, - Opera: function() { - return navigator.userAgent.match(/Opera Mini/i); - }, - Windows: function() { - return navigator.userAgent.match(/IEMobile/i); - }, - any: function() { - return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); - } - }; - // Detect protocol $scope.isHttp = ($window.location.protocol.indexOf('http') === 0); diff --git a/js/services/isMobile.js b/js/services/isMobile.js new file mode 100644 index 000000000..de0150070 --- /dev/null +++ b/js/services/isMobile.js @@ -0,0 +1,26 @@ +'use strict'; + +// Detect mobile devices +var isMobile = { + Android: function() { + return !! navigator.userAgent.match(/Android/i); + }, + BlackBerry: function() { + return !! navigator.userAgent.match(/BlackBerry/i); + }, + iOS: function() { + return !! navigator.userAgent.match(/iPhone|iPad|iPod/i); + }, + Opera: function() { + return !! navigator.userAgent.match(/Opera Mini/i); + }, + Windows: function() { + return !! navigator.userAgent.match(/IEMobile/i); + }, + any: function() { + return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iOS() || isMobile.Opera() || isMobile.Windows()); + } +}; + + +angular.module('copayApp.services').value('isMobile', isMobile); diff --git a/test/unit/controllers/controllersSpec.js b/test/unit/controllers/controllersSpec.js index 736cb2cac..c01b7ce9b 100644 --- a/test/unit/controllers/controllersSpec.js +++ b/test/unit/controllers/controllersSpec.js @@ -214,4 +214,18 @@ describe("Unit: Controllers", function() { }); + describe('Send Controller', function() { + var sendCtrl; + beforeEach(inject(function($controller, $rootScope) { + scope = $rootScope.$new(); + sendCtrl = $controller('SendController', { + $scope: scope, + }); + })); + + it('should have a SendController', function() { + expect(scope.isMobile).not.to.equal(null); + }); + }); + }); diff --git a/test/unit/services/servicesSpec.js b/test/unit/services/servicesSpec.js index b515e6bf7..8940bb70a 100644 --- a/test/unit/services/servicesSpec.js +++ b/test/unit/services/servicesSpec.js @@ -108,3 +108,19 @@ describe("Unit: Backup Service", function() { expectation.once(); })); }); + +describe("Unit: isMobile Service", function() { + beforeEach(angular.mock.module('copayApp.services')); + it('should contain a isMobile service', inject(function(isMobile) { + expect(isMobile).not.to.equal(null); + })); + it('should not detect mobile by default', inject(function(isMobile) { + isMobile.any().should.equal(false); + })); + it('should detect mobile if user agent is Android', inject(function(isMobile) { + navigator.__defineGetter__('userAgent', function(){ + return 'Android 2.2.3'; + }); + isMobile.any().should.equal(true); + })); +}); From 2f2464b17cc9c3c53d0c45480021682a2d6e236c Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Thu, 19 Jun 2014 15:18:58 -0300 Subject: [PATCH 2/3] fix index.html --- index.html | 1 + 1 file changed, 1 insertion(+) diff --git a/index.html b/index.html index 77c8734be..f3f2a79a7 100644 --- a/index.html +++ b/index.html @@ -886,6 +886,7 @@ on supported browsers please check http://www.w + From 1f9e1a5f39554f9ac7cef4d63b1244c7e5b53f08 Mon Sep 17 00:00:00 2001 From: Manuel Araoz Date: Mon, 23 Jun 2014 09:53:53 -0300 Subject: [PATCH 3/3] fix tests --- test/unit/controllers/controllersSpec.js | 1 + 1 file changed, 1 insertion(+) diff --git a/test/unit/controllers/controllersSpec.js b/test/unit/controllers/controllersSpec.js index c01b7ce9b..b41524a74 100644 --- a/test/unit/controllers/controllersSpec.js +++ b/test/unit/controllers/controllersSpec.js @@ -220,6 +220,7 @@ describe("Unit: Controllers", function() { scope = $rootScope.$new(); sendCtrl = $controller('SendController', { $scope: scope, + $modal: {}, }); }));