09fec601b1
补充 robots、sitemap、SEO 元信息、结构化数据与首页语义内容 统一三套 Nginx 与 Pingora 的 62 条 SPA 路由和真实 404 行为 新增路由一致性检查、网关测试并同步技术文档与项目记忆
59 lines
1.5 KiB
TypeScript
59 lines
1.5 KiB
TypeScript
/* @vitest-environment jsdom */
|
|
|
|
import { afterEach, describe, expect, test, vi } from 'vitest';
|
|
|
|
import {
|
|
APP_HOME_TITLE,
|
|
resolveAppTitleForSelectionStage,
|
|
syncAppTitle,
|
|
} from './appTitle';
|
|
|
|
const hostBridgeMock = vi.hoisted(() => ({
|
|
setHostAppTitle: vi.fn(),
|
|
}));
|
|
|
|
vi.mock('./host-bridge/hostBridge', () => ({
|
|
setHostAppTitle: hostBridgeMock.setHostAppTitle,
|
|
}));
|
|
|
|
afterEach(() => {
|
|
document.title = '';
|
|
hostBridgeMock.setHostAppTitle.mockReset();
|
|
});
|
|
|
|
describe('appTitle', () => {
|
|
test('按平台阶段生成可读页面标题', () => {
|
|
expect(resolveAppTitleForSelectionStage('platform')).toBe(APP_HOME_TITLE);
|
|
expect(resolveAppTitleForSelectionStage('creation-home')).toBe(
|
|
APP_HOME_TITLE,
|
|
);
|
|
expect(resolveAppTitleForSelectionStage('work-detail')).toBe(
|
|
'作品详情 - 陶泥儿',
|
|
);
|
|
expect(resolveAppTitleForSelectionStage('match3d-runtime')).toBe(
|
|
'抓大鹅 - 陶泥儿',
|
|
);
|
|
expect(resolveAppTitleForSelectionStage('puzzle-generating')).toBe(
|
|
'拼图生成中 - 陶泥儿',
|
|
);
|
|
});
|
|
|
|
test('同步浏览器标题并请求宿主窗口标题', () => {
|
|
syncAppTitle(' 拼图 - 陶泥儿 ');
|
|
|
|
expect(document.title).toBe('拼图 - 陶泥儿');
|
|
expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({
|
|
title: '拼图 - 陶泥儿',
|
|
});
|
|
});
|
|
|
|
test('空标题回退到品牌名', () => {
|
|
syncAppTitle(' ');
|
|
|
|
expect(document.title).toBe('陶泥儿');
|
|
expect(hostBridgeMock.setHostAppTitle).toHaveBeenCalledWith({
|
|
title: '陶泥儿',
|
|
});
|
|
});
|
|
});
|