62 lines
2.2 KiB
TypeScript
62 lines
2.2 KiB
TypeScript
import { afterEach, describe, expect, it, vi } from 'vitest';
|
|
|
|
import { HostShellComponent } from './features/host/host-shell.component';
|
|
import { PlayerShellComponent } from './features/player/player-shell.component';
|
|
import { setPreferredLocale } from './lobby-i18n';
|
|
|
|
describe('i18n MVP flow smoke (host/player + audio policy)', () => {
|
|
afterEach(() => {
|
|
vi.restoreAllMocks();
|
|
vi.unstubAllGlobals();
|
|
});
|
|
|
|
it('resolves host/player copy in en and da from shared catalog', () => {
|
|
vi.stubGlobal('window', {
|
|
location: { hash: '', search: '' },
|
|
history: { state: null, replaceState: vi.fn() },
|
|
localStorage: { getItem: vi.fn().mockReturnValue('en'), setItem: vi.fn(), removeItem: vi.fn() },
|
|
sessionStorage: { getItem: vi.fn().mockReturnValue(null), setItem: vi.fn(), removeItem: vi.fn() },
|
|
addEventListener: vi.fn(),
|
|
removeEventListener: vi.fn(),
|
|
});
|
|
vi.stubGlobal('navigator', { language: 'en-US', onLine: true });
|
|
|
|
const host = new HostShellComponent();
|
|
const player = new PlayerShellComponent();
|
|
host.ngOnInit();
|
|
player.ngOnInit();
|
|
|
|
expect(host.copy('host.start_round')).toBe('Start round');
|
|
expect(player.copy('player.submit_guess')).toBe('Submit guess');
|
|
|
|
setPreferredLocale('da');
|
|
|
|
expect(host.copy('host.start_round')).toBe('Start runde');
|
|
expect(player.copy('player.submit_guess')).toBe('Send gæt');
|
|
|
|
player.ngOnDestroy();
|
|
host.ngOnDestroy();
|
|
});
|
|
|
|
it('keeps audio routing policy primary-only (client has no audio output)', () => {
|
|
vi.stubGlobal('window', {
|
|
location: { hash: '', search: '' },
|
|
history: { state: null, replaceState: vi.fn() },
|
|
localStorage: { getItem: vi.fn().mockReturnValue('en'), setItem: vi.fn(), removeItem: vi.fn() },
|
|
sessionStorage: { getItem: vi.fn().mockReturnValue(null), setItem: vi.fn(), removeItem: vi.fn() },
|
|
addEventListener: vi.fn(),
|
|
removeEventListener: vi.fn(),
|
|
});
|
|
vi.stubGlobal('navigator', { language: 'en-US', onLine: true });
|
|
|
|
const host = new HostShellComponent();
|
|
const player = new PlayerShellComponent();
|
|
|
|
expect(host.clientHasNoAudioOutput).toBe(true);
|
|
expect(player.clientHasNoAudioOutput).toBe(true);
|
|
|
|
player.ngOnDestroy();
|
|
host.ngOnDestroy();
|
|
});
|
|
});
|