stock-bot/libs/core/queue/test/service-cache.test.ts
2025-06-25 11:38:23 -04:00

57 lines
2.1 KiB
TypeScript

import { describe, expect, it } from 'bun:test';
import { generateCachePrefix, normalizeServiceName } from '../src/service-utils';
describe('ServiceCache Integration', () => {
// Since ServiceCache depends on external createCache, we'll test the utility functions it uses
describe('generateCachePrefix usage', () => {
it('should generate correct cache prefix for service', () => {
const prefix = generateCachePrefix('userService');
expect(prefix).toBe('cache:user-service');
});
it('should handle global cache prefix', () => {
// This simulates what ServiceCache does for global cache
const globalPrefix = 'stock-bot:shared';
expect(globalPrefix).toBe('stock-bot:shared');
});
});
describe('cache key patterns', () => {
it('should follow correct key pattern for job results', () => {
const jobId = 'job-123';
const expectedKey = `job:result:${jobId}`;
expect(expectedKey).toBe('job:result:job-123');
});
it('should follow correct key pattern for operation metrics', () => {
const handler = 'test-handler';
const operation = 'test-op';
const expectedKey = `metrics:${handler}:${operation}`;
expect(expectedKey).toBe('metrics:test-handler:test-op');
});
it('should follow correct key pattern for service health', () => {
const serviceName = 'test-service';
const expectedKey = `health:${serviceName}`;
expect(expectedKey).toBe('health:test-service');
});
it('should follow correct key pattern for queue stats', () => {
const queueName = 'test-queue';
const expectedKey = `queue:stats:${queueName}`;
expect(expectedKey).toBe('queue:stats:test-queue');
});
});
describe('service name normalization', () => {
it('should normalize service names in cache prefix', () => {
const serviceName = 'UserService';
const normalized = normalizeServiceName(serviceName);
expect(normalized).toBe('user-service');
const prefix = generateCachePrefix(normalized);
expect(prefix).toBe('cache:user-service');
});
});
});