mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
138 lines
2.8 KiB
JavaScript
138 lines
2.8 KiB
JavaScript
![]() |
/**
|
||
|
* @author Dmitry Ilin @ MyLove Company, LLC <dmitry@mylovecompany.com>
|
||
|
*/
|
||
|
|
||
|
var vows = require('vows'),
|
||
|
assert = require('assert'),
|
||
|
events = require('events'),
|
||
|
mongoose = require('../node_modules/mongoose'),
|
||
|
pureautoinc = require('../index'),
|
||
|
Schema = mongoose.Schema,
|
||
|
db = mongoose.createConnection('127.0.0.1', 'pureautoinc_test');
|
||
|
|
||
|
pureautoinc.init(db);
|
||
|
|
||
|
|
||
|
var suite = vows.describe('Testing Schema creation and auto incrementing');
|
||
|
|
||
|
suite.addBatch({
|
||
|
|
||
|
'After schema creation and plugin application': {
|
||
|
|
||
|
topic: function () {
|
||
|
|
||
|
var schema = new Schema({
|
||
|
email: String,
|
||
|
text: String
|
||
|
});
|
||
|
|
||
|
var pluginParameters = {
|
||
|
model: 'Subscriber',
|
||
|
field: 'sequenceNumber'
|
||
|
};
|
||
|
|
||
|
schema.plugin(pureautoinc.plugin, pluginParameters);
|
||
|
|
||
|
var Subscriber = db.model('Subscriber', schema);
|
||
|
|
||
|
var Test = {
|
||
|
model: db.model('Subscriber'),
|
||
|
pluginParameters: pluginParameters
|
||
|
};
|
||
|
|
||
|
return Test;
|
||
|
},
|
||
|
|
||
|
'schema gained auto increment field': function (topic) {
|
||
|
|
||
|
assert.ok(topic.model.schema.paths[topic.pluginParameters.field]);
|
||
|
},
|
||
|
|
||
|
'and model created': {
|
||
|
|
||
|
topic: function (Model) {
|
||
|
|
||
|
var promise = new (events.EventEmitter);
|
||
|
|
||
|
var subscriber;
|
||
|
var count = 5;
|
||
|
|
||
|
function save (counter) {
|
||
|
|
||
|
subscriber = new Model.model({
|
||
|
email: 'useremail@emailserver.com',
|
||
|
text: 'some text'
|
||
|
});
|
||
|
|
||
|
subscriber.save(function (err, res) {
|
||
|
|
||
|
if (err)
|
||
|
promise.emit('error', err, Model);
|
||
|
else if (counter < count)
|
||
|
save(++counter);
|
||
|
else
|
||
|
promise.emit('success', res, Model);
|
||
|
});
|
||
|
}
|
||
|
save(1);
|
||
|
|
||
|
return promise;
|
||
|
},
|
||
|
|
||
|
'data saved successfully': function (err, res, Model) {
|
||
|
|
||
|
assert.ok(res);
|
||
|
},
|
||
|
|
||
|
'and if we look at indexes': {
|
||
|
|
||
|
topic: function (promise, Model) {
|
||
|
|
||
|
var promise = new (events.EventEmitter);
|
||
|
|
||
|
Model.model.collection.getIndexes(function (err, res) {
|
||
|
if (err)
|
||
|
promise.emit('error', err, Model);
|
||
|
else
|
||
|
promise.emit('success', res, Model);
|
||
|
});
|
||
|
|
||
|
return promise;
|
||
|
},
|
||
|
|
||
|
'index created successfully': function (err, res, Model) {
|
||
|
|
||
|
assert.ok(res[Model.pluginParameters.field + '_1']);
|
||
|
},
|
||
|
|
||
|
'and after documents created': {
|
||
|
|
||
|
topic: function (promise, Model) {
|
||
|
|
||
|
var promise = new (events.EventEmitter);
|
||
|
|
||
|
Model.model.find({}, function (err, res) {
|
||
|
|
||
|
Model.model.collection.drop(function (err) { });
|
||
|
|
||
|
var counter = Model.pluginParameters.start;
|
||
|
for (var i = 0; i < res.length; i++) {
|
||
|
if (res[i][Model.pluginParameters.field] != counter)
|
||
|
promise.emit('error', err, Model);
|
||
|
counter++;
|
||
|
}
|
||
|
promise.emit('success', res, Model);
|
||
|
});
|
||
|
|
||
|
return promise;
|
||
|
},
|
||
|
|
||
|
'data contains right sequence numbers': function (err, res, Model) {
|
||
|
|
||
|
assert.ok(res);
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}).export(module);
|