Spaces:
Paused
Paused
| import { describe, it, expect, beforeEach } from 'vitest'; | |
| import createRedisClient, { | |
| acquireSingletonLock, | |
| } from '../../src/utils/infra/redis.util.js'; | |
| describe('acquireSingletonLock', () => { | |
| beforeEach(async () => { | |
| await createRedisClient('locks').del('test:singleton'); | |
| }); | |
| it('grants the lock to the first caller only', async () => { | |
| const first = await acquireSingletonLock('test:singleton', 60); | |
| const second = await acquireSingletonLock('test:singleton', 60); | |
| const third = await acquireSingletonLock('test:singleton', 60); | |
| expect(first).toBe(true); | |
| expect(second).toBe(false); | |
| expect(third).toBe(false); | |
| }); | |
| it('uses an independent key per lock name', async () => { | |
| const lockA = await acquireSingletonLock('test:singleton', 60); | |
| const lockB = await acquireSingletonLock('test:singleton:other', 60); | |
| expect(lockA).toBe(true); | |
| expect(lockB).toBe(true); | |
| }); | |
| }); | |