同步小程序与管理端更新,完善抽烟记录和解绑冷静期
This commit is contained in:
@@ -0,0 +1,33 @@
|
||||
const test=require('node:test');
|
||||
const assert=require('node:assert/strict');
|
||||
const fs=require('node:fs');
|
||||
const path=require('node:path');
|
||||
const createLoader=require('./load-module.cjs');
|
||||
function setup(overrides={},coupleId=1) {
|
||||
let definition;const urls=[];
|
||||
const api={timelineList:async()=>[{id:1},{id:2}],albumList:async()=>[{photo_count:'3'},{photo_count:7}],diaryList:async()=>({items:[{id:1}],total:'27'}),songsList:async()=>[{id:1}],checkinList:async()=>({items:[{id:1}],checkin_log_total:'17'}),petInfo:async()=>({has_pet:true,pet:{level:'13'}}),...overrides};
|
||||
const load=createLoader({Page:value=>definition=value,wx:{getStorageSync:key=>key==='coupleId'?coupleId:1,setStorageSync(){},navigateTo:value=>urls.push(value.url)},console,Date}, {'../../utils/request':{api},'../../utils/page-cache':{withDataCache:value=>value}});
|
||||
load(path.join(__dirname,'../pages/profile/profile.js'));
|
||||
const page={...definition,data:JSON.parse(JSON.stringify(definition.data)),setData:value=>Object.assign(page.data,value)};
|
||||
return {page,urls};
|
||||
}
|
||||
test('profile statistics use photo and diary totals, checkin count and explicit pet level; all eight destinations exist',async()=>{
|
||||
const e=setup();await e.page.loadProfileStats();
|
||||
assert.deepEqual(e.page.data.statisticItems.map(item=>item.count),[2,10,27,1,17,'Lv.13','','']);
|
||||
assert.equal(e.page.data.statsError,false);assert.equal(e.page.data.statsLoading,false);
|
||||
const config=JSON.parse(fs.readFileSync(path.join(__dirname,'../app.json'),'utf8'));
|
||||
for(const item of e.page.data.statisticItems) e.page.openStatistic({currentTarget:{dataset:{key:item.key}}});
|
||||
assert.equal(e.urls.length,8);for(const url of e.urls)assert.ok(config.pages.includes(url.slice(1)),url);
|
||||
});
|
||||
test('a failed statistic is unknown while other entries stay available and retry replaces it',async()=>{
|
||||
let fail=true;const e=setup({albumList:async()=>{if(fail)throw Error('offline');return [{photo_count:4}];}});
|
||||
await e.page.loadProfileStats();assert.equal(e.page.data.statisticItems[1].count,'—');assert.equal(e.page.data.statisticItems[2].count,27);assert.equal(e.page.data.statsError,true);
|
||||
fail=false;await e.page.loadProfileStats();assert.equal(e.page.data.statisticItems[1].count,4);assert.equal(e.page.data.statsError,false);
|
||||
});
|
||||
|
||||
test('unbound profile skips couple-only pets without reporting a statistics failure',async()=>{
|
||||
let calls=0;const e=setup({petInfo:async()=>{calls++;throw Error('请先绑定情侣');}},null);
|
||||
await e.page.loadProfileStats();
|
||||
assert.equal(calls,0);assert.equal(e.page.data.statsError,false);
|
||||
assert.equal(e.page.data.statisticItems.find(item=>item.key==='pet').count,'未领养');
|
||||
});
|
||||
Reference in New Issue
Block a user