test(web): add middleware + i18n + messages test suites (GOO-60)
Cover frontend middleware auth/locale logic, i18n config/routing/request/navigation, and vi/en message parity — 91 new tests across 6 files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
49
apps/web/i18n/__tests__/config.spec.ts
Normal file
49
apps/web/i18n/__tests__/config.spec.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import { describe, expect, it } from 'vitest';
|
||||
import { locales, defaultLocale } from '../config';
|
||||
import type { Locale } from '../config';
|
||||
|
||||
describe('i18n/config', () => {
|
||||
describe('locales', () => {
|
||||
it('exports an array of supported locales', () => {
|
||||
expect(Array.isArray(locales)).toBe(true);
|
||||
expect(locales.length).toBeGreaterThanOrEqual(2);
|
||||
});
|
||||
|
||||
it('includes Vietnamese (vi) as a supported locale', () => {
|
||||
expect(locales).toContain('vi');
|
||||
});
|
||||
|
||||
it('includes English (en) as a supported locale', () => {
|
||||
expect(locales).toContain('en');
|
||||
});
|
||||
|
||||
it('only contains vi and en', () => {
|
||||
expect([...locales]).toEqual(['vi', 'en']);
|
||||
});
|
||||
|
||||
it('is a readonly tuple', () => {
|
||||
// TypeScript const assertion — runtime check that it behaves as expected
|
||||
const copy = [...locales];
|
||||
expect(copy).toEqual(['vi', 'en']);
|
||||
});
|
||||
});
|
||||
|
||||
describe('defaultLocale', () => {
|
||||
it('is set to Vietnamese (vi)', () => {
|
||||
expect(defaultLocale).toBe('vi');
|
||||
});
|
||||
|
||||
it('is one of the supported locales', () => {
|
||||
expect(locales).toContain(defaultLocale);
|
||||
});
|
||||
});
|
||||
|
||||
describe('Locale type', () => {
|
||||
it('accepts valid locale values', () => {
|
||||
const vi: Locale = 'vi';
|
||||
const en: Locale = 'en';
|
||||
expect(vi).toBe('vi');
|
||||
expect(en).toBe('en');
|
||||
});
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user