Files
MatchMaster/tools/test-task-reward-request.cjs
T
2026-09-09 09:53:59 +08:00

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);
});