Merge pull request #896 from strongloop/forceId_check_replaceById_fix
Fix `forceId` check for `replaceById`
This commit is contained in:
commit
cd5f8b0ee7
|
@ -2657,7 +2657,7 @@ DataAccessObject.replaceById = function(id, data, options, cb) {
|
||||||
if (!data[pkName]) data[pkName] = id;
|
if (!data[pkName]) data[pkName] = id;
|
||||||
|
|
||||||
var Model = this;
|
var Model = this;
|
||||||
var inst = new Model(data);
|
var inst = new Model(data, { persisted: true });
|
||||||
var enforced = {};
|
var enforced = {};
|
||||||
this.applyProperties(enforced, inst);
|
this.applyProperties(enforced, inst);
|
||||||
inst.setAttributes(enforced);
|
inst.setAttributes(enforced);
|
||||||
|
|
|
@ -4,8 +4,9 @@
|
||||||
// License text available at https://opensource.org/licenses/MIT
|
// License text available at https://opensource.org/licenses/MIT
|
||||||
|
|
||||||
// This test written in mocha+should.js
|
// This test written in mocha+should.js
|
||||||
|
var async = require('async');
|
||||||
var should = require('./init.js');
|
var should = require('./init.js');
|
||||||
var db, User, options, whereCount = 0;
|
var db, User, options, ModelWithForceId, whereCount = 0;
|
||||||
var j = require('../');
|
var j = require('../');
|
||||||
var ValidationError = j.ValidationError;
|
var ValidationError = j.ValidationError;
|
||||||
|
|
||||||
|
@ -18,6 +19,10 @@ describe('optional-validation', function() {
|
||||||
|
|
||||||
before(function(done) {
|
before(function(done) {
|
||||||
db = getSchema();
|
db = getSchema();
|
||||||
|
ModelWithForceId = db.createModel(
|
||||||
|
'ModelWithForceId',
|
||||||
|
{ name: String },
|
||||||
|
{ forceId: true });
|
||||||
User = db.define('User', {
|
User = db.define('User', {
|
||||||
seq: { type: Number, index: true },
|
seq: { type: Number, index: true },
|
||||||
name: { type: String, index: true, sort: true },
|
name: { type: String, index: true, sort: true },
|
||||||
|
@ -27,9 +32,7 @@ describe('optional-validation', function() {
|
||||||
order: { type: Number, index: true, sort: true },
|
order: { type: Number, index: true, sort: true },
|
||||||
vip: { type: Boolean },
|
vip: { type: Boolean },
|
||||||
}, { forceId: true, strict: true });
|
}, { forceId: true, strict: true });
|
||||||
|
db.automigrate(['ModelWithForceId', 'User'], done);
|
||||||
db.automigrate(['User'], done);
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
beforeEach(function(done) {
|
beforeEach(function(done) {
|
||||||
|
@ -107,6 +110,33 @@ describe('optional-validation', function() {
|
||||||
return { name: 'DoesNotExist' + (whereCount++) };
|
return { name: 'DoesNotExist' + (whereCount++) };
|
||||||
}
|
}
|
||||||
|
|
||||||
|
describe('forceId', function() {
|
||||||
|
context('replaceAttributes', function() {
|
||||||
|
it('should not fail if you do not pass the Primary key in data object',
|
||||||
|
function(done) {
|
||||||
|
ModelWithForceId.create({ name: 'foo' }, function(err, created) {
|
||||||
|
if (err) return done(err);
|
||||||
|
created.replaceAttributes({ name: 'bar' }, function(err, data) {
|
||||||
|
done(err);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should fail if you pass the Primary key in data object',
|
||||||
|
function(done) {
|
||||||
|
ModelWithForceId.create({ name: 'foo' }, function(err, created) {
|
||||||
|
if (err) return done(err);
|
||||||
|
created.replaceAttributes({ name: 'bar', id: 999 },
|
||||||
|
function(err, data) {
|
||||||
|
should.exist(err);
|
||||||
|
done();
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
describe('no model setting', function() {
|
describe('no model setting', function() {
|
||||||
|
|
||||||
describe('method create', function() {
|
describe('method create', function() {
|
||||||
|
|
Loading…
Reference in New Issue