60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| (function () {
 | |
|   "use strict";
 | |
| 
 | |
|   var assert = require('assert')
 | |
|     , fs = require('fs')
 | |
|     , Storage = require('../')
 | |
|     , dbPath = './db.json'
 | |
|     ;
 | |
| 
 | |
|   function runTest(storage) {
 | |
|     // should not return prototype properties
 | |
|     assert.strictEqual(null, storage.getItem('key'));
 | |
|     
 | |
|     assert.strictEqual(0, Object.keys(storage).length);
 | |
|     assert.strictEqual(0, storage.length);
 | |
| 
 | |
|     // can't make assuptions about key positioning
 | |
|     storage.setItem('a', 1);
 | |
|     assert.strictEqual(storage.key(0), 'a');
 | |
| 
 | |
|     storage.setItem('b', '2');
 | |
|     assert.strictEqual(storage.getItem('a'), 1);
 | |
|     assert.strictEqual(storage.getItem('b'), '2');
 | |
|     assert.strictEqual(storage.length, 2);
 | |
| 
 | |
|     assert.strictEqual(storage['c'], undefined);
 | |
|     assert.strictEqual(storage.getItem('c'), null);
 | |
| 
 | |
|     storage.setItem('c');
 | |
|     assert.strictEqual(storage.getItem('c'), null);
 | |
|     assert.strictEqual(storage.length, 3);
 | |
| 
 | |
|     storage.removeItem('c');
 | |
|     assert.strictEqual(storage.getItem('c'), null);
 | |
|     assert.strictEqual(storage.length, 2);
 | |
| 
 | |
|     storage.clear();
 | |
|     assert.strictEqual(storage.getItem('a'), null);
 | |
|     assert.strictEqual(storage.getItem('b'), null);
 | |
|     assert.strictEqual(storage.length, 0);
 | |
|   }
 | |
| 
 | |
|   function runAll() {
 | |
|     var localStorage = new Storage(dbPath, { strict: false, ws: '  ' })
 | |
|       , sessionStorage = new Storage(null, { strict: false })
 | |
|       ;
 | |
| 
 | |
|     runTest(sessionStorage);
 | |
|     runTest(localStorage);
 | |
| 
 | |
|     localStorage.setItem('a', 1);
 | |
|     setTimeout(function () {
 | |
|       assert.deepEqual({ a: 1 }, JSON.parse(fs.readFileSync(dbPath)));
 | |
|       console.log('All tests passed');
 | |
|     }, 100);
 | |
|   }
 | |
| 
 | |
|   fs.unlink(dbPath, runAll);
 | |
| }());
 |