UNPKG

@linkedmink/multilevel-aging-cache

Version:

Package provides an interface to cache and persist data to Redis, MongoDB, memory

65 lines (48 loc) 1.9 kB
import { MemoryStorageProvider } from 'storage/MemoryStorageProvider'; import { setGlobalMockTransport } from '../MockTransport'; describe(MemoryStorageProvider.name, () => { let provider: MemoryStorageProvider<string, string>; beforeAll(() => { setGlobalMockTransport(); }); beforeEach(() => { provider = new MemoryStorageProvider(); }); test('should return instance when constructor parameters are valid', () => { expect(provider).toBeDefined(); }); test('should set a key/value when set is called', () => { const testKey = 'TEST_KEY'; const testValue = { value: 'TEST_VALUE', age: 0 }; provider.set(testKey, testValue); return provider.get(testKey).then(retrieved => { expect(retrieved).toEqual(testValue); }); }); test('should delete a key/value when delete is called', () => { const testKey = 'TEST_KEY'; const testValue = { value: 'TEST_VALUE', age: 0 }; provider.set(testKey, testValue); provider.delete(testKey); return provider.get(testKey).then(retrieved => { expect(retrieved).toBeNull(); }); }); test('should return keys when keys is called', () => { const testKeys = ['TEST_KEY1', 'TEST_KEY2', 'TEST_KEY3', 'TEST_KEY4']; const testValue = { value: 'TEST_VALUE', age: 0 }; testKeys.forEach(key => provider.set(key, testValue)); return provider.keys().then(keys => { expect(keys.length).toEqual(testKeys.length); keys.forEach(key => expect(testKeys.includes(key)).toEqual(true)); }); }); test('should return number of keys when size is called', () => { const testKeys = ['TEST_KEY1', 'TEST_KEY2', 'TEST_KEY3', 'TEST_KEY4']; const testValue = { value: 'TEST_VALUE', age: 0 }; testKeys.forEach(key => provider.set(key, testValue)); return provider.size().then(size => { expect(size).toEqual(testKeys.length); }); }); });