Skip to content

Commit 9b6c37e

Browse files
committed
wip
1 parent 6e1283f commit 9b6c37e

8 files changed

Lines changed: 86 additions & 103 deletions

File tree

packages/e2e/room.test.ts

Lines changed: 64 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,87 @@
11
import { Messages, Packet } from '@prisel/client';
2-
import {
3-
connectAndLogin,
4-
createClients,
5-
createLoginedClients,
6-
waitForRoomUpdate,
7-
} from './testHelper';
2+
import { createClients } from './testHelper';
83

94
describe('create room', () => {
10-
it('create a room', async () => {
5+
it('join default room', async () => {
116
const [client] = createClients();
127
await client.connect();
138
await client.request(Messages.getLogin(client.newId(), 'batman'));
14-
const response = await client.request(Messages.getCreateRoom(client.newId(), 'party room'));
15-
expect(Packet.getPayload(response, 'createRoomResponse')?.room?.id).toEqual(
16-
expect.any(String),
17-
);
9+
const response = await client.request(Messages.getJoin(client.newId()));
10+
expect(Packet.isStatusOk(response));
11+
expect(Packet.getPayload(response, 'joinResponse')?.room?.name).toEqual('room');
1812
client.exit();
1913
});
14+
// it('create a room', async () => {
15+
// const [client] = createClients();
16+
// await client.connect();
17+
// await client.request(Messages.getLogin(client.newId(), 'batman'));
18+
// const response = await client.request(Messages.getCreateRoom(client.newId(), 'party room'));
19+
// expect(Packet.getPayload(response, 'createRoomResponse')?.room?.id).toEqual(
20+
// expect.any(String),
21+
// );
22+
// client.exit();
23+
// });
2024

2125
it('create a room, join and then leave', async () => {
2226
const [client] = createClients();
2327
await client.connect();
2428
await client.request(Messages.getLogin(client.newId(), 'batman'));
25-
const createRoomResponse = await client.request(
26-
Messages.getCreateRoom(client.newId(), 'room'),
27-
);
28-
expect(Packet.isStatusOk(createRoomResponse)).toBe(true);
29+
await client.request(Messages.getJoin(client.newId()));
2930
const leaveResponse = await client.request(Messages.getLeave(client.newId()));
3031
expect(Packet.isStatusOk(leaveResponse)).toBe(true);
3132
client.exit();
3233
});
3334

34-
it('create a room and a client join', async () => {
35-
const [host, client] = createClients(2);
36-
const hostId = await connectAndLogin(host);
37-
const clientId = await connectAndLogin(client);
35+
// it('create a room and a client join', async () => {
36+
// const [host, client] = createClients(2);
37+
// const hostId = await connectAndLogin(host);
38+
// const clientId = await connectAndLogin(client);
3839

39-
const createRoomResponse = await host.request(
40-
Messages.getCreateRoom(host.newId(), 'party room'),
41-
);
42-
const roomId = Packet.getPayload(createRoomResponse, 'createRoomResponse')?.room?.id;
43-
expect(roomId).toBeDefined();
44-
if (roomId) {
45-
const [hostRoomUpdateResult, clientJoinResponse] = await Promise.all([
46-
waitForRoomUpdate(host),
47-
client
48-
.request(Messages.getJoin(client.newId(), roomId))
49-
.then((response) => Packet.getPayload(response, 'joinResponse')),
50-
]);
40+
// const createRoomResponse = await host.request(
41+
// Messages.getCreateRoom(host.newId(), 'party room'),
42+
// );
43+
// const roomId = Packet.getPayload(createRoomResponse, 'createRoomResponse')?.room?.id;
44+
// expect(roomId).toBeDefined();
45+
// if (roomId) {
46+
// const [hostRoomUpdateResult, clientJoinResponse] = await Promise.all([
47+
// waitForRoomUpdate(host),
48+
// client
49+
// .request(Messages.getJoin(client.newId(), roomId))
50+
// .then((response) => Packet.getPayload(response, 'joinResponse')),
51+
// ]);
5152

52-
expect(clientJoinResponse?.roomState?.players.length).toBe(2);
53-
expect(clientJoinResponse?.roomState?.hostId).toBe(hostId);
54-
expect(clientJoinResponse?.roomState?.token).toEqual(expect.any(String));
55-
expect(hostRoomUpdateResult.token).toEqual(
56-
expect.objectContaining({
57-
previousToken: expect.any(String),
58-
token: expect.any(String),
59-
}),
60-
);
61-
}
53+
// expect(clientJoinResponse?.roomState?.players.length).toBe(2);
54+
// expect(clientJoinResponse?.roomState?.hostId).toBe(hostId);
55+
// expect(clientJoinResponse?.roomState?.token).toEqual(expect.any(String));
56+
// expect(hostRoomUpdateResult.token).toEqual(
57+
// expect.objectContaining({
58+
// previousToken: expect.any(String),
59+
// token: expect.any(String),
60+
// }),
61+
// );
62+
// }
6263

63-
host.exit();
64-
client.exit();
65-
});
64+
// host.exit();
65+
// client.exit();
66+
// });
6667

67-
it('in a room everyone leaves', async () => {
68-
const [host, guest] = await createLoginedClients(2);
69-
const createResponse = await host.request(Messages.getCreateRoom(host.newId(), 'room'));
70-
const roomId = Packet.getPayload(createResponse, 'createRoomResponse')?.room?.id;
71-
expect(roomId).toBeDefined();
72-
if (roomId) {
73-
await Promise.all([
74-
waitForRoomUpdate(host),
75-
guest.request(Messages.getJoin(guest.newId(), roomId)),
76-
]);
77-
await Promise.all([
78-
waitForRoomUpdate(guest),
79-
host.request(Messages.getLeave(host.newId())),
80-
]);
81-
await guest.request(Messages.getLeave(guest.newId()));
82-
}
83-
host.exit();
84-
guest.exit();
85-
});
68+
// it('in a room everyone leaves', async () => {
69+
// const [host, guest] = await createLoginedClients(2);
70+
// const createResponse = await host.request(Messages.getCreateRoom(host.newId(), 'room'));
71+
// const roomId = Packet.getPayload(createResponse, 'createRoomResponse')?.room?.id;
72+
// expect(roomId).toBeDefined();
73+
// if (roomId) {
74+
// await Promise.all([
75+
// waitForRoomUpdate(host),
76+
// guest.request(Messages.getJoin(guest.newId(), roomId)),
77+
// ]);
78+
// await Promise.all([
79+
// waitForRoomUpdate(guest),
80+
// host.request(Messages.getLeave(host.newId())),
81+
// ]);
82+
// await guest.request(Messages.getLeave(guest.newId()));
83+
// }
84+
// host.exit();
85+
// guest.exit();
86+
// });
8687
});

packages/e2e/server.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
const { Server, debug } = require('@prisel/server');
22

3-
const server = Server.create({ host: 'localhost', port: 3000 });
3+
const close = Server.create({ host: 'localhost', port: 3000 });
44
process.stdout.write('starting server');
55

66
process.title = 'prisel-server';
77

88
process.on('exit', () => {
99
debug('on exit');
10-
server.close();
10+
close();
1111
});
1212

1313
process.on('SIGINT', () => {
1414
debug('on siginit');
15-
server.close();
15+
close();
1616
process.exit();
1717
});

packages/e2e/smoke.test.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1+
import { Messages, Packet } from '@prisel/client';
12
import { createClients } from './testHelper';
2-
import { Messages } from '@prisel/client';
33

44
describe('connect', () => {
55
it('single client connect', async () => {
@@ -22,7 +22,8 @@ describe('connect', () => {
2222
it('login', async () => {
2323
const [client] = createClients();
2424
await client.connect();
25-
await client.request(Messages.getLogin(client.newId(), 'super'));
25+
const response = await client.request(Messages.getLogin(client.newId(), 'super'));
26+
expect(Packet.isStatusOk(response));
2627
client.exit();
2728
});
2829
});

packages/e2e/testHelper.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { Client, Messages, Packet } from '@prisel/client';
2-
import { priselpb } from '../common/node_modules/@prisel/protos/dist';
2+
import { priselpb } from '@prisel/protos';
33

44
export function createClients(num = 1) {
55
return Array.from({ length: num }).map(() => new Client());

packages/server/src/serverConfig.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,5 +17,5 @@ export interface ServerConfig {
1717
server?: http.Server;
1818
roomType?: RoomType;
1919
onClose?: () => void;
20-
onCreateGame?: CreateGame;
20+
onCreateGame: CreateGame;
2121
}

packages/server/src/serverState.ts

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
import { newRequestManager, newRoomId, Packet, Response } from '@prisel/common';
22
import { priselpb } from '@prisel/protos';
3-
import { Inspector, newState, run, useComputed, useLocalState, useSideEffect } from '@prisel/state';
3+
import {
4+
endState,
5+
Inspector,
6+
newState,
7+
run,
8+
useComputed,
9+
useLocalState,
10+
useSideEffect,
11+
} from '@prisel/state';
412
import { Server as WebSocketServer, WebSocket } from 'ws';
513
import { provideGetPlayerAmbient, provideRoomIdAmbient, provideRoomTypeAmbient } from './ambients';
614
import debug from './debug';
@@ -22,6 +30,7 @@ function ServerState(
2230
host: 'localhost',
2331
port: 3000,
2432
roomType: RoomType.DEFAULT,
33+
onCreateGame: () => () => endState(),
2534
},
2635
) {
2736
const { roomType = RoomType.DEFAULT } = props;
@@ -142,14 +151,11 @@ function runRoom(
142151

143152
function useDefaultRoom(
144153
roomType: RoomType,
145-
onCreateGame: CreateGame | undefined,
154+
onCreateGame: CreateGame,
146155
getPlayer: (player: WebSocket) => Player | undefined,
147156
) {
148157
const defaultRoom = useComputed(
149-
() =>
150-
roomType === RoomType.DEFAULT && onCreateGame
151-
? runRoom(roomType, onCreateGame, getPlayer)
152-
: null,
158+
() => (roomType === RoomType.DEFAULT ? runRoom(roomType, onCreateGame, getPlayer) : null),
153159
[roomType, onCreateGame],
154160
);
155161
useSideEffect(() => {

packages/server/src/socketState.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ export function SocketState(props: {
2323
socket: WebSocket;
2424
socketManager: SocketManager;
2525
players: Map<string, Player>;
26-
onCreateRoom?: (player: Player, request: Request) => void;
26+
onCreateRoom: (player: Player, request: Request) => void;
2727
onEnd?: () => void;
2828
}) {
2929
const { requests, socket, socketManager, players } = props;
@@ -127,11 +127,11 @@ export function SocketState(props: {
127127
// handle CREATE_ROOM
128128
if (
129129
player &&
130-
props.onCreateRoom &&
131130
Request.isRequest(packet) &&
132131
Packet.isSystemAction(packet, priselpb.SystemActionType.CREATE_ROOM)
133132
) {
134133
props.onCreateRoom(player, packet);
134+
// re-dispatch create room request
135135
emitPacketEvent.send({ socket, packet });
136136
return;
137137
}

packages/tic-tac-toe-client/src/Lobby.tsx

Lines changed: 0 additions & 25 deletions
This file was deleted.

0 commit comments

Comments
 (0)