water-orm
Version:
A monolith version of Standalone waterline ORM
118 lines (94 loc) • 4.05 kB
JavaScript
var assert = require('assert');
describe('Migratable Interface', function() {
describe('Schema', function() {
describe('primaryKey', function() {
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should disable autoPK', function(done) {
Migratable.Document.describe(function (err, user) {
assert(!user.id);
done();
});
});
it('should set attribute as primary key', function(done) {
Migratable.Document.describe(function (err, user) {
assert.strictEqual(user.title.primaryKey, true);
done();
});
});
});
describe('autoIncrement', function() {
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
//
// TODO:
// pull auto-increment tests into a different interface
//
// it('should set autoIncrement on schema attribute', function(done) {
// Document.describe(function (err, user) {
// // Some databases like MySQL don't allow multiple autoIncrement values
// if(!user.number.autoIncrement) {
// console.log('Auto Increment was not set on the non primary-key attribute. If your ' +
// 'database supports it you should look into this. Some databases like MySQL dont ' +
// 'support multiple auto increment values');
// return done();
// }
// assert.strictEqual(user.number.autoIncrement, true);
// done();
// });
// });
// it('should increment an ID on insert', function(done) {
// Document.describe(function (err, user) {
// // Some databases like MySQL don't allow multiple autoIncrement values
// if(!user.number.autoIncrement) {
// console.log('Auto Increment was not set on the non primary-key attribute. If your ' +
// 'database supports it you should look into this. Some databases like MySQL dont ' +
// 'support multiple auto increment values');
// return done();
// }
// Document.create({ title: 'autoincrement 1' }, function(err, record) {
// assert.strictEqual(record.number, 1);
// Document.create({ title: 'autoincrement 2' }, function(err, record) {
// assert.strictEqual(record.number, 2);
// done();
// });
// });
// });
// });
it('should not allow multiple records with the same PK', function(done) {
Migratable.Document.create({ title: '100' }, function(err, record) {
assert.equal(record.title, '100');
Migratable.Document.create({ title: '100' }, function(err, record) {
assert(err);
assert(!record);
done();
});
});
});
});
describe('uniqueness', function() {
/////////////////////////////////////////////////////
// TEST METHODS
////////////////////////////////////////////////////
it('should set unique on schema attribute', function(done) {
Migratable.Document.describe(function (err, user) {
assert.strictEqual(user.serialNumber.unique, true);
done();
});
});
it('should return an error if unique constraint fails', function(done) {
Migratable.Document.create({ title: 'uniqueConstraint 1', serialNumber: 'test' }, function(err, record) {
assert.ifError(err);
assert.equal(record.serialNumber, 'test');
Migratable.Document.create({ title: 'uniqueConstraint 2', serialNumber: 'test' }, function(err, record) {
assert(!record);
assert(err);
done();
});
});
});
});
});
});