101 lines
2.7 KiB
TypeScript
101 lines
2.7 KiB
TypeScript
import { beforeEach, vi } from 'vitest'
|
|
|
|
/**
|
|
* Global test setup for analytics backend
|
|
* This file runs before each test suite
|
|
*/
|
|
|
|
// Mock Redis client
|
|
export const mockRedis = {
|
|
get: vi.fn(),
|
|
set: vi.fn(),
|
|
del: vi.fn(),
|
|
exists: vi.fn(),
|
|
expire: vi.fn(),
|
|
incr: vi.fn(),
|
|
decr: vi.fn(),
|
|
hget: vi.fn(),
|
|
hset: vi.fn(),
|
|
hdel: vi.fn(),
|
|
hgetall: vi.fn(),
|
|
lpush: vi.fn(),
|
|
rpush: vi.fn(),
|
|
lrange: vi.fn(),
|
|
sadd: vi.fn(),
|
|
scard: vi.fn(),
|
|
smembers: vi.fn(),
|
|
zadd: vi.fn(),
|
|
zrange: vi.fn(),
|
|
zrangebyscore: vi.fn(),
|
|
keys: vi.fn(),
|
|
ping: vi.fn().mockResolvedValue('PONG'),
|
|
quit: vi.fn().mockResolvedValue('OK'),
|
|
disconnect: vi.fn().mockResolvedValue(undefined),
|
|
}
|
|
|
|
// Mock Redis module
|
|
vi.mock('redis', () => ({
|
|
createClient: vi.fn(() => mockRedis),
|
|
}))
|
|
|
|
// Mock BullMQ Queue
|
|
export const mockQueue = {
|
|
add: vi.fn(),
|
|
getJob: vi.fn(),
|
|
getJobs: vi.fn(),
|
|
clean: vi.fn(),
|
|
obliterate: vi.fn(),
|
|
pause: vi.fn(),
|
|
resume: vi.fn(),
|
|
close: vi.fn(),
|
|
on: vi.fn(),
|
|
}
|
|
|
|
vi.mock('bullmq', () => ({
|
|
Queue: vi.fn(() => mockQueue),
|
|
Worker: vi.fn(),
|
|
}))
|
|
|
|
// Reset all mocks before each test
|
|
beforeEach(() => {
|
|
vi.clearAllMocks()
|
|
|
|
// Reset Redis mocks to default behavior
|
|
mockRedis.get.mockResolvedValue(null)
|
|
mockRedis.set.mockResolvedValue('OK')
|
|
mockRedis.del.mockResolvedValue(1)
|
|
mockRedis.exists.mockResolvedValue(0)
|
|
mockRedis.expire.mockResolvedValue(1)
|
|
mockRedis.incr.mockResolvedValue(1)
|
|
mockRedis.decr.mockResolvedValue(0)
|
|
mockRedis.hget.mockResolvedValue(null)
|
|
mockRedis.hset.mockResolvedValue(1)
|
|
mockRedis.hdel.mockResolvedValue(1)
|
|
mockRedis.hgetall.mockResolvedValue({})
|
|
mockRedis.lpush.mockResolvedValue(1)
|
|
mockRedis.rpush.mockResolvedValue(1)
|
|
mockRedis.lrange.mockResolvedValue([])
|
|
mockRedis.sadd.mockResolvedValue(1)
|
|
mockRedis.scard.mockResolvedValue(0)
|
|
mockRedis.smembers.mockResolvedValue([])
|
|
mockRedis.zadd.mockResolvedValue(1)
|
|
mockRedis.zrange.mockResolvedValue([])
|
|
mockRedis.zrangebyscore.mockResolvedValue([])
|
|
mockRedis.keys.mockResolvedValue([])
|
|
|
|
// Reset Queue mocks
|
|
mockQueue.add.mockResolvedValue({ id: '1', data: {} })
|
|
mockQueue.getJob.mockResolvedValue(null)
|
|
mockQueue.getJobs.mockResolvedValue([])
|
|
mockQueue.clean.mockResolvedValue([])
|
|
mockQueue.obliterate.mockResolvedValue(undefined)
|
|
mockQueue.pause.mockResolvedValue(undefined)
|
|
mockQueue.resume.mockResolvedValue(undefined)
|
|
mockQueue.close.mockResolvedValue(undefined)
|
|
})
|
|
|
|
// Set test environment variables
|
|
process.env.NODE_ENV = 'test'
|
|
process.env.DATABASE_URL = 'postgresql://test:test@localhost:5432/analytics_test'
|
|
process.env.DATABASE_REDIS_URL = 'redis://localhost:6379'
|
|
process.env.JWT_SECRET = 'test-secret-key-for-testing-only'
|