28 lines
2.6 KiB
JavaScript
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})
|