Merge pull request #1105 from strongloop/newInstance_updateAttributes_2.x
Add 'isNewInstance' for updateAttributes
This commit is contained in:
commit
76398b7f45
|
@ -571,6 +571,7 @@ DataAccessObject.upsert = function(data, options, cb) {
|
||||||
var context = {
|
var context = {
|
||||||
Model: Model,
|
Model: Model,
|
||||||
data: data,
|
data: data,
|
||||||
|
isNewInstance: info && info.isNewInstance,
|
||||||
hookState: ctx.hookState,
|
hookState: ctx.hookState,
|
||||||
options: options,
|
options: options,
|
||||||
};
|
};
|
||||||
|
@ -3100,6 +3101,7 @@ function(data, options, cb) {
|
||||||
data: context.data,
|
data: context.data,
|
||||||
hookState: hookState,
|
hookState: hookState,
|
||||||
options: options,
|
options: options,
|
||||||
|
isNewInstance: false,
|
||||||
};
|
};
|
||||||
Model.notifyObserversOf('loaded', ctx, function(err) {
|
Model.notifyObserversOf('loaded', ctx, function(err) {
|
||||||
if (err) return cb(err);
|
if (err) return cb(err);
|
||||||
|
|
|
@ -880,6 +880,7 @@ describe('Unoptimized connector', function() {
|
||||||
// disable optimized methods
|
// disable optimized methods
|
||||||
ds.connector.updateOrCreate = false;
|
ds.connector.updateOrCreate = false;
|
||||||
ds.connector.findOrCreate = false;
|
ds.connector.findOrCreate = false;
|
||||||
|
ds.connector.upsertWithWhere = false;
|
||||||
|
|
||||||
require('./persistence-hooks.suite')(ds, should, {
|
require('./persistence-hooks.suite')(ds, should, {
|
||||||
replaceOrCreateReportsNewInstance: true,
|
replaceOrCreateReportsNewInstance: true,
|
||||||
|
|
|
@ -1356,6 +1356,7 @@ module.exports = function(dataSource, should, connectorCapabilities) {
|
||||||
|
|
||||||
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
||||||
data: { name: 'changed' },
|
data: { name: 'changed' },
|
||||||
|
isNewInstance: false,
|
||||||
}));
|
}));
|
||||||
|
|
||||||
done();
|
done();
|
||||||
|
@ -2010,19 +2011,13 @@ module.exports = function(dataSource, should, connectorCapabilities) {
|
||||||
function(err, instance) {
|
function(err, instance) {
|
||||||
if (err) return done(err);
|
if (err) return done(err);
|
||||||
|
|
||||||
if (dataSource.connector.updateOrCreate) {
|
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
||||||
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
data: {
|
||||||
data: { id: 'new-id', name: 'a name' },
|
id: 'new-id',
|
||||||
}));
|
name: 'a name',
|
||||||
} else {
|
},
|
||||||
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
isNewInstance: true,
|
||||||
data: {
|
}));
|
||||||
id: 'new-id',
|
|
||||||
name: 'a name',
|
|
||||||
},
|
|
||||||
isNewInstance: true,
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -2034,24 +2029,13 @@ module.exports = function(dataSource, should, connectorCapabilities) {
|
||||||
{ id: existingInstance.id, name: 'updated name' },
|
{ id: existingInstance.id, name: 'updated name' },
|
||||||
function(err, instance) {
|
function(err, instance) {
|
||||||
if (err) return done(err);
|
if (err) return done(err);
|
||||||
|
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
||||||
if (dataSource.connector.updateOrCreate) {
|
data: {
|
||||||
ctxRecorder.records.should.eql(aCtxForModel(TestModel, {
|
id: existingInstance.id,
|
||||||
data: {
|
name: 'updated name',
|
||||||
id: existingInstance.id,
|
},
|
||||||
name: 'updated name',
|
isNewInstance: false,
|
||||||
},
|
}));
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
ctxRecorder.records.should.eql(
|
|
||||||
aCtxForModel(TestModel, {
|
|
||||||
data: {
|
|
||||||
id: existingInstance.id,
|
|
||||||
name: 'updated name',
|
|
||||||
},
|
|
||||||
})
|
|
||||||
);
|
|
||||||
}
|
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -3259,13 +3243,8 @@ module.exports = function(dataSource, should, connectorCapabilities) {
|
||||||
id: existingInstance.id,
|
id: existingInstance.id,
|
||||||
name: 'updated name',
|
name: 'updated name',
|
||||||
},
|
},
|
||||||
|
isNewInstance: false,
|
||||||
});
|
});
|
||||||
// For non-atomic implementation of upsertWithWhere on update, it calls
|
|
||||||
// updateAttributes. loaded hook of updateAttributes does not provide
|
|
||||||
// isNewInstance.
|
|
||||||
if (dataSource.connector.upsertWithWhere) {
|
|
||||||
expectedContext.isNewInstance = false;
|
|
||||||
}
|
|
||||||
ctxRecorder.records.should.eql(aCtxForModel(TestModel, expectedContext));
|
ctxRecorder.records.should.eql(aCtxForModel(TestModel, expectedContext));
|
||||||
done();
|
done();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue