| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 'use strict'; | 
					
						
							| 
									
										
										
										
											2017-02-17 21:55:19 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-17 20:20:42 -07:00
										 |  |  | var	async = require('async'); | 
					
						
							|  |  |  | var assert = require('assert'); | 
					
						
							|  |  |  | var db = require('../mocks/databasemock'); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | describe('Hash methods', function () { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 	var testData = { | 
					
						
							|  |  |  | 		name: 'baris', | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		lastname: 'usakli', | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 		age: 99, | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	beforeEach(function (done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		db.setObject('hashTestObject', testData, done); | 
					
						
							| 
									
										
										
										
											2015-01-12 18:52:41 -05:00
										 |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2015-01-12 18:35:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('setObject()', function () { | 
					
						
							|  |  |  | 		it('should create a object', function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('testObject1', { foo: 'baris', bar: 99 }, function (err) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2016-11-23 17:15:31 +03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		it('should do nothing if key is falsy', function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('', { foo: 1, derp: 2 }, function (err) { | 
					
						
							| 
									
										
										
										
											2016-11-23 17:15:31 +03:00
										 |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 		it('should do nothing if data is falsy', function (done) { | 
					
						
							|  |  |  | 			db.setObject('falsy', null, function (err) { | 
					
						
							|  |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				db.exists('falsy', function (err, exists) { | 
					
						
							|  |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					assert.equal(exists, false); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2017-04-14 13:58:32 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | 		it('should not error if a key is empty string', function (done) { | 
					
						
							|  |  |  | 			db.setObject('emptyField', {'': '', b: 1}, function (err) { | 
					
						
							|  |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				db.getObject('emptyField', function (err, data) { | 
					
						
							|  |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					console.log(data); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('setObjectField()', function () { | 
					
						
							|  |  |  | 		it('should create a new object with field', function (done) { | 
					
						
							|  |  |  | 			db.setObjectField('testObject2', 'name', 'ginger', function (err) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should add a new field to an object', function (done) { | 
					
						
							|  |  |  | 			db.setObjectField('testObject2', 'type', 'cat', function (err) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObject()', function () { | 
					
						
							|  |  |  | 		it('should return falsy if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.getObject('doesnotexist', function (err, data) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(!!data, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should retrieve an object', function (done) { | 
					
						
							|  |  |  | 			db.getObject('hashTestObject', function (err, data) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(data.name, testData.name); | 
					
						
							|  |  |  | 				assert.equal(data.age, testData.age); | 
					
						
							|  |  |  | 				assert.equal(data.lastname, 'usakli'); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjects()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 15:42:55 -05:00
										 |  |  | 			async.parallel([ | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 				async.apply(db.setObject, 'testObject4', { name: 'baris' }), | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 				async.apply(db.setObjectField, 'testObject5', 'name', 'ginger'), | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 			], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return 3 objects with correct data', function (done) { | 
					
						
							|  |  |  | 			db.getObjects(['testObject4', 'testObject5', 'doesnotexist'], function (err, objects) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(objects) && objects.length === 3, true); | 
					
						
							|  |  |  | 				assert.equal(objects[0].name, 'baris'); | 
					
						
							|  |  |  | 				assert.equal(objects[1].name, 'ginger'); | 
					
						
							|  |  |  | 				assert.equal(!!objects[2], false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjectField()', function () { | 
					
						
							|  |  |  | 		it('should return falsy if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.getObjectField('doesnotexist', 'fieldName', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(!!value, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return falsy if field does not exist', function (done) { | 
					
						
							|  |  |  | 			db.getObjectField('hashTestObject', 'fieldName', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(!!value, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should get an objects field', function (done) { | 
					
						
							|  |  |  | 			db.getObjectField('hashTestObject', 'lastname', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(value, 'usakli'); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjectFields()', function () { | 
					
						
							|  |  |  | 		it('should return an object with falsy values', function (done) { | 
					
						
							|  |  |  | 			db.getObjectFields('doesnotexist', ['field1', 'field2'], function (err, object) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(typeof object, 'object'); | 
					
						
							|  |  |  | 				assert.equal(!!object.field1, false); | 
					
						
							|  |  |  | 				assert.equal(!!object.field2, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return an object with correct fields', function (done) { | 
					
						
							|  |  |  | 			db.getObjectFields('hashTestObject', ['lastname', 'age', 'field1'], function (err, object) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(typeof object, 'object'); | 
					
						
							|  |  |  | 				assert.equal(object.lastname, 'usakli'); | 
					
						
							|  |  |  | 				assert.equal(object.age, 99); | 
					
						
							|  |  |  | 				assert.equal(!!object.field1, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjectsFields()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2015-01-15 15:47:01 -05:00
										 |  |  | 			async.parallel([ | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 				async.apply(db.setObject, 'testObject8', { name: 'baris', age: 99 }), | 
					
						
							|  |  |  | 				async.apply(db.setObject, 'testObject9', { name: 'ginger', age: 3 }), | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 			], done); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return an array of objects with correct values', function (done) { | 
					
						
							|  |  |  | 			db.getObjectsFields(['testObject8', 'testObject9', 'doesnotexist'], ['name', 'age'], function (err, objects) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(objects), true); | 
					
						
							|  |  |  | 				assert.equal(objects.length, 3); | 
					
						
							|  |  |  | 				assert.equal(objects[0].name, 'baris'); | 
					
						
							|  |  |  | 				assert.equal(objects[0].age, 99); | 
					
						
							|  |  |  | 				assert.equal(objects[1].name, 'ginger'); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 				assert.equal(objects[1].age, 3); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(!!objects[2].name, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjectKeys()', function () { | 
					
						
							|  |  |  | 		it('should return an empty array for a object that does not exist', function (done) { | 
					
						
							|  |  |  | 			db.getObjectKeys('doesnotexist', function (err, keys) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:29:11 -05:00
										 |  |  | 				assert.equal(Array.isArray(keys) && keys.length === 0, true); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return an array of keys for the object\'s fields', function (done) { | 
					
						
							|  |  |  | 			db.getObjectKeys('hashTestObject', function (err, keys) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(keys) && keys.length === 3, true); | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 				keys.forEach(function (key) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:25:32 -05:00
										 |  |  | 					assert.notEqual(['name', 'lastname', 'age'].indexOf(key), -1); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('getObjectValues()', function () { | 
					
						
							|  |  |  | 		it('should return an empty array for a object that does not exist', function (done) { | 
					
						
							|  |  |  | 			db.getObjectValues('doesnotexist', function (err, values) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(values) && values.length === 0, true); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return an array of values for the object\'s fields', function (done) { | 
					
						
							|  |  |  | 			db.getObjectValues('hashTestObject', function (err, values) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(Array.isArray(values) && values.length === 3, true); | 
					
						
							| 
									
										
										
										
											2016-08-14 19:12:33 +03:00
										 |  |  | 				assert.deepEqual(['baris', 'usakli', 99].sort(), values.sort()); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('isObjectField()', function () { | 
					
						
							|  |  |  | 		it('should return false if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.isObjectField('doesnotexist', 'field1', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(value, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return false if field does not exist', function (done) { | 
					
						
							|  |  |  | 			db.isObjectField('hashTestObject', 'field1', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(value, false); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return true if field exists', function (done) { | 
					
						
							|  |  |  | 			db.isObjectField('hashTestObject', 'name', function (err, value) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(value, true); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-19 14:13:29 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('isObjectFields()', function () { | 
					
						
							|  |  |  | 		it('should return an array of false if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.isObjectFields('doesnotexist', ['field1', 'field2'], function (err, values) { | 
					
						
							| 
									
										
										
										
											2015-01-19 14:13:29 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.deepEqual(values, [false, false]); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should return false if field does not exist', function (done) { | 
					
						
							|  |  |  | 			db.isObjectFields('hashTestObject', ['name', 'age', 'field1'], function (err, values) { | 
					
						
							| 
									
										
										
										
											2015-01-19 14:13:29 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.deepEqual(values, [true, true, false]); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('deleteObjectField()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('testObject10', { foo: 'bar', delete: 'this', delete1: 'this', delete2: 'this' }, done); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should delete an objects field', function (done) { | 
					
						
							|  |  |  | 			db.deleteObjectField('testObject10', 'delete', function (err) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 				db.isObjectField('testObject10', 'delete', function (err, isField) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 					assert.equal(err, null); | 
					
						
							|  |  |  | 					assert.equal(isField, false); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2015-02-17 22:22:06 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should delete multiple fields of the object', function (done) { | 
					
						
							|  |  |  | 			db.deleteObjectFields('testObject10', ['delete1', 'delete2'], function (err) { | 
					
						
							| 
									
										
										
										
											2015-02-17 22:22:06 -05:00
										 |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 1); | 
					
						
							|  |  |  | 				async.parallel({ | 
					
						
							|  |  |  | 					delete1: async.apply(db.isObjectField, 'testObject10', 'delete1'), | 
					
						
							| 
									
										
										
										
											2017-02-17 19:31:21 -07:00
										 |  |  | 					delete2: async.apply(db.isObjectField, 'testObject10', 'delete2'), | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 				}, function (err, results) { | 
					
						
							| 
									
										
										
										
											2015-02-17 22:22:06 -05:00
										 |  |  | 					assert.ifError(err); | 
					
						
							|  |  |  | 					assert.equal(results.delete1, false); | 
					
						
							|  |  |  | 					assert.equal(results.delete2, false); | 
					
						
							|  |  |  | 					done(); | 
					
						
							|  |  |  | 				}); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('incrObjectField()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('testObject11', { age: 99 }, done); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should set an objects field to 1 if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.incrObjectField('testObject12', 'field1', function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(newValue, 1); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should increment an object fields by 1 and return it', function (done) { | 
					
						
							|  |  |  | 			db.incrObjectField('testObject11', 'age', function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:41:13 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(newValue, 100); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('decrObjectField()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('testObject13', { age: 99 }, done); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should set an objects field to -1 if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.decrObjectField('testObject14', 'field1', function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(newValue, -1); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should decrement an object fields by 1 and return it', function (done) { | 
					
						
							|  |  |  | 			db.decrObjectField('testObject13', 'age', function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				assert.equal(err, null); | 
					
						
							|  |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 				assert.equal(newValue, 98); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	describe('incrObjectFieldBy()', function () { | 
					
						
							|  |  |  | 		before(function (done) { | 
					
						
							| 
									
										
										
										
											2017-02-18 12:30:49 -07:00
										 |  |  | 			db.setObject('testObject15', { age: 100 }, done); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should set an objects field to 5 if object does not exist', function (done) { | 
					
						
							|  |  |  | 			db.incrObjectFieldBy('testObject16', 'field1', 5, function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2016-09-23 13:42:14 +03:00
										 |  |  | 				assert.ifError(err); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							|  |  |  | 				assert.equal(newValue, 5); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should increment an object fields by passed in value and return it', function (done) { | 
					
						
							|  |  |  | 			db.incrObjectFieldBy('testObject15', 'age', 11, function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2016-09-23 13:42:14 +03:00
										 |  |  | 				assert.ifError(err); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				assert.equal(arguments.length, 2); | 
					
						
							| 
									
										
										
										
											2015-01-15 14:58:29 -05:00
										 |  |  | 				assert.equal(newValue, 111); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2016-09-23 13:42:14 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 		it('should increment an object fields by passed in value and return it', function (done) { | 
					
						
							|  |  |  | 			db.incrObjectFieldBy('testObject15', 'age', '11', function (err, newValue) { | 
					
						
							| 
									
										
										
										
											2016-09-23 13:42:14 +03:00
										 |  |  | 				assert.ifError(err); | 
					
						
							|  |  |  | 				assert.equal(newValue, 122); | 
					
						
							|  |  |  | 				done(); | 
					
						
							|  |  |  | 			}); | 
					
						
							|  |  |  | 		}); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:50:10 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-10-13 11:43:39 +02:00
										 |  |  | 	after(function (done) { | 
					
						
							| 
									
										
										
										
											2016-10-17 23:34:09 +03:00
										 |  |  | 		db.emptydb(done); | 
					
						
							| 
									
										
										
										
											2014-12-30 18:07:06 -05:00
										 |  |  | 	}); | 
					
						
							|  |  |  | }); |