xpeditis2.0/apps/backend/test/integration/redis-cache.spec.ts
David 3434fa494d
Some checks failed
CD Preprod / Security gate (push) Successful in 29s
CD Preprod / Backend — Lint (push) Successful in 1m5s
CD Preprod / Frontend — Lint & Type-check (push) Successful in 1m14s
CD Preprod / Backend — Unit Tests (push) Successful in 1m8s
CD Preprod / Frontend — Unit Tests (push) Successful in 43s
CD Preprod / Backend — Integration Tests (push) Successful in 46s
CD Preprod / Build Backend (push) Successful in 16m40s
CD Preprod / Build Log Exporter (push) Successful in 1m8s
CD Preprod / Build Frontend (push) Successful in 39m48s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, frontend) (push) Failing after 24s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, backend) (push) Failing after 24s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (amd64, log-exporter) (push) Failing after 22s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, backend) (push) Failing after 24s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, frontend) (push) Failing after 24s
CD Preprod / Image security (${{ matrix.service }}, ${{ matrix.arch }}) (arm64, log-exporter) (push) Failing after 21s
CD Preprod / Deploy to Preprod (push) Has been skipped
CD Preprod / Notify Success (push) Has been skipped
CD Preprod / Notify Failure (push) Has been skipped
fix test
2026-09-25 15:53:45 +02:00

46 lines
1.5 KiB
TypeScript

import { randomUUID } from 'crypto';
import { ConfigService } from '@nestjs/config';
import { RedisCacheAdapter } from '../../src/infrastructure/cache/redis-cache.adapter';
describe('Redis cache integration', () => {
let cache: RedisCacheAdapter;
const prefix = `integration:${randomUUID()}:`;
const keys = ['value', 'expires'].map(key => `${prefix}${key}`);
beforeAll(async () => {
cache = new RedisCacheAdapter(
new ConfigService({
REDIS_HOST: process.env.REDIS_HOST,
REDIS_PORT: Number(process.env.REDIS_PORT),
REDIS_PASSWORD: process.env.REDIS_PASSWORD || undefined,
REDIS_DB: Number(process.env.REDIS_DB),
})
);
await cache.onModuleInit();
});
afterAll(async () => {
try {
// Delete only this suite's keys; never flush a shared database.
await cache.deleteMany(keys);
} finally {
await cache.onModuleDestroy();
}
});
it('round-trips cached application data and invalidates it', async () => {
const value = { amount: 125.5, currency: 'EUR', ports: ['FRLEH', 'USNYC'] };
await cache.set(keys[0], value, 60);
expect(await cache.get(keys[0])).toEqual(value);
await cache.delete(keys[0]);
expect(await cache.get(keys[0])).toBeNull();
});
it('expires cached data using the server TTL', async () => {
await cache.set(keys[1], { valid: true }, 1);
expect(await cache.exists(keys[1])).toBe(true);
await new Promise(resolve => setTimeout(resolve, 1200));
expect(await cache.exists(keys[1])).toBe(false);
});
});