summaryrefslogtreecommitdiff
path: root/node_modules/mongoose/test/index.test.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/mongoose/test/index.test.js')
-rw-r--r--node_modules/mongoose/test/index.test.js235
1 files changed, 235 insertions, 0 deletions
diff --git a/node_modules/mongoose/test/index.test.js b/node_modules/mongoose/test/index.test.js
new file mode 100644
index 0000000..db0625d
--- /dev/null
+++ b/node_modules/mongoose/test/index.test.js
@@ -0,0 +1,235 @@
+
+var url = require('url')
+ , start = require('./common')
+ , should = require('should')
+ , mongoose = start.mongoose
+ , Mongoose = mongoose.Mongoose
+ , Schema = mongoose.Schema;
+
+module.exports = {
+
+ 'test connecting to the demo database': function(beforeExit){
+ var db = start()
+ , connected = false;
+
+ db.on('open', function(){
+ connected = true;
+ db.close();
+ });
+
+ beforeExit(function(){
+ connected.should.be.true;
+ });
+ },
+
+ 'test default connection': function(beforeExit){
+ var db = mongoose.connection
+ , uri = 'mongodb://localhost/mongoose_test'
+ , connected = false;
+
+ mongoose.connect(process.env.MONGOOSE_TEST_URI || uri);
+ db.on('open', function(){
+ connected = true;
+ db.close();
+ });
+
+ beforeExit(function(){
+ connected.should.be.true;
+ });
+ },
+
+ 'test setting options': function(){
+ var mongoose = new Mongoose();
+
+ mongoose.set('a', 'b');
+ mongoose.set('long option', 'c');
+
+ mongoose.get('a').should.eql('b');
+ mongoose.set('a').should.eql('b');
+ mongoose.get('long option').should.eql('c');
+ },
+
+ 'test declaring global plugins': function (beforeExit) {
+ var mong = new Mongoose()
+ , schema = new Schema()
+ , called = 0;
+
+ mong.plugin(function (s) {
+ s.should.equal(schema);
+ called++;
+ });
+
+ schema.plugin(function (s) {
+ s.should.equal(schema);
+ called++;
+ });
+
+ mong.model('GlobalPlugins', schema);
+
+ beforeExit(function () {
+ called.should.eql(2);
+ });
+ },
+
+ 'test disconnection of all connections': function (beforeExit) {
+ var mong = new Mongoose()
+ , uri = 'mongodb://localhost/mongoose_test'
+ , connections = 0
+ , disconnections = 0;
+
+ mong.connect(process.env.MONGOOSE_TEST_URI || uri);
+ var db = mong.connection;
+
+ db.on('open', function(){
+ connections++;
+ });
+
+ db.on('close', function () {
+ disconnections++;
+ });
+
+ var db2 = mong.createConnection(process.env.MONGOOSE_TEST_URI || uri);
+
+ db2.on('open', function () {
+ connections++;
+ });
+
+ db2.on('close', function () {
+ disconnections++;
+ });
+
+ mong.disconnect();
+
+ beforeExit(function () {
+ connections.should.eql(2);
+ disconnections.should.eql(2);
+ });
+ },
+
+ 'test disconnection of all connections callback': function (beforeExit) {
+ var mong = new Mongoose()
+ , uri = 'mongodb://localhost/mongoose_test'
+ , called = false;
+
+ mong.connect(process.env.MONGOOSE_TEST_URI || uri);
+
+ mong.connection.on('open', function () {
+ mong.disconnect(function () {
+ called = true;
+ });
+ });
+
+ beforeExit(function () {
+ called.should.be.true;
+ });
+ },
+
+ 'try accessing a model that hasn\'t been defined': function () {
+ var mong = new Mongoose()
+ , thrown = false;
+
+ try {
+ mong.model('Test');
+ } catch (e) {
+ /hasn't been registered/.test(e.message).should.be.true;
+ thrown = true;
+ }
+
+ thrown.should.be.true;
+ },
+
+ 'test connecting with a signature of host, database, function': function (){
+ var mong = new Mongoose()
+ , uri = process.env.MONGOOSE_TEST_URI || 'mongodb://localhost/mongoose_test';
+
+ uri = url.parse(uri);
+
+ mong.connect(uri.hostname, uri.pathname.substr(1), function (err) {
+ should.strictEqual(err, null);
+ mong.connection.close();
+ });
+ },
+
+ 'test connecting to a replica set': function () {
+ var uri = process.env.MONGOOSE_SET_TEST_URI;
+
+ if (!uri) {
+ console.log('\033[30m', '\n', 'You\'re not testing replica sets!'
+ , '\n', 'Please set the MONGOOSE_SET_TEST_URI env variable.', '\n'
+ , 'e.g: `mongodb://localhost:27017/db,mongodb://localhost…`', '\n'
+ , '\033[39m');
+ return;
+ }
+
+ var mong = new Mongoose();
+
+ mong.connectSet(uri, function (err) {
+ should.strictEqual(err, null);
+
+ mong.model('Test', new mongoose.Schema({
+ test: String
+ }));
+
+ var Test = mong.model('Test')
+ , test = new Test();
+
+ test.test = 'aa';
+ test.save(function (err) {
+ should.strictEqual(err, null);
+
+ Test.findById(test._id, function (err, doc) {
+ should.strictEqual(err, null);
+
+ doc.test.should.eql('aa');
+
+ mong.connection.close();
+ });
+ });
+ });
+ },
+
+ 'test initializing a new Connection to a replica set': function () {
+ var uri = process.env.MONGOOSE_SET_TEST_URI;
+
+ if (!uri) return;
+
+ var mong = new Mongoose(true);
+
+ var conn = mong.createSetConnection(uri, function (err) {
+ should.strictEqual(err, null);
+
+ mong.model('ReplSetTwo', new mongoose.Schema({
+ test: String
+ }));
+
+ var Test = conn.model('ReplSetTwo')
+ , test = new Test();
+
+ test.test = 'aa';
+ test.save(function (err) {
+ should.strictEqual(err, null);
+
+ Test.findById(test._id, function (err, doc) {
+ should.strictEqual(err, null);
+
+ doc.test.should.eql('aa');
+
+ conn.close();
+ });
+ });
+ });
+ },
+
+ 'test public exports': function () {
+ mongoose.version.should.be.a('string');
+ mongoose.Collection.should.be.a('function');
+ mongoose.Connection.should.be.a('function');
+ mongoose.Schema.should.be.a('function');
+ mongoose.SchemaType.should.be.a('function');
+ mongoose.Query.should.be.a('function');
+ mongoose.Promise.should.be.a('function');
+ mongoose.Model.should.be.a('function');
+ mongoose.Document.should.be.a('function');
+ }
+
+};