import { describe, expect, it, jest } from '@jest/globals';
import { lockProcessingJob } from '../../workerLock';

describe('lockProcessingJob', () => {
  it('casts parameterized job and lease IDs to UUID before locking', async () => {
    const queryRaw = jest.fn(async (..._args: unknown[]) => [{ id: '0070dda3-7d7e-44ad-8013-46bf60aa6c4c' }]);
    await expect(lockProcessingJob(
      { $queryRaw: queryRaw } as unknown as Parameters<typeof lockProcessingJob>[0],
      '0070dda3-7d7e-44ad-8013-46bf60aa6c4c',
      '4bff03d7-2c79-475d-8424-fd4e9a9e21d6'
    )).resolves.toBeUndefined();

    const [strings, jobId, leaseId] = queryRaw.mock.calls[0] as [TemplateStringsArray, string, string];
    expect(strings.join('?')).toContain('id = ?::uuid');
    expect(strings.join('?')).toContain('processing_lease_id = ?::uuid');
    expect(jobId).toBe('0070dda3-7d7e-44ad-8013-46bf60aa6c4c');
    expect(leaseId).toBe('4bff03d7-2c79-475d-8424-fd4e9a9e21d6');
  });
});
