feat: 更新作业纸 footer
This commit is contained in:
@@ -117,6 +117,8 @@ function fixture(initialStorage = new Map()) {
|
||||
run((name) => load(resolve(dirname(file), name)), exports);
|
||||
return exports;
|
||||
}
|
||||
// 认证回归显式使用本机配置,避免依赖产品默认环境。
|
||||
load('config/api').apiConfig.developmentEnvironment = 'local';
|
||||
return {
|
||||
auth: load('utils/auth'),
|
||||
session: load('services/auth-session'),
|
||||
|
||||
@@ -15,7 +15,7 @@ const deferred = () => {
|
||||
const tick = () => new Promise(setImmediate);
|
||||
|
||||
/** 加载真实配置、请求、认证、App 与切换流程,仅模拟微信运行时和服务端响应。 */
|
||||
function fixture(storage = new Map()) {
|
||||
function fixture(storage = new Map(), useDefaultEnvironment = false) {
|
||||
let version = 'develop';
|
||||
let app;
|
||||
let pages = [];
|
||||
@@ -131,6 +131,12 @@ function fixture(storage = new Map()) {
|
||||
return exports;
|
||||
}
|
||||
load('app');
|
||||
const config = load('config/api');
|
||||
if (!useDefaultEnvironment) {
|
||||
// 既有切换场景从 local 开始,并显式模拟三个环境同址。
|
||||
config.apiConfig.developmentEnvironment = 'local';
|
||||
config.apiConfig.productionBaseUrl = config.apiConfig.localBaseUrl;
|
||||
}
|
||||
return {
|
||||
config: load('config/api'),
|
||||
auth: load('utils/auth'),
|
||||
@@ -423,3 +429,31 @@ test('Debug 页面调用统一切换入口,失败时隐藏 loading 后显示
|
||||
});
|
||||
assert.equal(toasts.length, 0);
|
||||
});
|
||||
|
||||
test('所有包默认请求线上;忽略旧 local 选择,新手动选择仍可持久保存', async () => {
|
||||
const online = 'https://doodle-api.joeyone.cn/api/v1';
|
||||
const f = fixture(
|
||||
new Map([['doodle_develop_api_environment_v1', 'local']]),
|
||||
true,
|
||||
);
|
||||
for (const version of ['develop', 'trial', 'release', 'unknown']) {
|
||||
f.version(version);
|
||||
assert.equal(f.config.getApiConfig().environment, 'production');
|
||||
assert.equal(f.config.getApiConfig().baseUrl, online);
|
||||
}
|
||||
f.version('develop');
|
||||
await f.api.apiRequest('/categories', { auth: 'none' });
|
||||
assert.equal(f.requests.at(-1).url, `${online}/categories`);
|
||||
f.config.selectApiEnvironment('local');
|
||||
assert.equal(
|
||||
f.config.getApiConfig().baseUrl,
|
||||
'http://127.0.0.1:8800/api/v1',
|
||||
);
|
||||
assert.equal(
|
||||
fixture(f.storage, true).config.getApiConfig().environment,
|
||||
'local',
|
||||
);
|
||||
f.version('trial');
|
||||
assert.equal(f.config.getApiConfig().baseUrl, online);
|
||||
assert.equal(f.config.getApiConfig().environment, 'production');
|
||||
});
|
||||
|
||||
@@ -306,3 +306,64 @@ test('体验版与正式版均校验公开详情,404 和网络故障不能降
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
test('体验/正式版兼容旧接口缺少 rendering,十种纸张保持独立分享、收藏及下载归属', async () => {
|
||||
for (const version of ['trial', 'release']) {
|
||||
const requested = [];
|
||||
const { page, wx, favorites, downloads, toasts } = createPage({
|
||||
getWorksheet: async (id) => {
|
||||
requested.push(id);
|
||||
return { id, path: config.getPublishMetaByMode(id).path };
|
||||
},
|
||||
});
|
||||
wx.getAccountInfoSync = () => ({
|
||||
miniProgram: { envVersion: version },
|
||||
});
|
||||
for (const paper of config.PAPER_TYPE_OPTIONS) {
|
||||
const id = config.getWorksheetIdForPaperType(paper.id);
|
||||
await page.openEntry({ id });
|
||||
assert.equal(page.data.hasContent, true);
|
||||
assert.equal(page.data.selectedPaperType, paper.id);
|
||||
assert.equal(page.data.functionId, id);
|
||||
assert.equal(page.onShareAppMessage().path, `/${route}?id=${id}`);
|
||||
await page.onPreviewFavorite();
|
||||
assert.deepEqual(favorites.at(-1), ['add', id]);
|
||||
await page.exportToPrint();
|
||||
assert.equal(downloads.at(-1).worksheetId, id);
|
||||
}
|
||||
assert.equal(requested.length, 10);
|
||||
assert.equal(
|
||||
toasts.filter((title) => title.includes('配置')).length,
|
||||
0,
|
||||
);
|
||||
}
|
||||
});
|
||||
|
||||
test('兼容只允许缺省配置,错误路由、空/残缺/冲突配置仍阻止生成', async () => {
|
||||
const path = config.getPublishMetaByMode('paper-mi').path;
|
||||
for (const version of ['trial', 'release']) {
|
||||
for (const remote of [
|
||||
{ path: `/${route}?id=paper-square` },
|
||||
{ path: '/mathPages/mathDraw/mathDraw?id=paper-mi' },
|
||||
{},
|
||||
{ path, rendering: null },
|
||||
{ path, rendering: {} },
|
||||
{ path, rendering: { rendererKey: 'unknown', paperType: 'mi' } },
|
||||
{
|
||||
path,
|
||||
rendering: { rendererKey: 'paper-sheet', paperType: 'square' },
|
||||
},
|
||||
]) {
|
||||
const { page, wx, toasts } = createPage({
|
||||
getWorksheet: async () => remote,
|
||||
});
|
||||
wx.getAccountInfoSync = () => ({
|
||||
miniProgram: { envVersion: version },
|
||||
});
|
||||
await page.onLoad({ id: 'paper-mi' });
|
||||
assert.equal(page.data.hasContent, false);
|
||||
assert.equal(page.data.isWorksheetReady, false);
|
||||
assert.ok(toasts.includes('作业纸配置异常,请稍后重试'));
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user