From c8be4f0b63e6a7ea94447a2efd8696e1ee0beb84 Mon Sep 17 00:00:00 2001 From: Fonger Date: Sun, 5 Aug 2018 22:35:00 +0800 Subject: [PATCH 1/4] test(cursor): fix eachAsync time check to prevent potential ci failure --- test/aggregate.test.js | 2 +- test/query.cursor.test.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/test/aggregate.test.js b/test/aggregate.test.js index 78e28428a41..cb34258198a 100644 --- a/test/aggregate.test.js +++ b/test/aggregate.test.js @@ -1208,7 +1208,7 @@ describe('aggregate: ', function() { cursor(). exec(). eachAsync(checkDoc, { parallel: 2}).then(function() { - assert.ok(Date.now() - startedAt[1] > 100); + assert.ok(Date.now() - startedAt[1] >= 100); assert.equal(startedAt.length, 2); assert.ok(startedAt[1] - startedAt[0] < 50); assert.deepEqual(names.sort(), expectedNames); diff --git a/test/query.cursor.test.js b/test/query.cursor.test.js index 48478fe1147..a91f8097727 100644 --- a/test/query.cursor.test.js +++ b/test/query.cursor.test.js @@ -329,7 +329,7 @@ describe('QueryCursor', function() { }; }; cursor.eachAsync(checkDoc, { parallel: 2 }).then(function() { - assert.ok(Date.now() - startedAt[1] > 100); + assert.ok(Date.now() - startedAt[1] >= 100); assert.equal(startedAt.length, 2); assert.ok(startedAt[1] - startedAt[0] < 50); assert.deepEqual(names.sort(), ['Axl', 'Slash']); From 394f3c8660086607e82f7ead2eaee1dcdc0e078e Mon Sep 17 00:00:00 2001 From: Fonger Date: Mon, 6 Aug 2018 09:05:10 +0800 Subject: [PATCH 2/4] test(model): correct test pending value to prevent ci failure --- test/model.querying.test.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/model.querying.test.js b/test/model.querying.test.js index cfcc8fa82f8..f1a04b5eb23 100644 --- a/test/model.querying.test.js +++ b/test/model.querying.test.js @@ -1983,7 +1983,7 @@ describe('model: querying:', function() { assert.equal(tests.length, 3); }); - var pending = 9; + var pending = 10; function cb() { if (--pending) { From b3346f9e56a8fc0f89a6f9c6bba8cfd8182c1636 Mon Sep 17 00:00:00 2001 From: Fonger Date: Mon, 6 Aug 2018 11:12:58 +0800 Subject: [PATCH 3/4] test(model): refactor `model: querying: with conditionals` --- test/model.querying.test.js | 139 ++++++++++++++++-------------------- 1 file changed, 60 insertions(+), 79 deletions(-) diff --git a/test/model.querying.test.js b/test/model.querying.test.js index f1a04b5eb23..e449ae9cb73 100644 --- a/test/model.querying.test.js +++ b/test/model.querying.test.js @@ -1856,6 +1856,7 @@ describe('model: querying:', function() { Test.create(docA, docB, docC, function(err, a, b, c) { assert.ifError(err); + if (err) return done(err); assert.equal(b.block.toString('utf8'), 'buffer shtuffs are neat'); assert.equal(a.block.toString('utf8'), 'über'); assert.equal(c.block.toString('utf8'), 'hello world'); @@ -1911,89 +1912,69 @@ describe('model: querying:', function() { var docC = {name: 'C', block: new MongooseBuffer('aGVsbG8gd29ybGQ=', 'base64')}; Test.create(docA, docB, docC, function(err, a, b, c) { - assert.ifError(err); - assert.equal(a.block.toString('utf8'), 'über'); - assert.equal(b.block.toString('utf8'), 'buffer shtuffs are neat'); - assert.equal(c.block.toString('utf8'), 'hello world'); - - Test.find({block: {$in: [[195, 188, 98, 101, 114], 'buffer shtuffs are neat', new Buffer('aGVsbG8gd29ybGQ=', 'base64')]}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 3); - }); + if (err) return done(err); - Test.find({block: {$in: ['über', 'hello world']}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 2); - }); - - Test.find({block: {$in: ['über']}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 1); - assert.equal(tests[0].block.toString('utf8'), 'über'); - }); - - Test.find({block: {$nin: ['über']}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 2); - }); - - Test.find({block: {$nin: [[195, 188, 98, 101, 114], new Buffer('aGVsbG8gd29ybGQ=', 'base64')]}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 1); - assert.equal(tests[0].block.toString('utf8'), 'buffer shtuffs are neat'); - }); - - Test.find({block: {$ne: 'über'}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 2); - }); - - Test.find({block: {$gt: 'über'}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 2); - }); - - Test.find({block: {$gte: 'über'}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 3); - }); - - Test.find({block: {$lt: new Buffer('buffer shtuffs are neat')}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 2); - var ret = {}; - ret[tests[0].block.toString('utf8')] = 1; - ret[tests[1].block.toString('utf8')] = 1; - - assert.ok(ret['über'] !== undefined); - }); + co(function*() { + assert.equal(a.block.toString('utf8'), 'über'); + assert.equal(b.block.toString('utf8'), 'buffer shtuffs are neat'); + assert.equal(c.block.toString('utf8'), 'hello world'); - Test.find({block: {$lte: 'buffer shtuffs are neat'}}, function(err, tests) { - cb(); - assert.ifError(err); - assert.equal(tests.length, 3); - }); + let testPromises = [ + Test.find({block: {$in: [[195, 188, 98, 101, 114], 'buffer shtuffs are neat', new Buffer('aGVsbG8gd29ybGQ=', 'base64')]}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 3); + }), + Test.find({block: {$in: ['über', 'hello world']}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 2); + }), + Test.find({block: {$in: ['über']}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 1); + assert.equal(tests[0].block.toString('utf8'), 'über'); + }), + Test.find({block: {$nin: ['über']}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 2); + }), + Test.find({block: {$nin: [[195, 188, 98, 101, 114], new Buffer('aGVsbG8gd29ybGQ=', 'base64')]}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 1); + assert.equal(tests[0].block.toString('utf8'), 'buffer shtuffs are neat'); + }), + Test.find({block: {$ne: 'über'}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 2); + }), + Test.find({block: {$gt: 'über'}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 2); + }), + Test.find({block: {$gte: 'über'}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 3); + }), + Test.find({block: {$lt: new Buffer('buffer shtuffs are neat')}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 2); + var ret = {}; + ret[tests[0].block.toString('utf8')] = 1; + ret[tests[1].block.toString('utf8')] = 1; + + assert.ok(ret['über'] !== undefined); + }), + Test.find({block: {$lte: 'buffer shtuffs are neat'}}, function(err, tests) { + assert.ifError(err); + assert.equal(tests.length, 3); + }) + ]; - var pending = 10; + // run all of the tests in parallel + yield testPromises; + yield Test.remove({}); - function cb() { - if (--pending) { - return; - } - Test.remove({}, function(err) { - assert.ifError(err); - done(); - }); - } + done(); + }).catch(done); }); }); From 6e369052693fe9411a6ac08abae025073d1a6a81 Mon Sep 17 00:00:00 2001 From: Fonger Date: Mon, 6 Aug 2018 17:21:36 +0800 Subject: [PATCH 4/4] test(model): fix collection name conflict in `model: querying` test --- test/model.querying.test.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/model.querying.test.js b/test/model.querying.test.js index e449ae9cb73..5a95b927275 100644 --- a/test/model.querying.test.js +++ b/test/model.querying.test.js @@ -54,7 +54,6 @@ describe('model: querying:', function() { }); mongoose.model('BlogPostB', BlogPostB); - collection = 'blogposts_' + random(); ModSchema = new Schema({ num: Number, @@ -84,6 +83,11 @@ describe('model: querying:', function() { db.close(done); }); + beforeEach(function() { + // use different collection name in every test to avoid conflict (gh-6816) + collection = 'blogposts_' + random(); + }); + it('find returns a Query', function(done) { var BlogPostB = db.model('BlogPostB', collection);