import assert from 'node:assert/strict';
import { test } from 'node:test';
import { CDCGPSF_TRANSLATIONS } from './index';
import { fetchIssueMatrixDictionary } from '../../../../frontend/features/pswg/issue-matrix/issue-matrix-translations';

test('combined page includes unique bilingual labels and isolated parents', () => {
  const rows = CDCGPSF_TRANSLATIONS.filter(item => item.page === 'issue_matrix_rgc_decision');
  assert.equal(new Set(rows.map(item => item.translationKey)).size, rows.length);
  for (const key of ['screen.issue_matrix', 'screen.rgc_decision', 'rgc.column.decision', 'rgc.view_detail', 'rgc.detail.title', 'rgc.detail.next_step', 'grid_locale.column_menu_sort_asc']) {
    const row = rows.find(item => item.translationKey === key);
    assert.ok(row, key);
    assert.ok(row.englishText && row.khmerText);
    assert.equal(row.parent?.page, 'issue_matrix_rgc_decision');
  }
});
test('embedded Issue Matrix fetches combined page without changing ordinary page defaults', async () => {
  const original = globalThis.fetch;
  const pages: string[] = [];
  globalThis.fetch = async (input) => {
    const url = new URL(String(input));
    assert.equal(url.searchParams.get('module'), 'cdcgpsf');
    pages.push(url.searchParams.get('page')!);
    return new Response(JSON.stringify({ data: { translations: { page_title: 'Admin test' } } }));
  };
  try {
    assert.equal((await fetchIssueMatrixDictionary('cdcgpsf', 'kh', undefined, 'issue_matrix_rgc_decision')).page_title, 'Admin test');
    await fetchIssueMatrixDictionary('cdcgpsf', 'kh');
    assert.deepEqual(pages, ['issue_matrix_rgc_decision', 'issue_matrix']);
  } finally { globalThis.fetch = original; }
});
