44 lines
1.2 KiB
JavaScript
44 lines
1.2 KiB
JavaScript
|
// This test written in mocha+should.js
|
||
|
var should = require('./init.js');
|
||
|
var assert = require('assert');
|
||
|
|
||
|
var jdb = require('../');
|
||
|
var ModelBuilder = jdb.ModelBuilder;
|
||
|
var DataSource = jdb.DataSource;
|
||
|
var Memory = require('../lib/connectors/memory');
|
||
|
|
||
|
var plugins = jdb.plugins;
|
||
|
|
||
|
describe('Model class', function () {
|
||
|
|
||
|
it('should define a plugin', function() {
|
||
|
plugins.define('example', function(Model, options) {
|
||
|
Model.prototype.example = function() {
|
||
|
return options;
|
||
|
};
|
||
|
});
|
||
|
})
|
||
|
|
||
|
it('should apply plugin', function(done) {
|
||
|
var memory = new DataSource({connector: Memory});
|
||
|
var Item = memory.createModel('Item', { name: 'string' }, {
|
||
|
plugins: { timestamps: true }
|
||
|
});
|
||
|
|
||
|
Item.plugin('example', { foo: 'bar' });
|
||
|
|
||
|
var def = memory.getModelDefinition('Item');
|
||
|
var json = def.toJSON();
|
||
|
var properties = json.properties;
|
||
|
properties.createdAt.should.eql({ type: 'Date' });
|
||
|
properties.updatedAt.should.eql({ type: 'Date' });
|
||
|
|
||
|
Item.create({ name: 'Item 1' }, function(err, inst) {
|
||
|
inst.createdAt.should.be.a.date;
|
||
|
inst.updatedAt.should.be.a.date;
|
||
|
inst.example().should.eql({ foo: 'bar' });
|
||
|
done();
|
||
|
});
|
||
|
});
|
||
|
|
||
|
});
|