From 74099d1d8c24dfd1f6050ff4ad2584374ca67530 Mon Sep 17 00:00:00 2001 From: barisusakli Date: Thu, 15 Jan 2015 14:27:41 -0500 Subject: [PATCH] proper set tests with before hooks --- tests/database/sets.js | 117 ++++++++++++++++++++++++++++------------- 1 file changed, 81 insertions(+), 36 deletions(-) diff --git a/tests/database/sets.js b/tests/database/sets.js index b93d9a90e7..c109f62039 100644 --- a/tests/database/sets.js +++ b/tests/database/sets.js @@ -1,46 +1,51 @@ 'use strict'; -/*global require, after*/ +/*global require, after, before*/ -var assert = require('assert'), +var async = require('async'), + assert = require('assert'), db = require('../mocks/databasemock'); describe('Set methods', function() { describe('setAdd()', function() { it('should add to a set', function(done) { - db.setAdd('testSet', 5, function(err) { + db.setAdd('testSet1', 5, function(err) { assert.equal(err, null); - assert.equal(arguments.length, 1, 'arguments.length error'); + assert.equal(arguments.length, 1); done(); }); }); it('should add an array to a set', function(done) { - db.setAdd('testSet', [1, 2, 3, 4], function(err) { + db.setAdd('testSet1', [1, 2, 3, 4], function(err) { assert.equal(err, null); - assert.equal(arguments.length, 1, 'arguments.length error'); + assert.equal(arguments.length, 1); done(); }); }); }); describe('getSetMembers()', function() { + before(function(done) { + db.setAdd('testSet2', [1,2,3,4,5], done); + }); + it('should return an empty set', function(done) { db.getSetMembers('doesnotexist', function(err, set) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); - assert.equal(Array.isArray(set), true, 'set is not an array'); - assert.equal(set.length, 0, 'set not empty'); + assert.equal(arguments.length, 2); + assert.equal(Array.isArray(set), true); + assert.equal(set.length, 0); done(); }); }); it('should return a set with all elements', function(done) { - db.getSetMembers('testSet', function(err, set) { + db.getSetMembers('testSet2', function(err, set) { assert.equal(err, null); - assert.equal(set.length, 5, 'set is empty'); + assert.equal(set.length, 5); set.forEach(function(value) { - assert.notEqual(['1', '2', '3', '4', '5'].indexOf(value), -1, 'set does not have correct elements'); + assert.notEqual(['1', '2', '3', '4', '5'].indexOf(value), -1); }); done(); @@ -52,40 +57,48 @@ describe('Set methods', function() { it('should add to multiple sets', function(done) { db.setsAdd(['set1', 'set2'], 'value', function(err) { assert.equal(err, null); - assert.equal(arguments.length, 1, 'arguments.length error'); + assert.equal(arguments.length, 1); done(); }); }); }); describe('getSetsMembers()', function() { + before(function(done) { + db.setsAdd(['set3', 'set4'], 'value', done); + }); + it('should return members of two sets', function(done) { - db.getSetsMembers(['set1', 'set2'], function(err, sets) { + db.getSetsMembers(['set3', 'set4'], function(err, sets) { assert.equal(err, null); - assert.equal(Array.isArray(sets), true, 'sets is not an array'); - assert.equal(arguments.length, 2, 'arguments.length error'); - assert.equal(Array.isArray(sets[0]) && Array.isArray(sets[1]), true, 'sets not arrays'); - assert.strictEqual(sets[0][0], 'value', 'set value not correct'); - assert.strictEqual(sets[1][0], 'value', 'set value not correct'); + assert.equal(Array.isArray(sets), true); + assert.equal(arguments.length, 2); + assert.equal(Array.isArray(sets[0]) && Array.isArray(sets[1]), true); + assert.strictEqual(sets[0][0], 'value'); + assert.strictEqual(sets[1][0], 'value'); done(); }); }); }); describe('isSetMember()', function() { + before(function(done) { + db.setAdd('testSet3', 5, done); + }); + it('should return false if element is not member of set', function(done) { - db.isSetMember('testSet', 10, function(err, isMember) { + db.isSetMember('testSet3', 10, function(err, isMember) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.equal(isMember, false); done(); }); }); it('should return true if element is a member of set', function(done) { - db.isSetMember('testSet', 5, function(err, isMember) { + db.isSetMember('testSet3', 5, function(err, isMember) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.equal(isMember, true); done(); }); @@ -93,10 +106,14 @@ describe('Set methods', function() { }); describe('isSetMembers()', function() { + before(function(done) { + db.setAdd('testSet4', [1, 2, 3, 4, 5], done); + }); + it('should return an array of booleans', function(done) { - db.isSetMembers('testSet', ['1', '2', '10', '3'], function(err, members) { + db.isSetMembers('testSet4', ['1', '2', '10', '3'], function(err, members) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.equal(Array.isArray(members), true); assert.deepEqual(members, [true, true, false, true]); done(); @@ -105,10 +122,14 @@ describe('Set methods', function() { }); describe('isMemberOfSets()', function() { + before(function(done) { + db.setsAdd(['set1', 'set2'], 'value', done); + }); + it('should return an array of booleans', function(done) { - db.isMemberOfSets(['set1', 'testSet', 'set2', 'doesnotexist'], 'value', function(err, members) { + db.isMemberOfSets(['set1', 'testSet1', 'set2', 'doesnotexist'], 'value', function(err, members) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.equal(Array.isArray(members), true); assert.deepEqual(members, [true, false, true, false]); done(); @@ -117,10 +138,14 @@ describe('Set methods', function() { }); describe('setCount()', function() { + before(function(done) { + db.setAdd('testSet5', [1,2,3,4,5], done); + }); + it('should return the element count of set', function(done) { db.setCount('testSet', function(err, count) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.strictEqual(count, 5); done(); }); @@ -128,10 +153,18 @@ describe('Set methods', function() { }); describe('setsCount()', function() { + before(function(done) { + async.parallel([ + async.apply(db.setAdd, 'set4', [1,2,3,4,5]), + async.apply(db.setAdd, 'set5', 1), + async.apply(db.setAdd, 'set6', 2) + ], done); + }); + it('should return the element count of sets', function(done) { - db.setsCount(['testSet', 'set1', 'set2', 'doesnotexist'], function(err, counts) { + db.setsCount(['set4', 'set5', 'set6', 'doesnotexist'], function(err, counts) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); assert.equal(Array.isArray(counts), true); assert.deepEqual(counts, [5, 1, 1, 0]); done(); @@ -140,12 +173,16 @@ describe('Set methods', function() { }); describe('setRemove()', function() { + before(function(done) { + db.setAdd('testSet6', [1, 2], done); + }); + it('should remove a element from set', function(done) { - db.setRemove('testSet', '2', function(err) { + db.setRemove('testSet6', '2', function(err) { assert.equal(err, null); - assert.equal(arguments.length, 1, 'arguments.length error'); + assert.equal(arguments.length, 1); - db.isSetMember('testSet', '2', function(err, isMember) { + db.isSetMember('testSet6', '2', function(err, isMember) { assert.equal(err, null); assert.equal(isMember, false); done(); @@ -155,10 +192,14 @@ describe('Set methods', function() { }); describe('setsRemove()', function() { + before(function(done) { + db.setsAdd(['set1', 'set2'], 'value', done); + }); + it('should remove a element from multiple sets', function(done) { db.setsRemove(['set1', 'set2'], 'value', function(err) { assert.equal(err, null); - assert.equal(arguments.length, 1, 'arguments.length error'); + assert.equal(arguments.length, 1); db.isMemberOfSets(['set1', 'set2'], 'value', function(err, members) { assert.equal(err, null); assert.deepEqual(members, [false, false]); @@ -169,10 +210,14 @@ describe('Set methods', function() { }); describe('setRemoveRandom()', function() { + before(function(done) { + db.setAdd('testSet7', [1,2,3,4,5], done); + }); + it('should remove a random element from set', function(done) { - db.setRemoveRandom('testSet', function(err, element) { + db.setRemoveRandom('testSet7', function(err, element) { assert.equal(err, null); - assert.equal(arguments.length, 2, 'arguments.length error'); + assert.equal(arguments.length, 2); db.isSetMember('testSet', element, function(err, ismember) { assert.equal(err, null);