From fb0dcee054117576dbfde8d2a9a2a93e12e4618f Mon Sep 17 00:00:00 2001 From: Ivan Socolsky Date: Mon, 29 Jun 2015 09:11:03 -0300 Subject: [PATCH] combine new preferences with stored preferences --- lib/server.js | 21 +++++++++++---------- test/integration/server.js | 4 ++-- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/server.js b/lib/server.js index 1509be6..5871d7a 100644 --- a/lib/server.js +++ b/lib/server.js @@ -480,7 +480,6 @@ WalletService.prototype.savePreferences = function(opts, cb) { }]; opts = _.pick(opts, _.pluck(preferences, 'name')); - try { _.each(preferences, function(preference) { var value = opts[preference.name]; @@ -495,15 +494,17 @@ WalletService.prototype.savePreferences = function(opts, cb) { } self._runLocked(cb, function(cb) { - var preferences = Model.Preferences.create({ - walletId: self.walletId, - copayerId: self.copayerId, - email: opts.email, - language: opts.language, - unit: opts.unit, - }); - self.storage.storePreferences(preferences, function(err) { - return cb(err); + self.storage.fetchPreferences(self.walletId, self.copayerId, function(err, oldPref) { + if (err) return cb(err); + + var newPref = Model.Preferences.create({ + walletId: self.walletId, + copayerId: self.copayerId, + }); + var preferences = Model.Preferences.fromObj(_.defaults(newPref, opts, oldPref)); + self.storage.storePreferences(preferences, function(err) { + return cb(err); + }); }); }); }; diff --git a/test/integration/server.js b/test/integration/server.js index 5d6590d..98cc5c3 100644 --- a/test/integration/server.js +++ b/test/integration/server.js @@ -260,7 +260,7 @@ helpers.createAddresses = function(server, wallet, main, change, cb) { var storage, blockchainExplorer; -var useMongo = true; +var useMongo = false; function initStorage(cb) { function getDb(cb) { @@ -1186,7 +1186,7 @@ describe('Wallet service', function() { }); }); }); - it.only('should save preferences incrementally', function(done) { + it('should save preferences incrementally', function(done) { async.series([ function(next) {