| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 'use strict'; | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | /*global require, after, before*/ | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | var	async = require('async'), | 
					
						
							|  |  |  | 	assert = require('assert'), | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 	db = require('../mocks/databasemock'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | describe('Set methods', function() { | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('setAdd()', function() { | 
					
						
							|  |  |  | 		it('should add to a set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.setAdd('testSet1', 5, function(err) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		it('should add an array to a set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.setAdd('testSet1', [1, 2, 3, 4], function(err) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('getSetMembers()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet2', [1,2,3,4,5], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 		it('should return an empty set', function(done) { | 
					
						
							|  |  |  | 			db.getSetMembers('doesnotexist', function(err, set) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(set), true); | 
					
						
							|  |  |  | 				assert.equal(set.length, 0); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 		it('should return a set with all elements', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.getSetMembers('testSet2', function(err, set) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(set.length, 5); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				set.forEach(function(value) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 					assert.notEqual(['1', '2', '3', '4', '5'].indexOf(value), -1); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('setsAdd()', function() { | 
					
						
							|  |  |  | 		it('should add to multiple sets', function(done) { | 
					
						
							|  |  |  | 			db.setsAdd(['set1', 'set2'], 'value', function(err) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 	describe('getSetsMembers()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setsAdd(['set3', 'set4'], 'value', done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 		it('should return members of two sets', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.getSetsMembers(['set3', 'set4'], function(err, sets) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				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'); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 	describe('isSetMember()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet3', 5, done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 		it('should return false if element is not member of set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.isSetMember('testSet3', 10, function(err, isMember) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				assert.equal(isMember, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		it('should return true if element is a member of set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.isSetMember('testSet3', 5, function(err, isMember) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				assert.equal(isMember, true); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 	describe('isSetMembers()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet4', [1, 2, 3, 4, 5], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 		it('should return an array of booleans', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.isSetMembers('testSet4', ['1', '2', '10', '3'], function(err, members) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:07:12 -05:00
										 |  |  | 				assert.equal(Array.isArray(members), true); | 
					
						
							|  |  |  | 				assert.deepEqual(members, [true, true, false, true]); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 	describe('isMemberOfSets()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setsAdd(['set1', 'set2'], 'value', done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:14:41 -05:00
										 |  |  | 		it('should return an array of booleans', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.isMemberOfSets(['set1', 'testSet1', 'set2', 'doesnotexist'], 'value', function(err, members) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:14:41 -05:00
										 |  |  | 				assert.equal(Array.isArray(members), true); | 
					
						
							|  |  |  | 				assert.deepEqual(members, [true, false, true, false]); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 	describe('setCount()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet5', [1,2,3,4,5], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 		it('should return the element count of set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 15:42:55 -05:00
										 |  |  | 			db.setCount('testSet5', function(err, count) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.strictEqual(count, 5); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('setsCount()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			async.parallel([ | 
					
						
							| 
									
										
										
										
											2015-01-15 15:42:55 -05:00
										 |  |  | 				async.apply(db.setAdd, 'set5', [1,2,3,4,5]), | 
					
						
							|  |  |  | 				async.apply(db.setAdd, 'set6', 1), | 
					
						
							|  |  |  | 				async.apply(db.setAdd, 'set7', 2) | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 		it('should return the element count of sets', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 15:42:55 -05:00
										 |  |  | 			db.setsCount(['set5', 'set6', 'set7', 'doesnotexist'], function(err, counts) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:20:11 -05:00
										 |  |  | 				assert.equal(Array.isArray(counts), true); | 
					
						
							|  |  |  | 				assert.deepEqual(counts, [5, 1, 1, 0]); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:14:41 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 	describe('setRemove()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet6', [1, 2], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 		it('should remove a element from set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.setRemove('testSet6', '2', function(err) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				db.isSetMember('testSet6', '2', function(err, isMember) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 					assert.equal(err, null); | 
					
						
							|  |  |  | 					assert.equal(isMember, false); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('setsRemove()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setsAdd(['set1', 'set2'], 'value', done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 		it('should remove a element from multiple sets', function(done) { | 
					
						
							|  |  |  | 			db.setsRemove(['set1', 'set2'], 'value', function(err) { | 
					
						
							|  |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 				db.isMemberOfSets(['set1', 'set2'], 'value', function(err, members) { | 
					
						
							|  |  |  | 					assert.equal(err, null); | 
					
						
							|  |  |  | 					assert.deepEqual(members, [false, false]); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	describe('setRemoveRandom()', function() { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 		before(function(done) { | 
					
						
							|  |  |  | 			db.setAdd('testSet7', [1,2,3,4,5], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 		it('should remove a random element from set', function(done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 			db.setRemoveRandom('testSet7', function(err, element) { | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:27:41 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-29 18:28:59 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 				db.isSetMember('testSet', element, function(err, ismember) { | 
					
						
							|  |  |  | 					assert.equal(err, null); | 
					
						
							|  |  |  | 					assert.equal(ismember, false); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-29 17:55:30 -05:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	after(function() { | 
					
						
							|  |  |  | 		db.flushdb(); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | }); |