文件
shanghaipeiwan/server/tests/mini-program-share.spec.ts

69 行
2.8 KiB
TypeScript

// 已读取AGENTS.md
import * as fs from 'fs';
import * as path from 'path';
/**
* 第一百一十九批闸门:小程序全页面分享到好友与朋友圈闸门
*/
describe('第一百一十九批全页面分享到好友与朋友圈闸门', () => {
const rootDir = path.resolve(__dirname, '../../');
const shareJsPath = path.join(rootDir, 'pwuniapp/common/share.js');
const mainJsPath = path.join(rootDir, 'pwuniapp/main.js');
it('pwuniapp/common/share.js 必须存在并提供完备的分享生命周期与工具函数', () => {
expect(fs.existsSync(shareJsPath)).toBe(true);
const content = fs.readFileSync(shareJsPath, 'utf-8');
expect(content).toContain('onShareAppMessage');
expect(content).toContain('onShareTimeline');
expect(content).toContain('showShareMenu');
expect(content).toContain('shareAppMessage');
expect(content).toContain('shareTimeline');
expect(content).toContain('export function useShare');
expect(content).toContain('export const shareMixin');
expect(content).toContain('export function buildSharePath');
expect(content).toContain('export function buildTimelineQuery');
});
it('main.js 必须全局混入 shareMixin 作为全页面兜底', () => {
const content = fs.readFileSync(mainJsPath, 'utf-8');
expect(content).toContain("import { shareMixin } from './common/share.js'");
expect(content).toContain('app.mixin(shareMixin)');
});
it('核心公共与业务页面均需显式配置 useShare 并具备邀请分销与上下文参数', () => {
const keyPages = [
'pwuniapp/pages/index/index.vue',
'pwuniapp/pages/activity/list.vue',
'pwuniapp/pages/activity/detail.vue',
'pwuniapp/pages/activity/my-ticket.vue',
'pwuniapp/pages/activity/create.vue',
'pwuniapp/pages/expert/detail.vue',
'pwuniapp/pages/expert/apply.vue',
'pwuniapp/pages/expert/hall.vue',
'pwuniapp/pages/expert/radar.vue',
'pwuniapp/pages/expert/workspace.vue',
'pwuniapp/pages/community/index.vue',
'pwuniapp/pages/community/detail.vue',
'pwuniapp/pages/user/index.vue',
'pwuniapp/pages/user/promote.vue',
'pwuniapp/pages/user/coupons.vue',
'pwuniapp/pages/user/help-faq.vue',
'pwuniapp/pages/common/protocol.vue',
'pwuniapp/pages/order/list.vue',
];
for (const relPath of keyPages) {
const fullPath = path.join(rootDir, relPath);
expect(fs.existsSync(fullPath)).toBe(true);
const content = fs.readFileSync(fullPath, 'utf-8');
expect(content).toContain("useShare");
}
});
it('分享代码及所有更新页面必须严格遵循零 Emoji 门禁规范', () => {
const content = fs.readFileSync(shareJsPath, 'utf-8');
const emojiRegex = /[\u{1F300}-\u{1F9FF}\u{2600}-\u{26FF}\u{2700}-\u{27BF}]/u;
expect(emojiRegex.test(content)).toBe(false);
});
});