import { describe, expect, it } from 'vitest';

import { countryName } from './region';

describe('countryName', () => {
  it('resolves alpha-3 ISO codes to display names', () => {
    expect(countryName('usa')).toBe('United States');
    expect(countryName('fra')).toBe('France');
    expect(countryName('rus')).toBe('Russia');
    expect(countryName('idn')).toBe('Indonesia');
    expect(countryName('che')).toBe('Switzerland');
  });

  it('is case-insensitive', () => {
    expect(countryName('USA')).toBe('United States');
    expect(countryName('Fra')).toBe('France');
  });

  it('resolves alpha-2 codes too', () => {
    expect(countryName('us')).toBe('United States');
    expect(countryName('GB')).toBe('United Kingdom');
  });

  it('falls back to the uppercased raw code for unrecognized alpha-3 codes', () => {
    // Not in the alpha-3 lookup table → never reaches Intl → uppercased raw code.
    expect(countryName('xyz')).toBe('XYZ');
    expect(countryName('qqq')).toBe('QQQ');
  });

  it('falls back to the uppercased raw code for a 4+ char value', () => {
    // Neither alpha-2 nor alpha-3 shape → returned uppercased.
    expect(countryName('zzzz')).toBe('ZZZZ');
  });

  it('returns empty string for empty input', () => {
    expect(countryName('')).toBe('');
  });
});
