import { describe, expect, it } from 'vitest';
import { resolvePayloadId, resolvePayloadNumber } from '../../src/handlers/payloadHelpers.js';

describe('resolvePayloadId', () => {
  it('returns plain string payloads unchanged', () => {
    expect(resolvePayloadId('smoking', 'habitId', 'habit')).toBe('smoking');
  });

  it('reads the first matching object key', () => {
    expect(resolvePayloadId({ jobId: 'cashier' }, 'jobId')).toBe('cashier');
    expect(resolvePayloadId({ itemId: 'energy-drink' }, 'itemId')).toBe('energy-drink');
    expect(resolvePayloadId({ habitId: 'smoking', habit: 'smoking' }, 'habitId', 'habit')).toBe('smoking');
  });

  it('returns undefined for empty or unsupported payloads', () => {
    expect(resolvePayloadId({}, 'jobId')).toBeUndefined();
    expect(resolvePayloadId(null, 'jobId')).toBeUndefined();
    expect(resolvePayloadId({ other: 'value' }, 'jobId')).toBeUndefined();
  });

  it('reads numeric fields from objects or raw numbers', () => {
    expect(resolvePayloadNumber(3, 'step')).toBe(3);
    expect(resolvePayloadNumber({ step: 4 }, 'step')).toBe(4);
    expect(resolvePayloadNumber({ step: '5' }, 'step')).toBe(5);
  });
});
