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) {