From 8f2077e344f08241a568905ae99ea865bd236988 Mon Sep 17 00:00:00 2001 From: Amir Jafarian Date: Fri, 3 Jun 2016 18:00:21 -0400 Subject: [PATCH] Fix --- lib/relation-definition.js | 3 +++ test/include.test.js | 23 +++++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/lib/relation-definition.js b/lib/relation-definition.js index a545f36c..69a2d1af 100644 --- a/lib/relation-definition.js +++ b/lib/relation-definition.js @@ -1562,6 +1562,9 @@ RelationDefinition.hasAndBelongsToMany = function hasAndBelongsToMany(modelFrom, options.properties = params.properties; options.scope = params.scope; + // Forward relation options like "disableInclude" + options.options = params.options; + if (params.polymorphic) { var polymorphic = polymorphicParams(params.polymorphic); options.polymorphic = polymorphic; // pass through diff --git a/test/include.test.js b/test/include.test.js index a5115618..8a93a4cd 100644 --- a/test/include.test.js +++ b/test/include.test.js @@ -919,6 +919,29 @@ describe('include', function() { }); }); }); + + it('should support disableInclude for hasAndBelongsToMany', function() { + var Patient = db.define('Patient', { name: String }); + var Doctor = db.define('Doctor', { name: String }); + var DoctorPatient = db.define('DoctorPatient'); + Doctor.hasAndBelongsToMany('patients', { + model: 'Patient', + options: { disableInclude: true }, + }); + + var doctor; + return db.automigrate(['Patient', 'Doctor', 'DoctorPatient']).then(function() { + return Doctor.create({ name: 'Who' }); + }).then(function(inst) { + doctor = inst; + return doctor.patients.create({ name: 'Lazarus' }); + }).then(function() { + return Doctor.find({ include: ['patients'] }); + }).then(function(list) { + list.should.have.length(1); + list[0].toJSON().should.not.have.property('patients'); + }); + }); }); function setup(done) {