@linkedmink/multilevel-aging-cache
Version:
Package provides an interface to cache and persist data to Redis, MongoDB, memory
37 lines (29 loc) • 1.33 kB
text/typescript
import { OverwriteAlwaysDeleteStrategy } from 'cache/OverwriteAlwaysDeleteStrategy';
import { StorageHierarchy } from 'storage/StorageHierarchy';
import { MockStorageHierarchy, MockAgedQueue } from '../Mocks';
import { AgingCacheWriteStatus } from 'cache/IAgingCache';
import { setGlobalMockTransport } from '../MockTransport';
describe(OverwriteAlwaysDeleteStrategy.name, () => {
let hierarchyMock: StorageHierarchy<string, string>;
let evictQueueMock: MockAgedQueue<string>;
let strategy: OverwriteAlwaysDeleteStrategy<string, string>;
beforeAll(() => {
setGlobalMockTransport();
});
beforeEach(() => {
hierarchyMock = new MockStorageHierarchy() as unknown as StorageHierarchy<string, string>;
evictQueueMock = new MockAgedQueue<string>();
strategy = new OverwriteAlwaysDeleteStrategy(hierarchyMock, evictQueueMock);
});
test('should return instance when constructor parameters are valid', () => {
expect(strategy).toBeDefined();
});
test('should execute delete unconditionally when delete() is called', () => {
const testKey = 'TEST_KEY';
const promise = strategy.delete(testKey, false);
return promise.then(status => {
expect(status).toEqual(AgingCacheWriteStatus.Success);
expect(hierarchyMock.deleteAtLevel).toBeCalledWith(testKey);
});
});
});