Files
youle_cocos/cocoscreator_projects/framework-tests/presentation/request-loading.test.ts
T

18 lines
1.3 KiB
TypeScript

import test from 'node:test';
import assert from 'node:assert/strict';
import {RequestLoading} from '../../YouleNexus/assets/framework/presentation/request-loading.ts';
test('request loading closes on matching success or failure independent of payload',()=>{
const shown:boolean[]=[];const loading=new RequestLoading(v=>shown.push(v));
for(const rpc of ['get_player_task','get_task_award','getVipRankList'] as const){
for(const data of [{state:0},{state:1,error:'失败'},null]){loading.begin(rpc);loading.received({route:'agent',rpc,data});assert.deepEqual(shown.splice(0),[true,false]);}
}
loading.begin('get_player_task');loading.received({route:'agent',rpc:'getVipRankList'});assert.deepEqual(shown,[true]);
loading.received({route:'agent',rpc:'show_message'});assert.deepEqual(shown,[true,false]);
});
test('overlapping requests, cancellation, and duplicate replies do not flicker',()=>{
const shown:boolean[]=[];const loading=new RequestLoading(v=>shown.push(v));
loading.begin('get_player_task');loading.begin('getVipRankList');loading.received({route:'agent',rpc:'get_player_task'});
assert.deepEqual(shown,[true]);loading.cancel('getVipRankList');loading.cancel('getVipRankList');
assert.deepEqual(shown,[true,false]);loading.begin('get_task_award');loading.clear();assert.deepEqual(shown,[true,false,true,false]);
});