UNPKG

water-orm

Version:

A monolith version of Standalone waterline ORM

68 lines (59 loc) 2.03 kB
var assert = require('assert'); var _ = require('lodash'); describe('compositeUnique feature', function () { var path = require('path'); var Waterline = require(path.join(process.cwd(),'lib/waterline.js')); var defaults = { migrate: 'alter' }; var waterline; var Fixture = require('./../support/fixture.js'); var Model; before(function(done) { waterline = new Waterline(); waterline.loadCollection(Fixture); var connections = { compositeUniqueConnection: _.clone(Connections.test) }; Adapter.teardown('compositeUniqueConnection', function adapterTeardown(){ waterline.initialize({ adapters: { wl_tests: Adapter }, connections: connections, defaults: defaults }, function(err, ontology) { if(err) return done(err); Model = ontology.collections['compositeunique']; done(); }); }); }); after(function(done) { if(!Adapter.hasOwnProperty('drop')) { waterline.teardown(done); } else { Model.drop(function(err1) { waterline.teardown(function(err2) { return done(err1 || err2); }); }); } }); it('should insert unique values', function (done) { var records = [ { name: '1st', uniqueOne: 'foo', uniqueTwo: 'bar' }, { name: '2nd', uniqueOne: 'foo', uniqueTwo: 'baz' }, { name: '3rd', uniqueOne: 'bar', uniqueTwo: 'bar' }, { name: '4th', uniqueOne: 'bar', uniqueTwo: 'baz' } ]; Model.create(records) .then(function (records) { assert(records.length, 4); done(); }) .catch(done) }) it('should enforce composite uniqueness', function (done) { var records = [ { name: '5th', uniqueOne: 'foo', uniqueTwo: 'bar' } ]; Model.create(records) .then(function (records) { done(new Error('should not have inserted unique records, but did anyway')); }) .catch(function (err) { assert(err) done(); }) }) })