Files
alex_app1/node_modules/mongoskin/integration/integration_tests.js

204 lines
6.3 KiB
JavaScript

GLOBAL.DEBUG = true;
var assert = require('assert'),
mongo = require('../lib/mongoskin');
console.log('======== test MongoSkin.db ========');
(function(){
var username = 'testuser',
password = 'password';
db = mongo.db('localhost/test');
db.open(function(err, db) {
assert.ok(!err);
assert.ok(db, err && err.stack);
db.addUser(username, password, function(err, result){
var authdb = mongo.db(username + ':' + password +'@localhost/test');
authdb.open(function(err, db){
assert.ok(!err, err && err.stack);
});
var faildb = mongo.db(username + ':wrongpassword@localhost/test');
faildb.open(function(err, db){
assert.ok(err, 'should not auth');
assert.ok(!db, 'should not return db');
});
});
});
})();
(function(){
db = mongo.db('db://admin:admin@localhost:27017/test?auto_reconnect');
db.open(function(err, db){
assert.ok(err instanceof Error);
})
})();
var bindToBlog = {
first: function(fn) {
this.findOne(fn);
}
};
console.log('======== test MongoSkin.router ========');
var testdb1 = mongo.db('localhost/test1');
var testdb2 = mongo.db('localhost/test2');
var router = mongo.router(function(name){
switch(name){
case 'user':
case 'message':
return testdb1;
default:
return testdb2;
}
});
assert.equal(router.collection('user'), testdb1.collection('user'), 'user should router to testdb1');
assert.equal(router.collection('message'), testdb1.collection('message'), 'message should router to testdb1');
assert.equal(router.collection('others'), testdb2.collection('others'), 'others should router to testdb2');
router.bind('user');
router.bind('others');
assert.equal(router.user, testdb1.user, 'user property should router to testdb1');
assert.equal(router.others, testdb2.others, 'user property should router to testdb1');
console.log('======== test MongoSkin.bind ========');
var db = mongo.db('localhost/test_mongoskin');
db.bind('blog', bindToBlog);
db.bind('users');
assert.equal(db.blog.first, bindToBlog.first);
assert.ok(db.users);
console.log('======== test SkinDb bson ========');
assert.ok(db.ObjectID.createFromHexString('a7b79d4dca9d730000000000'));
console.log('======== test SkinDb.bind ========');
db.bind('blog2', bindToBlog);
db.bind('user2');
assert.equal(db.blog2.first, bindToBlog.first);
assert.ok(db.user2);
console.log('======== test SkinDb.open ========');
(function(){
var db1, db2;
db.open(function(err, db) {
assert.ok(db, err && err.stack);
db1 = db;
assert.equal(db1.state, 'connected');
if (db2) {
assert.equal(db1, db2, 'should alwayse be the same instance in db.open.');
}
});
db.open(function(err, db) {
assert.ok(db, err && err.stack);
db2 = db;
assert.equal(db2.state, 'connected');
if (db1) {
assert.equal(db1, db2, 'should alwayse be the same instance in db.open.');
}
});
})()
console.log('======== test normal method of SkinDb ========');
db.createCollection('test_createCollection', function(err, collection) {
assert.equal(db.db.state, 'connected');
assert.ok(collection, err && err.stack);
});
console.log('======== test SkinDb.collection ========');
assert.equal(db.blog, db.collection('blog'));
console.log('======== test SkinCollection.open ========');
var coll1, coll2;
db.blog.open(function(err, coll) {
assert.ok(coll, err && err.stack);
coll1 = coll;
if (coll2) {
assert.equal(coll1, coll2, 'should be the same instance in collection.open');
}
});
db.blog.open(function(err, coll) {
assert.ok(coll, err && err.stack);
coll2 = coll;
if (coll1) {
assert.equal(coll1, coll2, 'should be the same instance in collection.open');
}
});
console.log('======== test normal method of SkinCollection ========');
db.collection('test_normal').ensureIndex([['a',1]], function(err, replies){
assert.ok(replies, err && err.stack);
});
console.log('======== test SkinCollection.drop ========');
db.collection('test_find').drop(function(err, replies){
assert.ok(!err, err && err.stack);
});
console.log('======== test SkinCollection.find ========');
collection = db.collection('test_find');
collection.insert([{a:1},{a:2},{a:3},{a:4}], function(err, replies){
assert.ok(replies, err && err.stack);
console.log('======== test SkinCollection.findById ========');
collection.findById(replies[0]._id.toString(), function(err, item){
assert.equal(item.a, 1);
console.log('======== test SkinCollection.removeById ========');
collection.removeById(replies[0]._id.toString(), function(err, reply){
assert.ok(!err, err && err.stack);
collection.findById(replies[0]._id.toString(), function(err, item){
assert.ok(!err);
assert.ok(!item);
});
});
});
});
collection.findItems(function(err, items){
assert.ok(items, err && err.stack);
console.log('found '+ items.length + ' items');
});
collection.findEach(function(err, item){
assert.ok(!err, err && err.stack);
});
collection.find(function(err, cursor){
assert.ok(cursor, err && err.stack);
});
console.log('======== test SkinCursor ========');
collection.find().toArray(function(err, items){
console.log('======== test find cursor toArray========');
assert.ok(items, err && err.stack);
});
collection.find().each(function(err, item){
console.log('======== test find cursor each========');
assert.ok(!err, err && err.stack);
});
collection.find().sort({a:-1}).limit(2).skip(1).toArray(function(err, items){
console.log('======== test cursor sort() limit() skip() ========');
assert.ok(!err, err && err.stack);
console.dir(items);
});
console.log('======== deep future test ========');
(function(){
var db2 = mongo.db('localhost/test-mongoskin01');
db2.collection('blog').find().toArray(function(err, items){
assert.ok(!err, err && err.stack);
})
})();
(function(){
var db2 = mongo.db('unknownhost/test-mongoskin01');
db2.collection('blog').find().toArray(function(err, items){
assert.ok(err);
})
})();
/*
console.log('======== test SkinDb.close ========');
db.close();
assert.equal(db.db.state, 'notConnected');
*/