import { describe, it, expect } from 'vitest'; import { generateI18nFile } from './language-config'; describe('generateI18nFile', () => { it('guards the i18next singleton with isInitialized before calling .init()', () => { const output = generateI18nFile(['pt-BR', 'en', 'es']); expect(output).toContain('if (!i18n.isInitialized) {'); expect(output).toMatch(/}\s*else\s*{/); }); it('merges default resources via addResourceBundle with deep merge and no overwrite', () => { const output = generateI18nFile(['pt-BR', 'en', 'es']); expect(output).toContain( "i18n.addResourceBundle(lang, 'translation', resources, true, false);" ); }); it('builds a defaultResourcesByLang map covering every selected language', () => { const output = generateI18nFile(['pt-BR', 'en']); expect(output).toContain('const defaultResourcesByLang'); expect(output).toContain("'pt-BR': ptBR,"); expect(output).toContain('en,'); expect(output).not.toContain("'es': es,"); }); it('throws when no languages are selected', () => { expect(() => generateI18nFile([])).toThrow(/must include at least one language/); }); });