24 lines
1.4 KiB
JavaScript
24 lines
1.4 KiB
JavaScript
const test = require('node:test');
|
|
const assert = require('node:assert/strict');
|
|
const fs = require('node:fs');
|
|
const path = require('node:path');
|
|
const vm = require('node:vm');
|
|
const { stripTypeScriptTypes } = require('node:module');
|
|
const source = fs.readFileSync(path.join(__dirname,'../assets/Script/module/Pay/Utils.ts'),'utf8');
|
|
const start = source.indexOf(' static getDailyQuestReward(');
|
|
const end = source.indexOf(' //设置连胜次数',start);
|
|
const code = stripTypeScriptTypes('class Utils {\n'+source.slice(start,end)+'\n}\nglobalThis.Utils=Utils;');
|
|
for (const scope of ['daily','weekly']) test(`${scope} reward requests send only their own ID field`,()=>{
|
|
let request;
|
|
const context={wx:{},cc:{fx:{StorageMessage:{getStorage:()=> 'test-user'},GameConfig:{GM_INFO:{}}}}};
|
|
vm.runInNewContext(code,context);
|
|
context.Utils.POST=(endpoint,fields)=>{request={endpoint,fields};};
|
|
context.Utils.getDailyQuestReward(scope==='weekly'?'weekly_35':'pass_1',()=>{},scope);
|
|
assert.equal(request.endpoint,'getTaskReward');
|
|
const own=scope==='weekly'?'rewardId':'taskId', other=scope==='weekly'?'taskId':'rewardId';
|
|
assert.equal(Object.hasOwn(request.fields,other),false);
|
|
assert.equal(request.fields[own],scope==='weekly'?'weekly_35':'pass_1');
|
|
const form=Object.keys(request.fields).map(key=>key+'='+encodeURIComponent(request.fields[key])).join('&');
|
|
assert.equal(form.includes('undefined'),false);
|
|
});
|