diff --git a/lib/connectors/memory.js b/lib/connectors/memory.js index 622e6273..94ca3d9f 100644 --- a/lib/connectors/memory.js +++ b/lib/connectors/memory.js @@ -238,6 +238,7 @@ Memory.prototype.updateOrCreate = function (model, data, options, callback) { }; Memory.prototype.save = function save(model, data, options, callback) { + var self = this; var id = this.getIdValue(model, data); var cachedModels = this.collection(model); var modelData = cachedModels && this.collection(model)[id]; @@ -247,7 +248,7 @@ Memory.prototype.save = function save(model, data, options, callback) { } this.collection(model)[id] = serialize(data); this.saveToFile(data, function(err) { - callback(err, data, { isNewInstance: !modelData }); + callback(err, self.fromDb(model, data), { isNewInstance: !modelData }); }); }; diff --git a/test/memory.test.js b/test/memory.test.js index dfa75b75..c05be442 100644 --- a/test/memory.test.js +++ b/test/memory.test.js @@ -389,6 +389,19 @@ describe('Memory connector', function() { }); }); + it('should deserialize values after saving in upsert', function(done) { + User.findOne({where: {seq: 1}}, function(err, paul) { + User.updateOrCreate({id: paul.id, name: 'Sir Paul McCartney'}, + function(err, sirpaul) { + should.not.exist(err); + sirpaul.birthday.should.be.instanceOf(Date); + sirpaul.order.should.be.instanceOf(Number); + sirpaul.vip.should.be.instanceOf(Boolean); + done(); + }); + }); + }); + function seed(done) { var beatles = [ {