| 14 | * ``` |
| 15 | */ |
| 16 | export function createMockRedis() { |
| 17 | return { |
| 18 | // Hash operations |
| 19 | hset: vi.fn().mockResolvedValue(1), |
| 20 | hget: vi.fn().mockResolvedValue(null), |
| 21 | hgetall: vi.fn().mockResolvedValue({}), |
| 22 | hdel: vi.fn().mockResolvedValue(1), |
| 23 | hmset: vi.fn().mockResolvedValue('OK'), |
| 24 | hincrby: vi.fn().mockResolvedValue(1), |
| 25 | |
| 26 | // Key operations |
| 27 | get: vi.fn().mockResolvedValue(null), |
| 28 | set: vi.fn().mockResolvedValue('OK'), |
| 29 | del: vi.fn().mockResolvedValue(1), |
| 30 | exists: vi.fn().mockResolvedValue(0), |
| 31 | expire: vi.fn().mockResolvedValue(1), |
| 32 | ttl: vi.fn().mockResolvedValue(-1), |
| 33 | |
| 34 | // List operations |
| 35 | lpush: vi.fn().mockResolvedValue(1), |
| 36 | rpush: vi.fn().mockResolvedValue(1), |
| 37 | lpop: vi.fn().mockResolvedValue(null), |
| 38 | rpop: vi.fn().mockResolvedValue(null), |
| 39 | lrange: vi.fn().mockResolvedValue([]), |
| 40 | llen: vi.fn().mockResolvedValue(0), |
| 41 | |
| 42 | // Set operations |
| 43 | sadd: vi.fn().mockResolvedValue(1), |
| 44 | srem: vi.fn().mockResolvedValue(1), |
| 45 | smembers: vi.fn().mockResolvedValue([]), |
| 46 | sismember: vi.fn().mockResolvedValue(0), |
| 47 | |
| 48 | // Pub/Sub |
| 49 | publish: vi.fn().mockResolvedValue(0), |
| 50 | subscribe: vi.fn().mockResolvedValue(undefined), |
| 51 | unsubscribe: vi.fn().mockResolvedValue(undefined), |
| 52 | on: vi.fn(), |
| 53 | |
| 54 | // Transaction |
| 55 | multi: vi.fn(() => ({ |
| 56 | exec: vi.fn().mockResolvedValue([]), |
| 57 | })), |
| 58 | |
| 59 | // Scripting |
| 60 | eval: vi.fn().mockResolvedValue(0), |
| 61 | |
| 62 | // Connection |
| 63 | ping: vi.fn().mockResolvedValue('PONG'), |
| 64 | quit: vi.fn().mockResolvedValue('OK'), |
| 65 | disconnect: vi.fn().mockResolvedValue(undefined), |
| 66 | |
| 67 | // Status |
| 68 | status: 'ready', |
| 69 | } |
| 70 | } |
| 71 | |
| 72 | export type MockRedis = ReturnType<typeof createMockRedis> |
| 73 | |