// Import helpers
import dateToDescription from './dateToDescription';
import getTimeInfoInET from '../../../shared/helpers/getTimeInfoInET';

// Import types
import { MMDDYY } from '../../../shared/types';

// Mock getTimeInfoET
jest.mock('../../../shared/helpers/getTimeInfoInET');

// Data
const CURRENT_DAY: ReturnType<typeof getTimeInfoInET> = {
  timestamp: 0,
  year: 2024,
  month: 4,
  day: 4,
  hour: 11,
  hour12: 11,
  minute: 11,
  isPM: false,
};

const DAYS: MMDDYY[] = [
  // April 3rd - should display as 'Wednesday (Apr 3rd)'
  {
    month: 4,
    day: 3,
    year: 2024,
  },
  {
    month: 3,
    day: 29,
    year: 2024,
  },
  {
    month: 3,
    day: 22,
    year: 2024,
  },
];

const EXPECTED_DESCRIPTIONS = [
  'Wednesday (Apr 3rd)',
  'Last Friday (Mar 29th)',
  'Mar 22nd',
];

test(
  'dateToDescription: ensure proper conversions',
  () => {
    const mockGetTimeInfoInET = getTimeInfoInET as jest.MockedFunction<typeof getTimeInfoInET>;
    mockGetTimeInfoInET.mockImplementation(() => CURRENT_DAY);

    DAYS.forEach((day, index) => {
      expect(dateToDescription(day)).toBe(EXPECTED_DESCRIPTIONS[index]);
    })
  },
);
