UNPKG

water-orm

Version:

A monolith version of Standalone waterline ORM

104 lines (80 loc) 2.96 kB
var Waterline = require('../../../lib/waterline'), assert = require('assert'); describe('Model', function() { describe('association', function() { describe('getter', function() { ///////////////////////////////////////////////////// // TEST SETUP //////////////////////////////////////////////////// var collection; before(function(done) { var waterline = new Waterline(); var User = Waterline.Collection.extend({ connection: 'my_foo', tableName: 'person', attributes: { preferences: { collection: 'preference', via: 'user' } } }); var Preference = Waterline.Collection.extend({ connection: 'my_foo', tableName: 'preference', attributes: { user: { model: 'person' } } }); waterline.loadCollection(User); waterline.loadCollection(Preference); var _values = [ { preferences: [{ foo: 'bar' }, { foo: 'foobar' }] }, { preferences: [{ foo: 'a' }, { foo: 'b' }] }, ]; var adapterDef = { identity: 'foo', join: function(con, col, criteria, cb) { return cb(null, _values); }, }; adapterDef.find = adapterDef.join; var connections = { 'my_foo': { adapter: 'foobar' } }; waterline.initialize({ adapters: { foobar: adapterDef }, connections: connections }, function(err, colls) { if(err) done(err); collection = colls.collections.person; done(); }); }); ///////////////////////////////////////////////////// // TEST METHODS //////////////////////////////////////////////////// it('should have a getter for preferences', function(done) { collection.find().exec(function(err, data) { if(err) return done(err); assert(Array.isArray(data[0].preferences)); assert(data[0].preferences.length == 2); assert(data[0].preferences[0].foo === 'bar'); assert(Array.isArray(data[1].preferences)); assert(data[1].preferences.length == 2); assert(data[1].preferences[0].foo === 'a'); done(); }); }); it('should have special methods on the preference key', function(done) { collection.find().exec(function(err, data) { if(err) return done(err); assert(typeof data[0].preferences.add == 'function'); assert(typeof data[0].preferences.remove == 'function'); assert(typeof data[1].preferences.add == 'function'); assert(typeof data[1].preferences.remove == 'function'); done(); }); }); }); }); });