ufutx_love_mp/tools/sharing/check-contact.cjs

28 lines
2.6 KiB
JavaScript

const fs=require('fs'),path=require('path'),vm=require('vm'),assert=require('assert')
const source=fs.readFileSync(path.join(__dirname,'../../src/pages/users/myShare.wpy'),'utf8').match(/<script>([\s\S]*?)<\/script>/)[1].replace(/^import .*$/gm,'')
let definition,failed=false,saves=0,overview={total:12,verified:7,can_apply:true},requestFailed=false
const notices=[]
const sandbox={wepy:{page(value){definition=value}},https:{},service:{user:'synthetic-api'},wx:{getImageInfo({success}){success({path:'synthetic-contact.jpg'})},showToast(value){notices.push(value)},showModal(value){notices.push(value)},previewImage(value){notices.push(value)}},saveSharingPoster:async()=>{saves++;if(failed)throw Error('synthetic denial')}}
vm.createContext(sandbox);vm.runInContext(source,sandbox)
const page={...definition.data,...definition.methods,$get:async()=>{if(requestFailed)throw Error('synthetic');return {data:overview}}}
;(async()=>{
page.setOverview({total:100,verified:6,can_apply:false})
await page.openApplication();assert.equal(page.showApplication,false);assert.equal(page.remaining,1)
page.setOverview({total:12,verified:7,can_apply:true})
await page.openApplication();assert.equal(page.showApplication,true);assert.equal(page.remaining,0)
page.keepApplicationOpen();assert.equal(page.showApplication,true)
page.closeApplication();assert.equal(page.showApplication,false)
overview={total:12,verified:6,can_apply:false}
await page.openApplication();assert.equal(page.showApplication,false);assert.equal(page.canApply,false)
overview={total:12,verified:8,can_apply:true};await page.refreshEligibility();assert.equal(page.canApply,true)
requestFailed=true;await page.openApplication();assert.equal(page.showApplication,false);assert.equal(page.canApply,false);assert.equal(page.eligibilityError,true);assert.equal(page.checkingEligibility,false)
requestFailed=false;await page.refreshEligibility();assert.equal(page.canApply,true)
page.setOverview({total:100,verified:6,can_apply:true});assert.equal(page.canApply,false)
await page.saveContact();assert.equal(saves,1);assert.equal(page.savingContact,false)
assert.equal(notices.pop().title,'二维码已保存')
failed=true;await page.saveContact();assert.equal(page.savingContact,false);assert.equal(notices.pop().title,'未能保存')
page.savingContact=true;await page.saveContact();assert.equal(saves,2)
assert(!notices.some(x=>/申请成功|审核通过/.test(x.title||'')))
console.log('PASS: 6/7/8 verified eligibility, total not used, stale eligibility, request failure/retry, modal, image save failure/success and duplicate-save guard; no application submission.')
})().catch(e=>{console.error(e.message);process.exitCode=1})