/* @vitest-environment jsdom */ import { afterEach, describe, expect, test, vi } from 'vitest'; import { APP_HOME_TITLE, resolveAppTitleForSelectionStage, syncAppTitle, } from './activeAppTitle'; const hostBridgeMock = vi.hoisted(() => ({ setHostAppTitle: vi.fn(), })); vi.mock('./host-bridge/hostBridge', () => ({ setHostAppTitle: hostBridgeMock.setHostAppTitle, })); afterEach(() => { document.title = ''; hostBridgeMock.setHostAppTitle.mockReset(); }); describe('activeAppTitle', () => { test('maps only active platform stages', () => { expect(resolveAppTitleForSelectionStage('platform')).toBe(APP_HOME_TITLE); expect(resolveAppTitleForSelectionStage('creation-home')).toBe( APP_HOME_TITLE, ); expect(resolveAppTitleForSelectionStage('project')).toBe('项目 - 陶泥儿'); expect(resolveAppTitleForSelectionStage('profile')).toBe('我的 - 陶泥儿'); expect(resolveAppTitleForSelectionStage('image-editor')).toBe( '美术编辑器 - 陶泥儿', ); }); test('syncs browser and host titles', () => { syncAppTitle(' 项目 - 陶泥儿 '); expect(document.title).toBe('项目 - 陶泥儿'); expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({ title: '项目 - 陶泥儿', }); }); test('falls back to the brand for an empty title', () => { syncAppTitle(' '); expect(document.title).toBe('陶泥儿'); expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({ title: '陶泥儿', }); }); });