forked from Automattic/mongoose
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdebug.test.js
More file actions
94 lines (78 loc) · 2.23 KB
/
debug.test.js
File metadata and controls
94 lines (78 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'use strict';
/**
* Test dependencies.
*/
const assert = require('assert');
const start = require('../common');
const mongoose = start.mongoose;
const Schema = mongoose.Schema;
/**
* Setup.
*/
const testSchema = new Schema({
dob: Date,
title: {
type: String,
required: false,
}
}, {
timestamps: {
createdAt: 'created_at'
}
});
/**
* Test.
*/
describe('debug: shell', function() {
let db;
let testModel;
let lastLog;
const originalConsole = console.info;
const originalDebugOption = mongoose.options.debug;
const connectionsToClose = [];
before(function() {
db = start();
testModel = db.model('Test', testSchema);
// monkey patch to read debug output
console.info = function() {
lastLog = arguments[0];
if (originalDebugOption) {
originalConsole.apply(console, arguments);
}
};
});
after(async function() {
// revert monkey patch
console.info = originalConsole;
mongoose.set('debug', originalDebugOption);
await db.close();
await Promise.all(connectionsToClose.map((v) => v.close()))
});
it('no-shell', async function() {
mongoose.set('debug', { shell: false });
await testModel.create({ dob: new Date() });
assert.equal(true, lastLog.includes('new Date'));
});
it('shell', async function() {
mongoose.set('debug', { shell: true });
await testModel.create({ dob: new Date() });
assert.equal(true, lastLog.includes('ISODate'));
});
it('should allow to set the `debug` option on a per-connection basis (gh-12700)', async function() {
const m = new mongoose.Mongoose();
// `conn1` with active debug
const conn1 = m.createConnection(start.uri);
connectionsToClose.push(conn1);
conn1.set('debug', true);
const testModel1 = conn1.model('Test', testSchema);
await testModel1.create({ dob: new Date(), title: 'Connection 1' });
const storedLog = lastLog;
// `conn2` without debug
const conn2 = m.createConnection(start.uri);
connectionsToClose.push(conn2);
const testModel2 = conn2.model('Test', testSchema);
await testModel2.create({ dob: new Date(), title: 'Connection 2' });
// Last log should not have been overwritten
assert.equal(storedLog, lastLog);
});
});