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:
Ho Ngoc Hai
2026-04-23 10:47:30 +07:00
parent 7a854373b3
commit 0924f0cb9b
15 changed files with 1356 additions and 61 deletions

View File

@@ -0,0 +1,51 @@
import { describe, expect, it, vi } from 'vitest';
const { mockCreateNavigation } = vi.hoisted(() => ({
mockCreateNavigation: vi.fn(() => ({
Link: 'MockLink',
redirect: 'mockRedirect',
usePathname: 'mockUsePathname',
useRouter: 'mockUseRouter',
})),
}));
// Mock routing config
vi.mock('../routing', () => ({
routing: {
locales: ['vi', 'en'] as const,
defaultLocale: 'vi',
localePrefix: 'as-needed',
},
}));
vi.mock('next-intl/navigation', () => ({
createNavigation: mockCreateNavigation,
}));
import { Link, redirect, usePathname, useRouter } from '../navigation';
describe('i18n/navigation', () => {
it('calls createNavigation with the routing config', () => {
expect(mockCreateNavigation).toHaveBeenCalledWith({
locales: ['vi', 'en'],
defaultLocale: 'vi',
localePrefix: 'as-needed',
});
});
it('exports Link from createNavigation', () => {
expect(Link).toBeDefined();
});
it('exports redirect from createNavigation', () => {
expect(redirect).toBeDefined();
});
it('exports usePathname from createNavigation', () => {
expect(usePathname).toBeDefined();
});
it('exports useRouter from createNavigation', () => {
expect(useRouter).toBeDefined();
});
});