/node_modules/mquery/test/utils.test.js
https://bitbucket.org/coleman333/smartsite · JavaScript · 143 lines · 114 code · 29 blank · 0 comment · 7 complexity · 2f2909e131f635d8367831ff78633c24 MD5 · raw file
- var utils = require('../lib/utils');
- var assert = require('assert');
- var mongo;
- try {
- mongo = new require('mongodb');
- } catch (e) {}
- describe('lib/utils', function() {
- describe('clone', function() {
- it('clones constructors named ObjectId', function(done) {
- function ObjectId (id) {
- this.id = id;
- }
- var o1 = new ObjectId('1234');
- var o2 = utils.clone(o1);
- assert.ok(o2 instanceof ObjectId);
- done();
- });
- it('clones constructors named ObjectID', function(done) {
- function ObjectID (id) {
- this.id = id;
- }
- var o1 = new ObjectID('1234');
- var o2 = utils.clone(o1);
- assert.ok(o2 instanceof ObjectID);
- done();
- });
- it('does not clone constructors named ObjectIdd', function(done) {
- function ObjectIdd (id) {
- this.id = id;
- }
- var o1 = new ObjectIdd('1234');
- var o2 = utils.clone(o1);
- assert.ok(!(o2 instanceof ObjectIdd));
- done();
- });
- it('optionally clones ObjectId constructors using its clone method', function(done) {
- function ObjectID (id) {
- this.id = id;
- this.cloned = false;
- }
- ObjectID.prototype.clone = function () {
- var ret = new ObjectID(this.id);
- ret.cloned = true;
- return ret;
- }
- var id = 1234;
- var o1 = new ObjectID(id);
- assert.equal(id, o1.id);
- assert.equal(false, o1.cloned);
- var o2 = utils.clone(o1);
- assert.ok(o2 instanceof ObjectID);
- assert.equal(id, o2.id);
- assert.ok(o2.cloned);
- done();
- });
- it('clones mongodb.ReadPreferences', function (done) {
- if (!mongo) return done();
- var tags = [
- {dc: 'tag1'}
- ];
- var prefs = [
- new mongo.ReadPreference("primary"),
- new mongo.ReadPreference(mongo.ReadPreference.PRIMARY_PREFERRED),
- new mongo.ReadPreference("primary", tags),
- mongo.ReadPreference("primary", tags)
- ];
- var prefsCloned = utils.clone(prefs);
- for (var i = 0; i < prefsCloned.length; i++) {
- assert.notEqual(prefs[i], prefsCloned[i]);
- assert.ok(prefsCloned[i] instanceof mongo.ReadPreference);
- assert.ok(prefsCloned[i].isValid());
- if (prefs[i].tags) {
- assert.ok(prefsCloned[i].tags);
- assert.notEqual(prefs[i].tags, prefsCloned[i].tags);
- assert.notEqual(prefs[i].tags[0], prefsCloned[i].tags[0]);
- } else {
- assert.equal(prefsCloned[i].tags, null);
- }
- }
- done();
- });
- it('clones mongodb.Binary', function(done){
- if (!mongo) return done();
- var buf = new Buffer('hi');
- var binary= new mongo.Binary(buf, 2);
- var clone = utils.clone(binary);
- assert.equal(binary.sub_type, clone.sub_type);
- assert.equal(String(binary.buffer), String(buf));
- assert.ok(binary !== clone);
- done();
- })
- it('handles objects with no constructor', function(done) {
- var name ='335';
- var o = Object.create(null);
- o.name = name;
- var clone;
- assert.doesNotThrow(function() {
- clone = utils.clone(o);
- });
- assert.equal(name, clone.name);
- assert.ok(o != clone);
- done();
- });
- it('handles buffers', function(done){
- var buff = new Buffer(10);
- buff.fill(1);
- var clone = utils.clone(buff);
- for (var i = 0; i < buff.length; i++) {
- assert.equal(buff[i], clone[i]);
- }
- done();
- });
- });
- });