UNPKG

nestjs-request-deduplication

Version:

[![npm version](https://badge.fury.io/js/nestjs-request-deduplication.svg)](https://www.npmjs.com/package/nestjs-request-deduplication) [![CI](https://github.com/daniyel/nestjs-request-deduplication/actions/workflows/pr-checks.yml/badge.svg)](https://gith

72 lines (71 loc) 3.38 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const tslib_1 = require("tslib"); const redis_adapter_1 = require("./redis.adapter"); const keyv_1 = tslib_1.__importDefault(require("keyv")); const redis_1 = tslib_1.__importDefault(require("@keyv/redis")); jest.mock('keyv'); jest.mock('@keyv/redis'); describe('RedisAdapter', () => { let adapter; const mockOptions = { redisConfig: { url: 'localhost:6379', }, }; beforeEach(() => { jest.clearAllMocks(); adapter = new redis_adapter_1.RedisAdapter(mockOptions); }); describe('init', () => { it('should initialize keyv with redis store', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { yield adapter.init(); expect(redis_1.default).toHaveBeenCalledWith(mockOptions.redisConfig); expect(keyv_1.default).toHaveBeenCalledWith({ store: expect.any(redis_1.default), namespace: 'request-deduplication', }); })); }); describe('get', () => { it('should retrieve value from storage', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const mockValue = { data: 'test' }; const mockGet = jest.fn().mockResolvedValue(mockValue); keyv_1.default.mockImplementation(() => ({ get: mockGet })); yield adapter.init(); const result = yield adapter.get('test-key'); expect(mockGet).toHaveBeenCalledWith('test-key'); expect(result).toEqual(mockValue); })); it('should throw error when key not found', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const mockGet = jest.fn().mockResolvedValue(undefined); keyv_1.default.mockImplementation(() => ({ get: mockGet })); yield adapter.init(); yield expect(adapter.get('non-existent-key')).rejects.toThrow('Key non-existent-key not found'); })); it('should handle get errors', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const mockGet = jest.fn().mockRejectedValue(new Error('Redis connection error')); keyv_1.default.mockImplementation(() => ({ get: mockGet })); yield adapter.init(); yield expect(adapter.get('test-key')).rejects.toThrow('Redis connection error'); })); }); describe('set', () => { it('should store value with ttl', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const mockSet = jest.fn().mockResolvedValue(undefined); keyv_1.default.mockImplementation(() => ({ set: mockSet })); yield adapter.init(); yield adapter.set('test-key', 'test-value', 1000); expect(mockSet).toHaveBeenCalledWith('test-key', 'test-value', 1000); })); }); describe('delete', () => { it('should delete value from storage', () => tslib_1.__awaiter(void 0, void 0, void 0, function* () { const mockDelete = jest.fn().mockResolvedValue(undefined); keyv_1.default.mockImplementation(() => ({ delete: mockDelete })); yield adapter.init(); yield adapter.delete('test-key'); expect(mockDelete).toHaveBeenCalledWith('test-key'); })); }); });