Files

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