test: extract uid-generator helper

This commit is contained in:
Miroslav Bajtoš 2016-04-12 14:32:34 +02:00
parent 3435b43a5c
commit 616a81b496
2 changed files with 28 additions and 15 deletions

View File

@ -0,0 +1,19 @@
// Copyright IBM Corp. 2016. All Rights Reserved.
// Node module: loopback-datasource-juggler
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
var lastId = 0;
exports.next = function() {
lastId++;
return exports.last();
};
exports.last = function() {
return '' + lastId;
};
exports.reset = function() {
lastId = 0;
};

View File

@ -10,6 +10,9 @@ var ContextRecorder = contextTestHelpers.ContextRecorder;
var deepCloneToObject = contextTestHelpers.deepCloneToObject; var deepCloneToObject = contextTestHelpers.deepCloneToObject;
var aCtxForModel = contextTestHelpers.aCtxForModel; var aCtxForModel = contextTestHelpers.aCtxForModel;
var uid = require('./helpers/uid-generator');
var getLastGeneratedUid = uid.last;
module.exports = function(dataSource, should, connectorCapabilities) { module.exports = function(dataSource, should, connectorCapabilities) {
if (!connectorCapabilities) connectorCapabilities = {}; if (!connectorCapabilities) connectorCapabilities = {};
if (connectorCapabilities.replaceOrCreateReportsNewInstance === undefined) { if (connectorCapabilities.replaceOrCreateReportsNewInstance === undefined) {
@ -19,7 +22,7 @@ module.exports = function(dataSource, should, connectorCapabilities) {
describe('Persistence hooks', function() { describe('Persistence hooks', function() {
var ctxRecorder, expectedError, observersCalled; var ctxRecorder, expectedError, observersCalled;
var TestModel, existingInstance; var TestModel, existingInstance;
var migrated = false, lastId; var migrated = false;
var triggered; var triggered;
var undefinedValue = undefined; var undefinedValue = undefined;
@ -31,12 +34,12 @@ module.exports = function(dataSource, should, connectorCapabilities) {
TestModel = dataSource.createModel('TestModel', { TestModel = dataSource.createModel('TestModel', {
// Set id.generated to false to honor client side values // Set id.generated to false to honor client side values
id: { type: String, id: true, generated: false, default: uid }, id: { type: String, id: true, generated: false, default: uid.next },
name: { type: String, required: true }, name: { type: String, required: true },
extra: { type: String, required: false }, extra: { type: String, required: false },
}); });
lastId = 0; uid.reset();
if (migrated) { if (migrated) {
TestModel.deleteAll(done); TestModel.deleteAll(done);
@ -229,7 +232,7 @@ module.exports = function(dataSource, should, connectorCapabilities) {
next(); next();
}); });
TestModel.create({ id: uid(), name: 'a-name' }, function(err, instance) { TestModel.create({ id: uid.next(), name: 'a-name' }, function(err, instance) {
if (err) return done(err); if (err) return done(err);
instance.should.have.property('extra', 'hook data'); instance.should.have.property('extra', 'hook data');
done(); done();
@ -1258,7 +1261,7 @@ module.exports = function(dataSource, should, connectorCapabilities) {
}); });
var User = dataSource.createModel('UserWithAddress', { var User = dataSource.createModel('UserWithAddress', {
id: { type: String, id: true, default: uid() }, id: { type: String, id: true, default: uid.next },
name: { type: String, required: true }, name: { type: String, required: true },
address: { type: Address, required: false }, address: { type: Address, required: false },
extra: { type: String }, extra: { type: String },
@ -1510,7 +1513,7 @@ module.exports = function(dataSource, should, connectorCapabilities) {
}); });
var User = dataSource.createModel('UserWithAddress', { var User = dataSource.createModel('UserWithAddress', {
id: { type: String, id: true, default: uid() }, id: { type: String, id: true, default: uid.next },
name: { type: String, required: true }, name: { type: String, required: true },
address: { type: Address, required: false }, address: { type: Address, required: false },
extra: { type: String }, extra: { type: String },
@ -3013,15 +3016,6 @@ module.exports = function(dataSource, should, connectorCapabilities) {
TestModel.findOne({ where: { id: id }}, { notify: false }, cb); TestModel.findOne({ where: { id: id }}, { notify: false }, cb);
} }
function uid() {
lastId += 1;
return '' + lastId;
}
function getLastGeneratedUid() {
return '' + lastId;
}
function monitorHookExecution() { function monitorHookExecution() {
triggered = []; triggered = [];
TestModel._notify = TestModel.notifyObserversOf; TestModel._notify = TestModel.notifyObserversOf;