Skip to content

Commit

Permalink
Merge branch '3.8.x'
Browse files Browse the repository at this point in the history
Conflicts:
	test/model.populate.test.js
  • Loading branch information
vkarpov15 committed Mar 23, 2015
2 parents b7c7040 + 8cdd7c2 commit 8454a49
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 33 deletions.
7 changes: 4 additions & 3 deletions lib/schema/buffer.js
Expand Up @@ -112,9 +112,10 @@ SchemaBuffer.prototype.cast = function (value, doc, init) {
return value;
} else if (value instanceof Binary) {
var ret = new MongooseBuffer(value.value(true), [this.path, doc]);
ret.subtype(value.sub_type);
// do not override Binary subtypes. users set this
// to whatever they want.
if (typeof value.sub_type !== 'number') {
throw new CastError('buffer', value, this.path);
}
ret._subtype = value.sub_type;
return ret;
}

Expand Down
66 changes: 36 additions & 30 deletions test/model.populate.test.js
Expand Up @@ -86,7 +86,6 @@ describe('model: populate:', function(){
assert.doesNotThrow(function(){
post.populate('comments', function(){});
});

db.close(done);
});
});
Expand Down Expand Up @@ -1519,53 +1518,60 @@ describe('model: populate:', function(){
, P = db.model('RefBlogPost', posts)
, User = db.model('RefUser', users);

User.create({ name: 'aaron', age: 10 }, { name: 'fan2', age: 8 }, { name: 'someone else', age: 3 },
function (err, fan1, fan2, fan3) {
assert.ifError(err);

P.create({ fans: [fan2, fan3, fan1] }, function (err, post) {
User.create(
{ name: 'aaron', age: 10 },
{ name: 'fan2', age: 8 },
{ name: 'someone else', age: 3 },
{ name: 'val', age: 3 },
function (err, fan1, fan2, fan3, fan4) {
assert.ifError(err);

P.findById(post)
.populate('fans', null, null, { sort: 'name' })
.exec(function (err, post) {
P.create({ fans: [fan4, fan2, fan3, fan1] }, function (err, post) {
assert.ifError(err);

assert.equal(post.fans.length,3);
assert.equal(post.fans[0].name,'aaron');
assert.equal(post.fans[1].name,'fan2');
assert.equal(post.fans[2].name,'someone else');

P.findById(post)
.populate('fans', 'name', null, { sort: {'name':-1} })
.populate('fans', null, null, { sort: { age: 1, name: 1 } })
.exec(function (err, post) {
assert.ifError(err);

assert.equal(post.fans.length,3);
assert.equal(post.fans[2].name,'aaron');
assert.strictEqual(undefined, post.fans[2].age)
assert.equal(post.fans[1].name,'fan2');
assert.strictEqual(undefined, post.fans[1].age)
assert.equal(post.fans[0].name,'someone else');
assert.strictEqual(undefined, post.fans[0].age)
assert.equal(post.fans.length, 4);
assert.equal(post.fans[0].name, 'someone else');
assert.equal(post.fans[1].name, 'val');
assert.equal(post.fans[2].name, 'fan2');
assert.equal(post.fans[3].name, 'aaron');

P.findById(post)
.populate('fans', 'age', { age: { $gt: 3 }}, { sort: {'name': 'desc'} })
.populate('fans', 'name', null, { sort: {'name':-1} })
.exec(function (err, post) {
db.close();
assert.ifError(err);

assert.equal(post.fans.length,2);
assert.equal(post.fans[1].age.valueOf(),10);
assert.equal(post.fans[0].age.valueOf(),8);
assert.equal(post.fans.length, 4);
assert.equal(post.fans[3].name,'aaron');
assert.strictEqual(undefined, post.fans[3].age);
assert.equal(post.fans[2].name,'fan2');
assert.strictEqual(undefined, post.fans[2].age);
assert.equal(post.fans[1].name,'someone else');
assert.strictEqual(undefined, post.fans[1].age);
assert.equal(post.fans[0].name, 'val');
assert.strictEqual(undefined, post.fans[0].age);

P.findById(post)
.populate('fans', 'age', { age: { $gt: 3 }}, { sort: {'name': 'desc'} })
.exec(function (err, post) {
db.close();
assert.ifError(err);

done();
assert.equal(post.fans.length,2);
assert.equal(post.fans[1].age.valueOf(),10);
assert.equal(post.fans[0].age.valueOf(),8);

done();
});
});
});
});
});
});
})
});

it('limit should apply to each returned doc, not in aggregate (gh-1490)', function(done){
var db = start();
Expand Down

0 comments on commit 8454a49

Please sign in to comment.