同步小程序与管理端更新,完善抽烟记录和解绑冷静期

This commit is contained in:
2026-10-09 22:15:51 +08:00
parent a68a4ef411
commit b10fc3c4ac
149 changed files with 3794 additions and 589 deletions
+31
View File
@@ -0,0 +1,31 @@
const test=require('node:test');
const assert=require('node:assert/strict');
const path=require('node:path');
const fs=require('node:fs');
const createLoader=require('./load-module.cjs');
function setup(update) {
let definition;const calls=[],toasts=[],tabs=[];
const api={updatePartnerProfile:async payload=>{calls.push(payload);return update(payload);}};
const load=createLoader({Page:value=>definition=value,wx:{getStorageSync:()=>1,showToast:value=>toasts.push(value)},console,Date}, {'../../utils/request':{api,getImageUrl:value=>value},'../../utils/page-cache':{withDataCache:page=>page}});
load(path.join(__dirname,'../pages/profile/profile.js'));
let refreshes=0;
const page={...definition,data:{...definition.data,hasPartner:true,partnerId:42,coupleId:2,partnerName:'TA原昵称',partnerDetail:'20岁',partnerGenderRaw:'female',partnerBirthday:'2006-01-01',tempLoveDate:'2025-07-03',loveStartDate:'2025-07-03',tempLoveStory:'原故事'},setData(value){Object.assign(this.data,value);},getTabBar:()=>({setHidden:value=>tabs.push(value)}),async loadData(){refreshes++;}};
return {page,calls,toasts,tabs,refreshes:()=>refreshes};
}
test('partner card opens editing directly and saves the internal partner id with changed fields',async()=>{
const e=setup(async()=>({success:true}));e.page.showEditPartnerModal();
e.page.onEditPartnerNicknameInput({detail:{value:' 新昵称 '}});e.page.onEditPartnerGenderChange({detail:{value:0}});
await e.page.savePartnerProfile();
assert.equal(e.calls[0].partner_id,42);assert.equal(e.calls[0].nickname,'新昵称');assert.equal(e.calls[0].gender,'male');assert.equal(e.calls[0].birthday,'2006-01-01');
assert.equal(e.page.data.showEditPartnerModal,false);assert.equal(e.refreshes(),1);assert.deepEqual(e.tabs,[true,false]);
const markup=fs.readFileSync(path.join(__dirname,'../pages/profile/profile.wxml'),'utf8');
assert.ok(markup.includes('class="j-relation-card" bindtap="showEditPartnerModal"'));assert.ok(!markup.includes('关系管理'));assert.ok(!markup.includes('编辑TA的资料 →'));
});
test('failed partner save preserves editing, repeated save is blocked, and changed relationship cannot submit',async()=>{
let finish;const e=setup(()=>new Promise(resolve=>finish=resolve));e.page.showEditPartnerModal();
const pending=e.page.savePartnerProfile();await e.page.savePartnerProfile();e.page.hideEditPartnerModal();
assert.equal(e.calls.length,1);assert.equal(e.page.data.showEditPartnerModal,true);
finish({success:false,error:'保存失败'});await pending;
assert.equal(e.page.data.showEditPartnerModal,true);assert.equal(e.page.data.partnerSaving,false);assert.equal(e.refreshes(),0);
e.page.data.partnerId=43;await e.page.savePartnerProfile();assert.equal(e.calls.length,1);
});