Skip to content

Instantly share code, notes, and snippets.

@lucasraziel
Created May 18, 2022 23:29
Show Gist options
  • Save lucasraziel/92653adef8f8a15f0f9f80f115cce8f0 to your computer and use it in GitHub Desktop.
Save lucasraziel/92653adef8f8a15f0f9f80f115cce8f0 to your computer and use it in GitHub Desktop.
RedisCacheProvider.ts in __tests__ in Usando NPM Package para criar uma Arquitetura Limpa - Parte 3
import { Data } from '@fvsystem/cache-template';
import RedisCacheProvider from '../src/provider/RedisCacheProvider';
jest.mock('ioredis');
let redisCacheProvider: RedisCacheProvider;
describe('RedisCacheProvider', () => {
beforeEach(() => {
redisCacheProvider = new RedisCacheProvider({});
jest.resetAllMocks();
});
it('should be abble to add and recover value', async () => {
const data: Data<number> = {
key: 'test',
data: 1,
};
await redisCacheProvider.save(data, 'app:');
const dataRecovered = await redisCacheProvider.recover<number>(
'test',
'app:'
);
expect(dataRecovered).toBe(1);
});
it('should be remove value after some time', async () => {
const data: Data<number> = {
key: 'test',
data: 1,
};
jest.useFakeTimers();
await redisCacheProvider.save(data, 'app:', { ttlInSeconds: 3 });
const dataRecovered = await redisCacheProvider.recover<number>(
'test',
'app:'
);
expect(dataRecovered).toBe(1);
jest.runAllTimers();
const newDataRecovered = await redisCacheProvider.recover<number>(
'test',
'app:'
);
expect(newDataRecovered).toBe(null);
});
it('should invalidate Key', async () => {
const value: Data<number> = {
key: 'test',
data: 1,
};
await redisCacheProvider.save(value, 'app:');
const dataRecovered = await redisCacheProvider.recover<number>(
'test',
'app:'
);
expect(dataRecovered).toEqual(1);
await redisCacheProvider.invalidate('test', 'app:');
const newDataRecovered = await redisCacheProvider.recover<number>(
'test',
'app:'
);
expect(newDataRecovered).toBe(null);
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment