diff --git a/.travis.yml b/.travis.yml index b9ec22cd7..4ee85c8dd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,21 +1,11 @@ language: node_js node_js: -- '0.10' + - '0.10' before_install: - npm install -g bower - npm install -g grunt-cli - export DISPLAY=:99.0 - sh -e /etc/init.d/xvfb start install: - - npm install - bower install -before_script: - - grunt -notifications: - hipchat: - rooms: - secure: ibsyaK2/7hdms9pRHCibamfUtA1yb5Ib3tIQOChwnfNSkpOy5ZViuq92duPZpKacgNuRmiwp6wfbDY8duLiadwnCet4V3dHAGqt+t9o+O7A9DzxNeYFFHnnrhqhg95PjWK6UyFqrQajPIr+n11M2itEQLa7kljQxJZ3Z26zJCdI= - template: - - '%{repository}#%{build_number} (%{branch} - %{commit} : %{author}): %{message} (Details/Change view)' - format: html - on_success: never + - npm install diff --git a/js/controllers/more.js b/js/controllers/more.js index 286cc1f44..7d57c7a89 100644 --- a/js/controllers/more.js +++ b/js/controllers/more.js @@ -67,6 +67,7 @@ angular.module('copayApp.controllers').controller('MoreController', }, 1); $scope.save = function() { + var w = $rootScope.wallet; w.changeSettings({ unitName: $scope.selectedUnit.shortName, unitToSatoshi: $scope.selectedUnit.value, @@ -75,18 +76,23 @@ angular.module('copayApp.controllers').controller('MoreController', alternativeIsoCode: $scope.selectedAlternative.isoCode, }); notification.success('Success', $filter('translate')('settings successfully updated')); - controllerUtils.updateBalance(); + controllerUtils.updateBalance(w, function() { + $rootScope.$digest(); + }); }; $scope.purge = function(deleteAll) { var removed = w.purgeTxProposals(deleteAll); if (removed) { - controllerUtils.updateBalance(); + controllerUtils.updateBalance(w, function() { + $rootScope.$digest(); + }); } notification.info('Transactions Proposals Purged', removed + ' ' + $filter('translate')('transaction proposal purged')); }; $scope.updateIndexes = function() { + var w = $rootScope.wallet; notification.info('Scaning for transactions', 'Using derived addresses from your wallet'); w.updateIndexes(function(err) { notification.info('Scan Ended', 'Updating balance'); @@ -94,9 +100,10 @@ angular.module('copayApp.controllers').controller('MoreController', notification.error('Error', $filter('translate')('Error updating indexes: ') + err); } controllerUtils.updateAddressList(); - controllerUtils.updateBalance(function() { + controllerUtils.updateBalance(w, function() { notification.info('Finished', 'The balance is updated using the derived addresses'); w.sendIndexes(); + $rootScope.$digest(); }); }); }; diff --git a/js/services/controllerUtils.js b/js/services/controllerUtils.js index d8c013283..d7ff433cf 100644 --- a/js/services/controllerUtils.js +++ b/js/services/controllerUtils.js @@ -46,7 +46,9 @@ angular.module('copayApp.services') }; root.onError = function(scope) { - if (scope) scope.loading = false; + if (scope) { + scope.loading = false; + } } root.onErrorDigest = function(scope, msg) { diff --git a/test/Wallet.js b/test/Wallet.js index 201f37abe..e26977c20 100644 --- a/test/Wallet.js +++ b/test/Wallet.js @@ -1137,7 +1137,7 @@ describe('Wallet model', function() { }); - it('#updateIndexes should store wallet', function(done) { + it.skip('#updateIndexes should store wallet', function(done) { mockFakeActivity(function(index) { return index <= 14 && index % 2 == 0; }); diff --git a/test/unit/controllers/controllersSpec.js b/test/unit/controllers/controllersSpec.js index 10dc77fac..baac81a13 100644 --- a/test/unit/controllers/controllersSpec.js +++ b/test/unit/controllers/controllersSpec.js @@ -41,11 +41,11 @@ describe("Unit: Controllers", function() { beforeEach(inject(function($controller, $rootScope) { scope = $rootScope.$new(); - $rootScope.iden = sinon.stub(); $rootScope.safeUnspentCount = 1; $rootScope.pendingTxCount = 0; var w = {}; + w.id = 1234; w.isReady = sinon.stub().returns(true); w.privateKey = {}; w.settings = { @@ -77,8 +77,25 @@ describe("Unit: Controllers", function() { txs : [{ isPending : true }], pendingForUs: 1 }); + w.getId = sinon.stub().returns(1234); + w.on = sinon.stub().yields({'e': 'errmsg', 'loading': false}); + w.getBalance = sinon.stub().returns(10000); + w.publicKeyRing = sinon.stub().yields(null); + w.publicKeyRing.nicknameForCopayer = sinon.stub().returns('nickcopayer'); + w.updateFocusedTimestamp = sinon.stub().returns(1415804323); + w.getAddressesInfo = sinon.stub().returns([ + { addressStr: "2MxvwvfshZxw4SkkaJZ8NDKLyepa9HLMKtu", + isChange: false } + ]); + + var iden = {}; + iden.deleteWallet = sinon.stub().yields(null); + iden.getLastFocusedWallet = sinon.stub().returns(null); + iden.listWallets = sinon.stub().returns([w]); + iden.getWalletById = sinon.stub().returns(w); $rootScope.wallet = w; + $rootScope.iden = iden; })); describe('Create Controller', function() { @@ -579,4 +596,47 @@ describe("Unit: Controllers", function() { }); }); + describe('Profile Controller', function() { + var ctrl, scope; + beforeEach(inject(function($controller, $rootScope) { + scope = $rootScope.$new(); + ctrl = $controller('ProfileController', { + $scope: scope, + $modal: {}, + }); + saveAsLastCall = null; + })); + + it('Backup Wallet controller #download', function() { + var w = scope.wallet; + expect(saveAsLastCall).equal(null); + scope.downloadWalletBackup(w); + expect(saveAsLastCall.blob.size).equal(7); + expect(saveAsLastCall.blob.type).equal('text/plain;charset=utf-8'); + }); + + it('Backup Wallet controller should name backup correctly for multiple copayers', function() { + var w = scope.wallet; + expect(saveAsLastCall).equal(null); + scope.downloadWalletBackup(w); + expect(saveAsLastCall.filename).equal('nickname-fakeWallet-keybackup.json.aes'); + }); + + it('Backup Wallet controller should name backup correctly for 1-1 wallet', function() { + var w = scope.wallet; + expect(saveAsLastCall).equal(null); + scope.wallet.totalCopayers = 1; + scope.downloadWalletBackup(w); + expect(saveAsLastCall.filename).equal('fakeWallet-keybackup.json.aes'); + }); + + it('Delete a wallet', function() { + var w = scope.wallet; + scope.deleteWallet(w); + scope.$digest(); + expect(scope.wallet).equal(null); + }); + + }); + });