34 lines
3.2 KiB
JavaScript
34 lines
3.2 KiB
JavaScript
export async function verifyVipRoomsPreview(){
|
|
const e=await System.import('cc');e.game.resume();
|
|
const modules=Array.from(System.entries()).map(([,m])=>m),get=n=>{const m=modules.find(m=>m[n]);if(!m)throw Error(n);return m[n];};
|
|
const service=e.director.getScene().getChildByName('PlatformServices');
|
|
const owner=service.getComponent('PlatformStartup');owner.unsubscribe?.();owner.runtime?.stop();owner.panel?.dispose();owner.panel=null;
|
|
await new Promise((ok,fail)=>e.director.loadScene('PlatformLobby',err=>err?fail(err):ok()));e.game.resume();
|
|
const canvas=e.director.getScene().getChildByName('Canvas');
|
|
const prefab=await new Promise((ok,fail)=>e.assetManager.loadAny('ddf22b83-c329-4cb2-ac80-7b4999472522',(err,a)=>err?fail(err):ok(a)));
|
|
const root=e.instantiate(prefab);root.parent=canvas;root.setPosition(0,0,0);root.getChildByName('group-3').active=false;
|
|
const view=root.getComponent('VipRoomListView'),checks=[],joins=[];
|
|
const assert=(ok,msg)=>{if(!ok)throw Error(msg);checks.push(msg);};root.on('vip-join',c=>joins.push(c));
|
|
view.configure(()=> '测试玩法\n四人桌');
|
|
const raw=Array.from({length:4},(_,i)=>({shortCode:'10000'+i,owner:'房主'+i,destwo:'测试 VIP '+i,playerList:Array.from({length:9},()=>[0,123,null,456]),roomcodes:{roomtype:[1],roomlist:Array.from({length:9},(_,j)=>900000+i*10+j)},seatCount:Array(9).fill(4),deskState:Array.from({length:9},(_,j)=>j%2),forbidSelect:i===0}));
|
|
const rooms=get('parseVipRooms')({roomInfo:raw}),codes=raw.map(r=>r.shortCode).reverse();view.render(rooms,codes);
|
|
const content=view.roomsScroll.content;
|
|
assert(content.children.length===4,'four room prefab instances');
|
|
assert(content.children[0].getChildByName('Spirit3178').getComponent(e.Label).string==='100003','saved order wins over server order');
|
|
assert(content.getComponent(e.UITransform).height===796,'room scroll extent uses 199 spacing');
|
|
content.children[0].getChildByName('Spirit3192').emit(e.Button.EventType.CLICK);
|
|
assert(joins[0]==='100003','enter emits VIP short code');
|
|
content.children[0].emit(e.Button.EventType.CLICK);
|
|
assert(view.selectedCode==='100003'&&view.desksScroll.node.active&&!view.roomsScroll.node.active,'row opens selected desk page');
|
|
const desks=view.desksScroll.content;
|
|
assert(desks.children.length===9&&desks.getComponent(e.UITransform).height===725,'nine desk prefabs in scroll content');
|
|
assert(desks.children[1].position.x-desks.children[0].position.x===285,'two column spacing matches source');
|
|
assert(desks.children[0].getChildByName('Spirit3188').getComponent(e.Label).string==='人数:2/4','desk occupancy');
|
|
assert(desks.children[1].getChildByName('Spirit3186').getComponent(e.Sprite).spriteFrame===view.deskFrames[1],'in battle desk frame');
|
|
desks.children[1].emit(e.Button.EventType.CLICK);assert(joins[1]===900031,'desk click emits actual room code');
|
|
view.render(rooms,codes);assert(view.selectedCode==='100003','refresh retains selection');
|
|
view.render(rooms.slice(0,3),codes);assert(view.selectedCode===null&&!view.desksScroll.node.active,'removed selected room returns to page one');
|
|
view.render([],codes);assert(content.children.length===0,'empty response clears all rooms');
|
|
view.render(rooms,codes);globalThis.__vipQA={root,view,checks};return {checks};
|
|
}
|