강동현

테스트가 끝나고 불필요한 딜레이가 발생하는 문제 해결

...@@ -186,9 +186,16 @@ export class Game { ...@@ -186,9 +186,16 @@ export class Game {
186 }, this.roundTerm * 1000); 186 }, this.roundTerm * 1000);
187 } 187 }
188 188
189 - private finishGame(): void { 189 + public finishGame(): void {
190 this.room.broadcast("finishGame", {}); 190 this.room.broadcast("finishGame", {});
191 191
192 + if (this.timeoutTimerId) {
193 + clearTimeout(this.timeoutTimerId);
194 + }
195 + if (this.nextRoundTimerId) {
196 + clearTimeout(this.nextRoundTimerId);
197 + }
198 +
192 this.room.finishGame(); 199 this.room.finishGame();
193 } 200 }
194 201
......
...@@ -18,7 +18,7 @@ ...@@ -18,7 +18,7 @@
18 }, 18 },
19 "scripts": { 19 "scripts": {
20 "start": "nodemon index.ts", 20 "start": "nodemon index.ts",
21 - "test": "nyc mocha -r ts-node/register --timeout 8000 ./**/*.test.ts", 21 + "test": "nyc mocha -r ts-node/register --timeout 800 ./**/*.test.ts",
22 "build": "tsc -b -v" 22 "build": "tsc -b -v"
23 }, 23 },
24 "devDependencies": { 24 "devDependencies": {
......
...@@ -37,4 +37,10 @@ export class RoomManager { ...@@ -37,4 +37,10 @@ export class RoomManager {
37 }); 37 });
38 return roomData; 38 return roomData;
39 } 39 }
40 +
41 + public clear() {
42 + this.rooms.forEach((room) => {
43 + room.close();
44 + });
45 + }
40 } 46 }
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 +import { clear } from "./util/clear";
3 import { prepareJoinedRoom, prepareUsers } from "./util/prepare"; 4 import { prepareJoinedRoom, prepareUsers } from "./util/prepare";
4 import { SocketTester } from "./util/SocketTester"; 5 import { SocketTester } from "./util/SocketTester";
5 6
...@@ -11,6 +12,8 @@ describe("방장", () => { ...@@ -11,6 +12,8 @@ describe("방장", () => {
11 } = prepareJoinedRoom(1); 12 } = prepareJoinedRoom(1);
12 13
13 expect(room.admin).eq(user); 14 expect(room.admin).eq(user);
15 +
16 + clear([room]);
14 }); 17 });
15 it("나중에 들어온 유저는 방장 정보를 받지만 방장이 되지 않습니다", () => { 18 it("나중에 들어온 유저는 방장 정보를 받지만 방장이 되지 않습니다", () => {
16 const { 19 const {
...@@ -32,6 +35,8 @@ describe("방장", () => { ...@@ -32,6 +35,8 @@ describe("방장", () => {
32 expect(response.result?.users[1].nickname).eq(user2.nickname); 35 expect(response.result?.users[1].nickname).eq(user2.nickname);
33 expect(response.result?.users[1].admin).eq(false); 36 expect(response.result?.users[1].admin).eq(false);
34 expect(response.result?.users[1].ready).eq(false); 37 expect(response.result?.users[1].ready).eq(false);
38 +
39 + clear([room]);
35 }); 40 });
36 it("방장이 나가면 방장이 인계됩니다", () => { 41 it("방장이 나가면 방장이 인계됩니다", () => {
37 const { 42 const {
...@@ -43,6 +48,8 @@ describe("방장", () => { ...@@ -43,6 +48,8 @@ describe("방장", () => {
43 expect(room.admin).eq(user1); 48 expect(room.admin).eq(user1);
44 socket1.testOk("leaveRoom", {}); 49 socket1.testOk("leaveRoom", {});
45 expect(room.admin).eq(user2); 50 expect(room.admin).eq(user2);
51 +
52 + clear([room]);
46 }); 53 });
47 it("방장을 인계하면 정보가 업데이트됩니다", () => { 54 it("방장을 인계하면 정보가 업데이트됩니다", () => {
48 const { 55 const {
...@@ -82,5 +89,7 @@ describe("방장", () => { ...@@ -82,5 +89,7 @@ describe("방장", () => {
82 expect(message.state).eq("updated"); 89 expect(message.state).eq("updated");
83 expect(message.user.username).eq(user2.username); 90 expect(message.user.username).eq(user2.username);
84 expect(message.user.admin).eq(true); 91 expect(message.user.admin).eq(true);
92 +
93 + clear([room]);
85 }); 94 });
86 }); 95 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 +import { clear } from "./util/clear";
3 import { DummySocket } from "./util/DummySocket"; 4 import { DummySocket } from "./util/DummySocket";
4 import { 5 import {
5 prepareJoinedRoom, 6 prepareJoinedRoom,
...@@ -24,13 +25,16 @@ describe("채팅", () => { ...@@ -24,13 +25,16 @@ describe("채팅", () => {
24 it("채팅을 보냅니다", () => { 25 it("채팅을 보냅니다", () => {
25 const { 26 const {
26 sockets: [socket], 27 sockets: [socket],
28 + room,
27 } = prepareJoinedRoom(1); 29 } = prepareJoinedRoom(1);
28 socket.testOk("chat", { message: "Hello World" }); 30 socket.testOk("chat", { message: "Hello World" });
31 + clear([room]);
29 }); 32 });
30 it("모두가 채팅을 받습니다", () => { 33 it("모두가 채팅을 받습니다", () => {
31 const { 34 const {
32 sockets: [socket1, socket2], 35 sockets: [socket1, socket2],
33 users: [user1, user2], 36 users: [user1, user2],
37 + room,
34 } = prepareJoinedRoom(2); 38 } = prepareJoinedRoom(2);
35 39
36 socket1.testOk("chat", { message: "Hello World" }); 40 socket1.testOk("chat", { message: "Hello World" });
...@@ -43,23 +47,31 @@ describe("채팅", () => { ...@@ -43,23 +47,31 @@ describe("채팅", () => {
43 message: "Hello World", 47 message: "Hello World",
44 sender: user1.nickname, 48 sender: user1.nickname,
45 }); 49 });
50 +
51 + clear([room]);
46 }); 52 });
47 it("빈 채팅은 보낼 수 없습니다", () => { 53 it("빈 채팅은 보낼 수 없습니다", () => {
48 const { 54 const {
49 sockets: [socket], 55 sockets: [socket],
56 + room,
50 } = prepareJoinedRoom(1); 57 } = prepareJoinedRoom(1);
51 58
52 expect(socket.test("chat", { message: "" }).ok).eq(false); 59 expect(socket.test("chat", { message: "" }).ok).eq(false);
53 expect(socket.test("chat", { message: " " }).ok).eq(false); 60 expect(socket.test("chat", { message: " " }).ok).eq(false);
61 +
62 + clear([room]);
54 }); 63 });
55 it("글자수가 300자를 넘는 채팅은 보낼 수 없습니다", () => { 64 it("글자수가 300자를 넘는 채팅은 보낼 수 없습니다", () => {
56 const { 65 const {
57 sockets: [socket], 66 sockets: [socket],
67 + room,
58 } = prepareJoinedRoom(1); 68 } = prepareJoinedRoom(1);
59 69
60 expect(socket.test("chat", { message: "A".repeat(300) }).ok).eq(true); 70 expect(socket.test("chat", { message: "A".repeat(300) }).ok).eq(true);
61 expect(socket.test("chat", { message: "A".repeat(301) }).ok).eq(false); 71 expect(socket.test("chat", { message: "A".repeat(301) }).ok).eq(false);
62 expect(socket.test("chat", { message: "가".repeat(300) }).ok).eq(true); 72 expect(socket.test("chat", { message: "가".repeat(300) }).ok).eq(true);
63 expect(socket.test("chat", { message: "가".repeat(301) }).ok).eq(false); 73 expect(socket.test("chat", { message: "가".repeat(301) }).ok).eq(false);
74 +
75 + clear([room]);
64 }); 76 });
65 }); 77 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareGame } from "./util/prepare"; 3 import { prepareGame } from "./util/prepare";
3 4
4 describe("라운드 단어 선택", () => { 5 describe("라운드 단어 선택", () => {
5 it("drawer가 단어를 선택하면 wordChosen과 timer를 받습니다", () => { 6 it("drawer가 단어를 선택하면 wordChosen과 timer를 받습니다", () => {
6 - const { drawerSocket, guesserSockets } = prepareGame(2); 7 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
7 8
8 const word = drawerSocket.socket.received("wordSet").words[0]; 9 const word = drawerSocket.socket.received("wordSet").words[0];
9 drawerSocket.testOk("chooseWord", { word }); 10 drawerSocket.testOk("chooseWord", { word });
...@@ -14,24 +15,32 @@ describe("라운드 단어 선택", () => { ...@@ -14,24 +15,32 @@ describe("라운드 단어 선택", () => {
14 word.length 15 word.length
15 ); 16 );
16 guesserSockets[0].socket.received("timer"); 17 guesserSockets[0].socket.received("timer");
18 +
19 + clear([room]);
17 }); 20 });
18 it("drawer가 아닌 다른 사람들은 단어를 선택할 수 없습니다", () => { 21 it("drawer가 아닌 다른 사람들은 단어를 선택할 수 없습니다", () => {
19 - const { drawerSocket, guesserSockets } = prepareGame(2); 22 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
20 23
21 const word = drawerSocket.socket.received("wordSet").words[0]; 24 const word = drawerSocket.socket.received("wordSet").words[0];
22 25
23 guesserSockets[0].testNotOk("chooseWord", { word }); 26 guesserSockets[0].testNotOk("chooseWord", { word });
27 +
28 + clear([room]);
24 }); 29 });
25 it("단어를 이미 고른 상태에서 다시 고를 수 없습니다", () => { 30 it("단어를 이미 고른 상태에서 다시 고를 수 없습니다", () => {
26 - const { drawerSocket } = prepareGame(2); 31 + const { drawerSocket, room } = prepareGame(2);
27 32
28 const word = drawerSocket.socket.received("wordSet").words[0]; 33 const word = drawerSocket.socket.received("wordSet").words[0];
29 drawerSocket.testOk("chooseWord", { word }); 34 drawerSocket.testOk("chooseWord", { word });
30 drawerSocket.testNotOk("chooseWord", { word }); 35 drawerSocket.testNotOk("chooseWord", { word });
36 +
37 + clear([room]);
31 }); 38 });
32 it("목록에 없는 단어를 고를 수 없습니다", () => { 39 it("목록에 없는 단어를 고를 수 없습니다", () => {
33 - const { drawerSocket } = prepareGame(2); 40 + const { drawerSocket, room } = prepareGame(2);
34 41
35 drawerSocket.testNotOk("chooseWord", { word: "Nope!" }); 42 drawerSocket.testNotOk("chooseWord", { word: "Nope!" });
43 +
44 + clear([room]);
36 }); 45 });
37 }); 46 });
......
...@@ -17,6 +17,7 @@ describe("방 생성", () => { ...@@ -17,6 +17,7 @@ describe("방 생성", () => {
17 const { 17 const {
18 sockets: [socket], 18 sockets: [socket],
19 users: [user], 19 users: [user],
20 + roomManager,
20 } = prepareUsers(1); 21 } = prepareUsers(1);
21 22
22 const response = socket.test("createRoom", { name: "테스트" }); 23 const response = socket.test("createRoom", { name: "테스트" });
...@@ -24,15 +25,20 @@ describe("방 생성", () => { ...@@ -24,15 +25,20 @@ describe("방 생성", () => {
24 expect(response.result?.name).eq("테스트"); 25 expect(response.result?.name).eq("테스트");
25 expect(response.result?.users?.length).eq(1); 26 expect(response.result?.users?.length).eq(1);
26 expect(response.result?.users[0]?.username).eq(user.username); 27 expect(response.result?.users[0]?.username).eq(user.username);
28 +
29 + roomManager.clear();
27 }); 30 });
28 it("방을 생성하면 방장이 됩니다", () => { 31 it("방을 생성하면 방장이 됩니다", () => {
29 const { 32 const {
30 sockets: [socket], 33 sockets: [socket],
34 + roomManager,
31 } = prepareUsers(1); 35 } = prepareUsers(1);
32 36
33 const response = socket.test("createRoom", { name: "테스트" }); 37 const response = socket.test("createRoom", { name: "테스트" });
34 expect(response.ok).eq(true); 38 expect(response.ok).eq(true);
35 expect(response.result?.users[0]?.admin).eq(true); 39 expect(response.result?.users[0]?.admin).eq(true);
40 +
41 + roomManager.clear();
36 }); 42 });
37 it("방의 이름은 공백이 될 수 없습니다", () => { 43 it("방의 이름은 공백이 될 수 없습니다", () => {
38 const { 44 const {
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 +import { clear } from "./util/clear";
3 import { DummySocket } from "./util/DummySocket"; 4 import { DummySocket } from "./util/DummySocket";
4 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare"; 5 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare";
5 import { SocketTester } from "./util/SocketTester"; 6 import { SocketTester } from "./util/SocketTester";
...@@ -10,6 +11,8 @@ describe("방 입장", () => { ...@@ -10,6 +11,8 @@ describe("방 입장", () => {
10 const socket = new SocketTester(roomManager); 11 const socket = new SocketTester(roomManager);
11 const room = roomManager.create("테스트", 2); 12 const room = roomManager.create("테스트", 2);
12 socket.testNotOk("joinRoom", { uuid: room.uuid }); 13 socket.testNotOk("joinRoom", { uuid: room.uuid });
14 +
15 + clear([room]);
13 }); 16 });
14 it("방에 입장합니다", () => { 17 it("방에 입장합니다", () => {
15 const { 18 const {
...@@ -25,16 +28,21 @@ describe("방 입장", () => { ...@@ -25,16 +28,21 @@ describe("방 입장", () => {
25 expect(response.result?.maxUsers).eq(room.maxUsers); 28 expect(response.result?.maxUsers).eq(room.maxUsers);
26 expect(response.result?.users?.length).eq(1); 29 expect(response.result?.users?.length).eq(1);
27 expect(response.result?.users[0]?.nickname).eq(user.nickname); 30 expect(response.result?.users[0]?.nickname).eq(user.nickname);
31 +
32 + clear([room]);
28 }); 33 });
29 it("방에 입장하면 유저 목록이 업데이트 됩니다", () => { 34 it("방에 입장하면 유저 목록이 업데이트 됩니다", () => {
30 const { 35 const {
31 sockets: [socket1, socket2], 36 sockets: [socket1, socket2],
32 users: [user1, user2], 37 users: [user1, user2],
38 + room,
33 } = prepareJoinedRoom(2); 39 } = prepareJoinedRoom(2);
34 40
35 const updated = socket1.socket.received("updateRoomUser"); 41 const updated = socket1.socket.received("updateRoomUser");
36 expect(updated.state).eq("added"); 42 expect(updated.state).eq("added");
37 expect(updated.user.nickname).eq(user2.nickname); 43 expect(updated.user.nickname).eq(user2.nickname);
44 +
45 + clear([room]);
38 }); 46 });
39 it("방에 이미 입장한 상태에서 다른 방에 입장할 수 없습니다", () => { 47 it("방에 이미 입장한 상태에서 다른 방에 입장할 수 없습니다", () => {
40 const { 48 const {
...@@ -44,6 +52,8 @@ describe("방 입장", () => { ...@@ -44,6 +52,8 @@ describe("방 입장", () => {
44 52
45 socket.testOk("joinRoom", { uuid: room1.uuid }); 53 socket.testOk("joinRoom", { uuid: room1.uuid });
46 socket.testNotOk("joinRoom", { uuid: room2.uuid }); 54 socket.testNotOk("joinRoom", { uuid: room2.uuid });
55 +
56 + clear([room1, room2]);
47 }); 57 });
48 it("가득 찬 방에는 입장할 수 없습니다", () => { 58 it("가득 찬 방에는 입장할 수 없습니다", () => {
49 const { 59 const {
...@@ -53,5 +63,7 @@ describe("방 입장", () => { ...@@ -53,5 +63,7 @@ describe("방 입장", () => {
53 63
54 socket1.testOk("joinRoom", { uuid: room.uuid }); 64 socket1.testOk("joinRoom", { uuid: room.uuid });
55 socket2.testNotOk("joinRoom", { uuid: room.uuid }); 65 socket2.testNotOk("joinRoom", { uuid: room.uuid });
66 +
67 + clear([room]);
56 }); 68 });
57 }); 69 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 import { User } from "../user/User"; 3 import { User } from "../user/User";
4 +import { clear } from "./util/clear";
4 import { DummySocket } from "./util/DummySocket"; 5 import { DummySocket } from "./util/DummySocket";
5 import { prepareJoinedRoom, prepareUsers } from "./util/prepare"; 6 import { prepareJoinedRoom, prepareUsers } from "./util/prepare";
6 import { SocketTester } from "./util/SocketTester"; 7 import { SocketTester } from "./util/SocketTester";
...@@ -27,25 +28,33 @@ describe("방 퇴장", () => { ...@@ -27,25 +28,33 @@ describe("방 퇴장", () => {
27 expect(room.users.length).eq(1); 28 expect(room.users.length).eq(1);
28 socket.testOk("leaveRoom", {}); 29 socket.testOk("leaveRoom", {});
29 expect(room.users.length).eq(0); 30 expect(room.users.length).eq(0);
31 +
32 + clear([room]);
30 }); 33 });
31 it("방에서 퇴장한 뒤 다시 요청을 보낼 수 없습니다", () => { 34 it("방에서 퇴장한 뒤 다시 요청을 보낼 수 없습니다", () => {
32 const { 35 const {
33 sockets: [socket], 36 sockets: [socket],
37 + room,
34 } = prepareJoinedRoom(1); 38 } = prepareJoinedRoom(1);
35 39
36 socket.testOk("leaveRoom", {}); 40 socket.testOk("leaveRoom", {});
37 socket.testNotOk("leaveRoom", {}); 41 socket.testNotOk("leaveRoom", {});
42 +
43 + clear([room]);
38 }); 44 });
39 it("방에서 퇴장하면 유저 목록이 업데이트 됩니다", () => { 45 it("방에서 퇴장하면 유저 목록이 업데이트 됩니다", () => {
40 const { 46 const {
41 sockets: [socket1, socket2], 47 sockets: [socket1, socket2],
42 users: [user1, user2], 48 users: [user1, user2],
49 + room,
43 } = prepareJoinedRoom(2); 50 } = prepareJoinedRoom(2);
44 51
45 socket1.testOk("leaveRoom", {}); 52 socket1.testOk("leaveRoom", {});
46 const updated = socket2.socket.received("updateRoomUser"); 53 const updated = socket2.socket.received("updateRoomUser");
47 expect(updated.state).eq("removed"); 54 expect(updated.state).eq("removed");
48 expect(updated.user.username).eq(user1.username); 55 expect(updated.user.username).eq(user1.username);
56 +
57 + clear([room]);
49 }); 58 });
50 it("방에서 퇴장한 뒤 아무도 없으면 방이 닫힙니다", () => { 59 it("방에서 퇴장한 뒤 아무도 없으면 방이 닫힙니다", () => {
51 const { 60 const {
...@@ -56,5 +65,7 @@ describe("방 퇴장", () => { ...@@ -56,5 +65,7 @@ describe("방 퇴장", () => {
56 expect(room.closed).eq(false); 65 expect(room.closed).eq(false);
57 expect(socket.test("leaveRoom", {}).ok).eq(true); 66 expect(socket.test("leaveRoom", {}).ok).eq(true);
58 expect(room.closed).eq(true); 67 expect(room.closed).eq(true);
68 +
69 + clear([room]);
59 }); 70 });
60 }); 71 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareGame } from "./util/prepare"; 3 import { prepareGame } from "./util/prepare";
3 4
4 describe("라운드 브러시 이동", () => { 5 describe("라운드 브러시 이동", () => {
5 it("drawer가 브러시를 이동하면 다른 사람들이 설정을 받습니다", () => { 6 it("drawer가 브러시를 이동하면 다른 사람들이 설정을 받습니다", () => {
6 - const { drawerSocket, guesserSockets } = prepareGame(2); 7 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
7 8
8 const brushCoord = { x: 0, y: 0 }; 9 const brushCoord = { x: 0, y: 0 };
9 drawerSocket.testOk("moveBrush", brushCoord); 10 drawerSocket.testOk("moveBrush", brushCoord);
10 expect(guesserSockets[0].socket.received("moveBrush")).deep.eq(brushCoord); 11 expect(guesserSockets[0].socket.received("moveBrush")).deep.eq(brushCoord);
12 +
13 + clear([room]);
11 }); 14 });
12 it("영역을 벗어난 좌표는 Clamp 처리됩니다", () => { 15 it("영역을 벗어난 좌표는 Clamp 처리됩니다", () => {
13 - const { drawerSocket, guesserSockets } = prepareGame(2); 16 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
14 17
15 drawerSocket.testOk("moveBrush", { x: -1, y: 1000 }); 18 drawerSocket.testOk("moveBrush", { x: -1, y: 1000 });
16 expect(guesserSockets[0].socket.received("moveBrush")).deep.eq({ 19 expect(guesserSockets[0].socket.received("moveBrush")).deep.eq({
17 x: 0, 20 x: 0,
18 y: 480, 21 y: 480,
19 }); 22 });
23 +
24 + clear([room]);
20 }); 25 });
21 it("drawer가 아닌 다른 사람들은 브러시를 이동할 수 없습니다", () => { 26 it("drawer가 아닌 다른 사람들은 브러시를 이동할 수 없습니다", () => {
22 - const { guesserSockets } = prepareGame(2); 27 + const { guesserSockets, room } = prepareGame(2);
23 28
24 const brushCoord = { x: 0, y: 0 }; 29 const brushCoord = { x: 0, y: 0 };
25 guesserSockets[0].testNotOk("moveBrush", brushCoord); 30 guesserSockets[0].testNotOk("moveBrush", brushCoord);
31 +
32 + clear([room]);
26 }); 33 });
27 }); 34 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 +import { clear } from "./util/clear";
3 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare"; 4 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare";
4 import { SocketTester } from "./util/SocketTester"; 5 import { SocketTester } from "./util/SocketTester";
5 6
...@@ -15,6 +16,8 @@ describe("준비", () => { ...@@ -15,6 +16,8 @@ describe("준비", () => {
15 expect(response.ok).eq(true); 16 expect(response.ok).eq(true);
16 expect(response.result?.users[0]?.nickname).eq(user.nickname); 17 expect(response.result?.users[0]?.nickname).eq(user.nickname);
17 expect(response.result?.users[0]?.ready).eq(false); 18 expect(response.result?.users[0]?.ready).eq(false);
19 +
20 + clear([room]);
18 }); 21 });
19 it("준비 상태를 설정합니다", () => { 22 it("준비 상태를 설정합니다", () => {
20 const { 23 const {
...@@ -40,6 +43,8 @@ describe("준비", () => { ...@@ -40,6 +43,8 @@ describe("준비", () => {
40 expect(response.state).eq("updated"); 43 expect(response.state).eq("updated");
41 expect(response.user.nickname).eq(user.nickname); 44 expect(response.user.nickname).eq(user.nickname);
42 expect(response.user.ready).eq(false); 45 expect(response.user.ready).eq(false);
46 +
47 + clear([room]);
43 }); 48 });
44 it("방장은 준비할 수 없습니다", () => { 49 it("방장은 준비할 수 없습니다", () => {
45 const { 50 const {
...@@ -50,6 +55,8 @@ describe("준비", () => { ...@@ -50,6 +55,8 @@ describe("준비", () => {
50 55
51 socket.testNotOk("ready", { ready: true }); 56 socket.testNotOk("ready", { ready: true });
52 expect(room.isReady(user)).eq(false); 57 expect(room.isReady(user)).eq(false);
58 +
59 + clear([room]);
53 }); 60 });
54 it("방장이 되면 준비 상태가 해제됩니다", () => { 61 it("방장이 되면 준비 상태가 해제됩니다", () => {
55 const { 62 const {
...@@ -62,11 +69,15 @@ describe("준비", () => { ...@@ -62,11 +69,15 @@ describe("준비", () => {
62 expect(room.isReady(user2)).eq(true); 69 expect(room.isReady(user2)).eq(true);
63 room.setAdmin(user2); 70 room.setAdmin(user2);
64 expect(room.isReady(user2)).eq(false); 71 expect(room.isReady(user2)).eq(false);
72 +
73 + clear([room]);
65 }); 74 });
66 it("혼자 있는 방에서는 게임을 시작할 수 없습니다", () => { 75 it("혼자 있는 방에서는 게임을 시작할 수 없습니다", () => {
67 const { room } = prepareJoinedRoom(1); 76 const { room } = prepareJoinedRoom(1);
68 77
69 expect(room.canStart().ok).eq(false); 78 expect(room.canStart().ok).eq(false);
79 +
80 + clear([room]);
70 }); 81 });
71 it("모두가 준비해야 게임을 시작할 수 있습니다", () => { 82 it("모두가 준비해야 게임을 시작할 수 있습니다", () => {
72 const { 83 const {
...@@ -88,5 +99,7 @@ describe("준비", () => { ...@@ -88,5 +99,7 @@ describe("준비", () => {
88 // 2, 3 모두 준비 99 // 2, 3 모두 준비
89 expect(socket2.test("ready", { ready: true }).ok).eq(true); 100 expect(socket2.test("ready", { ready: true }).ok).eq(true);
90 expect(room.canStart().ok).eq(true); 101 expect(room.canStart().ok).eq(true);
102 +
103 + clear([room]);
91 }); 104 });
92 }); 105 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 import { RoomManager } from "../room/RoomManager"; 2 import { RoomManager } from "../room/RoomManager";
3 +import { clear } from "./util/clear";
3 import { DummySocket } from "./util/DummySocket"; 4 import { DummySocket } from "./util/DummySocket";
4 import { prepareUsersEmptyRooms } from "./util/prepare"; 5 import { prepareUsersEmptyRooms } from "./util/prepare";
5 import { SocketTester } from "./util/SocketTester"; 6 import { SocketTester } from "./util/SocketTester";
...@@ -21,5 +22,7 @@ describe("방 목록 요청", () => { ...@@ -21,5 +22,7 @@ describe("방 목록 요청", () => {
21 expect(response.result?.length).eq(2); 22 expect(response.result?.length).eq(2);
22 expect(response.result[0].name).eq(room1.name); 23 expect(response.result[0].name).eq(room1.name);
23 expect(response.result[1].name).eq(room2.name); 24 expect(response.result[1].name).eq(room2.name);
25 +
26 + clear([room1, room2]);
24 }); 27 });
25 }); 28 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareGame } from "./util/prepare"; 3 import { prepareGame } from "./util/prepare";
3 4
4 describe("라운드", () => { 5 describe("라운드", () => {
...@@ -6,6 +7,7 @@ describe("라운드", () => { ...@@ -6,6 +7,7 @@ describe("라운드", () => {
6 const { 7 const {
7 sockets: [socket1, socket2], 8 sockets: [socket1, socket2],
8 drawerSocket, 9 drawerSocket,
10 + room,
9 } = prepareGame(2); 11 } = prepareGame(2);
10 12
11 expect(socket1.socket.received("startRound").round).eq(1); 13 expect(socket1.socket.received("startRound").round).eq(1);
...@@ -13,9 +15,11 @@ describe("라운드", () => { ...@@ -13,9 +15,11 @@ describe("라운드", () => {
13 15
14 // drawer는 wordSet을 받습니다. 16 // drawer는 wordSet을 받습니다.
15 expect(drawerSocket.socket.received("wordSet").words.length).eq(3); 17 expect(drawerSocket.socket.received("wordSet").words.length).eq(3);
18 +
19 + clear([room]);
16 }); 20 });
17 it("drawer가 단어를 선택하면 모두가 wordChosen과 timer를 받습니다", () => { 21 it("drawer가 단어를 선택하면 모두가 wordChosen과 timer를 받습니다", () => {
18 - const { drawerSocket, guesserSockets } = prepareGame(2); 22 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
19 23
20 const word = drawerSocket.socket.received("wordSet").words[0]; 24 const word = drawerSocket.socket.received("wordSet").words[0];
21 drawerSocket.testOk("chooseWord", { word }); 25 drawerSocket.testOk("chooseWord", { word });
...@@ -28,19 +32,23 @@ describe("라운드", () => { ...@@ -28,19 +32,23 @@ describe("라운드", () => {
28 let timerSettings = drawerSocket.socket.received("timer"); 32 let timerSettings = drawerSocket.socket.received("timer");
29 expect(timerSettings.state).eq(timerSettings.state); 33 expect(timerSettings.state).eq(timerSettings.state);
30 expect(timerSettings.time).greaterThan(59); 34 expect(timerSettings.time).greaterThan(59);
35 +
36 + clear([room]);
31 }); 37 });
32 it("drawer가 단어를 선택하지 않으면 라운드가 진행되지 않습니다", (done) => { 38 it("drawer가 단어를 선택하지 않으면 라운드가 진행되지 않습니다", (done) => {
33 - const { drawerSocket, guesserSockets } = prepareGame(2, 5, 0.1); 39 + const { drawerSocket, guesserSockets, room } = prepareGame(2, 5, 0.1);
34 40
35 // 0.2초 뒤에도 라운드가 종료되지 않습니다. 41 // 0.2초 뒤에도 라운드가 종료되지 않습니다.
36 setTimeout(() => { 42 setTimeout(() => {
37 drawerSocket.socket.notReceived("finishRound"); 43 drawerSocket.socket.notReceived("finishRound");
38 guesserSockets[0].socket.notReceived("finishRound"); 44 guesserSockets[0].socket.notReceived("finishRound");
45 +
46 + clear([room]);
39 done(); 47 done();
40 }, 200); 48 }, 200);
41 }); 49 });
42 it("아무도 단어를 맞추지 못하고 시간이 지나면 라운드가 종료됩니다", (done) => { 50 it("아무도 단어를 맞추지 못하고 시간이 지나면 라운드가 종료됩니다", (done) => {
43 - const { drawerSocket, guesserSockets } = prepareGame(2, 5, 0.2); 51 + const { drawerSocket, guesserSockets, room } = prepareGame(2, 5, 0.2);
44 52
45 const word = drawerSocket.socket.received("wordSet").words[0]; 53 const word = drawerSocket.socket.received("wordSet").words[0];
46 drawerSocket.testOk("chooseWord", { word }); 54 drawerSocket.testOk("chooseWord", { word });
...@@ -54,11 +62,13 @@ describe("라운드", () => { ...@@ -54,11 +62,13 @@ describe("라운드", () => {
54 setTimeout(() => { 62 setTimeout(() => {
55 expect(drawerSocket.socket.received("finishRound").answer).eq(word); 63 expect(drawerSocket.socket.received("finishRound").answer).eq(word);
56 expect(guesserSockets[0].socket.received("finishRound").answer).eq(word); 64 expect(guesserSockets[0].socket.received("finishRound").answer).eq(word);
65 +
66 + clear([room]);
57 done(); 67 done();
58 }, 300); 68 }, 300);
59 }); 69 });
60 it("모든 guesser가 단어를 맞추면 라운드가 종료됩니다", (done) => { 70 it("모든 guesser가 단어를 맞추면 라운드가 종료됩니다", (done) => {
61 - const { drawerSocket, guesserSockets } = prepareGame(3, 5, 0.5); 71 + const { drawerSocket, guesserSockets, room } = prepareGame(3, 5, 0.5);
62 72
63 const word = drawerSocket.socket.received("wordSet").words[0]; 73 const word = drawerSocket.socket.received("wordSet").words[0];
64 drawerSocket.testOk("chooseWord", { word }); 74 drawerSocket.testOk("chooseWord", { word });
...@@ -86,19 +96,23 @@ describe("라운드", () => { ...@@ -86,19 +96,23 @@ describe("라운드", () => {
86 // 0.3초 뒤에는 라운드가 종료됩니다. 96 // 0.3초 뒤에는 라운드가 종료됩니다.
87 setTimeout(() => { 97 setTimeout(() => {
88 drawerSocket.socket.received("finishRound"); 98 drawerSocket.socket.received("finishRound");
99 +
100 + clear([room]);
89 done(); 101 done();
90 }, 300); 102 }, 300);
91 }); 103 });
92 it("drawer가 단어를 선택하지 않고 나가면 즉시 라운드가 다시 시작됩니다", () => { 104 it("drawer가 단어를 선택하지 않고 나가면 즉시 라운드가 다시 시작됩니다", () => {
93 - const { drawerSocket, guesserSockets } = prepareGame(3); 105 + const { drawerSocket, guesserSockets, room } = prepareGame(3);
94 guesserSockets[0].socket.received("startRound"); 106 guesserSockets[0].socket.received("startRound");
95 107
96 guesserSockets[0].socket.notReceived("startRound"); 108 guesserSockets[0].socket.notReceived("startRound");
97 drawerSocket.disconnect(); 109 drawerSocket.disconnect();
98 expect(guesserSockets[0].socket.received("startRound").round).eq(1); 110 expect(guesserSockets[0].socket.received("startRound").round).eq(1);
111 +
112 + clear([room]);
99 }); 113 });
100 it("drawer가 단어를 선택하지 않고 모든 guesser가 나가면 인원이 부족하므로 게임이 종료됩니다", () => { 114 it("drawer가 단어를 선택하지 않고 모든 guesser가 나가면 인원이 부족하므로 게임이 종료됩니다", () => {
101 - const { drawerSocket, guesserSockets } = prepareGame(3); 115 + const { drawerSocket, guesserSockets, room } = prepareGame(3);
102 116
103 drawerSocket.socket.notReceived("finishRound"); 117 drawerSocket.socket.notReceived("finishRound");
104 guesserSockets[0].disconnect(); 118 guesserSockets[0].disconnect();
...@@ -106,9 +120,11 @@ describe("라운드", () => { ...@@ -106,9 +120,11 @@ describe("라운드", () => {
106 guesserSockets[1].disconnect(); 120 guesserSockets[1].disconnect();
107 // 단어가 선택되지 않았으므로 finishRound가 수신되지 않습니다. 121 // 단어가 선택되지 않았으므로 finishRound가 수신되지 않습니다.
108 drawerSocket.socket.received("finishGame"); 122 drawerSocket.socket.received("finishGame");
123 +
124 + clear([room]);
109 }); 125 });
110 it("drawer가 단어를 선택하고 모든 guesser가 나가면 인원이 부족하므로 게임이 종료됩니다", () => { 126 it("drawer가 단어를 선택하고 모든 guesser가 나가면 인원이 부족하므로 게임이 종료됩니다", () => {
111 - const { drawerSocket, guesserSockets } = prepareGame(3); 127 + const { drawerSocket, guesserSockets, room } = prepareGame(3);
112 128
113 const word = drawerSocket.socket.received("wordSet").words[0]; 129 const word = drawerSocket.socket.received("wordSet").words[0];
114 drawerSocket.testOk("chooseWord", { word }); 130 drawerSocket.testOk("chooseWord", { word });
...@@ -119,9 +135,11 @@ describe("라운드", () => { ...@@ -119,9 +135,11 @@ describe("라운드", () => {
119 guesserSockets[1].disconnect(); 135 guesserSockets[1].disconnect();
120 drawerSocket.socket.received("finishRound"); 136 drawerSocket.socket.received("finishRound");
121 drawerSocket.socket.received("finishGame"); 137 drawerSocket.socket.received("finishGame");
138 +
139 + clear([room]);
122 }); 140 });
123 it("drawer가 단어를 선택하고 나가면 라운드가 종료됩니다", () => { 141 it("drawer가 단어를 선택하고 나가면 라운드가 종료됩니다", () => {
124 - const { drawerSocket, guesserSockets } = prepareGame(3); 142 + const { drawerSocket, guesserSockets, room } = prepareGame(3);
125 143
126 const word = drawerSocket.socket.received("wordSet").words[0]; 144 const word = drawerSocket.socket.received("wordSet").words[0];
127 drawerSocket.testOk("chooseWord", { word }); 145 drawerSocket.testOk("chooseWord", { word });
...@@ -130,9 +148,11 @@ describe("라운드", () => { ...@@ -130,9 +148,11 @@ describe("라운드", () => {
130 drawerSocket.disconnect(); 148 drawerSocket.disconnect();
131 guesserSockets[0].socket.received("finishRound"); 149 guesserSockets[0].socket.received("finishRound");
132 guesserSockets[0].socket.notReceived("finishGame"); 150 guesserSockets[0].socket.notReceived("finishGame");
151 +
152 + clear([room]);
133 }); 153 });
134 it("라운드가 종료되고 다음 라운드를 기다리는 동안 drawer가 나가도 다음 라운드가 시작됩니다", (done) => { 154 it("라운드가 종료되고 다음 라운드를 기다리는 동안 drawer가 나가도 다음 라운드가 시작됩니다", (done) => {
135 - const { drawerSocket, guesserSockets } = prepareGame(3, 5, 5, 0.1); 155 + const { drawerSocket, guesserSockets, room } = prepareGame(3, 5, 5, 0.1);
136 guesserSockets[0].socket.received("startRound"); 156 guesserSockets[0].socket.received("startRound");
137 157
138 const word = drawerSocket.socket.received("wordSet").words[0]; 158 const word = drawerSocket.socket.received("wordSet").words[0];
...@@ -147,11 +167,13 @@ describe("라운드", () => { ...@@ -147,11 +167,13 @@ describe("라운드", () => {
147 167
148 setTimeout(() => { 168 setTimeout(() => {
149 expect(guesserSockets[0].socket.received("startRound").round).eq(2); 169 expect(guesserSockets[0].socket.received("startRound").round).eq(2);
170 +
171 + clear([room]);
150 done(); 172 done();
151 }, 200); 173 }, 200);
152 }); 174 });
153 it("라운드가 종료되고 다음 라운드를 기다리는 동안 인원이 부족해지면 게임이 즉시 종료됩니다", () => { 175 it("라운드가 종료되고 다음 라운드를 기다리는 동안 인원이 부족해지면 게임이 즉시 종료됩니다", () => {
154 - const { drawerSocket, guesserSockets } = prepareGame(2, 5, 5, 0.1); 176 + const { drawerSocket, guesserSockets, room } = prepareGame(2, 5, 5, 0.1);
155 guesserSockets[0].socket.received("startRound"); 177 guesserSockets[0].socket.received("startRound");
156 178
157 const word = drawerSocket.socket.received("wordSet").words[0]; 179 const word = drawerSocket.socket.received("wordSet").words[0];
...@@ -163,9 +185,11 @@ describe("라운드", () => { ...@@ -163,9 +185,11 @@ describe("라운드", () => {
163 guesserSockets[0].disconnect(); 185 guesserSockets[0].disconnect();
164 186
165 drawerSocket.socket.received("finishGame"); 187 drawerSocket.socket.received("finishGame");
188 +
189 + clear([room]);
166 }); 190 });
167 it("라운드가 종료되면 다음 라운드가 시작됩니다", (done) => { 191 it("라운드가 종료되면 다음 라운드가 시작됩니다", (done) => {
168 - const { drawerSocket, guesserSockets } = prepareGame(2, 5, 0.2, 0.2); 192 + const { drawerSocket, guesserSockets, room } = prepareGame(2, 5, 0.2, 0.2);
169 193
170 drawerSocket.socket.received("startRound"); 194 drawerSocket.socket.received("startRound");
171 guesserSockets[0].socket.received("startRound"); 195 guesserSockets[0].socket.received("startRound");
...@@ -188,11 +212,13 @@ describe("라운드", () => { ...@@ -188,11 +212,13 @@ describe("라운드", () => {
188 setTimeout(() => { 212 setTimeout(() => {
189 expect(drawerSocket.socket.received("startRound").round).eq(2); 213 expect(drawerSocket.socket.received("startRound").round).eq(2);
190 expect(guesserSockets[0].socket.received("startRound").round).eq(2); 214 expect(guesserSockets[0].socket.received("startRound").round).eq(2);
215 +
216 + clear([room]);
191 done(); 217 done();
192 }, 500); 218 }, 500);
193 }); 219 });
194 it("마지막 라운드가 종료되면 게임이 종료됩니다", (done) => { 220 it("마지막 라운드가 종료되면 게임이 종료됩니다", (done) => {
195 - const { drawerSocket } = prepareGame(2, 1, 0.1, 0.2); 221 + const { drawerSocket, room } = prepareGame(2, 1, 0.1, 0.2);
196 222
197 const word = drawerSocket.socket.received("wordSet").words[0]; 223 const word = drawerSocket.socket.received("wordSet").words[0];
198 drawerSocket.testOk("chooseWord", { word }); 224 drawerSocket.testOk("chooseWord", { word });
...@@ -203,6 +229,8 @@ describe("라운드", () => { ...@@ -203,6 +229,8 @@ describe("라운드", () => {
203 }, 200); 229 }, 200);
204 setTimeout(() => { 230 setTimeout(() => {
205 drawerSocket.socket.received("finishGame"); 231 drawerSocket.socket.received("finishGame");
232 +
233 + clear([room]);
206 done(); 234 done();
207 }, 400); 235 }, 400);
208 }); 236 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareGame } from "./util/prepare"; 3 import { prepareGame } from "./util/prepare";
3 4
4 describe("라운드 채팅", () => { 5 describe("라운드 채팅", () => {
5 it("guesser가 정답을 채팅으로 보내면 정답 처리되고 다른 사람들에게 채팅이 보이지 않습니다", () => { 6 it("guesser가 정답을 채팅으로 보내면 정답 처리되고 다른 사람들에게 채팅이 보이지 않습니다", () => {
6 - const { drawerSocket, guesserSockets } = prepareGame(3); 7 + const { drawerSocket, guesserSockets, room } = prepareGame(3);
7 8
8 const word = drawerSocket.socket.received("wordSet").words[0]; 9 const word = drawerSocket.socket.received("wordSet").words[0];
9 drawerSocket.testOk("chooseWord", { word }); 10 drawerSocket.testOk("chooseWord", { word });
...@@ -15,9 +16,11 @@ describe("라운드 채팅", () => { ...@@ -15,9 +16,11 @@ describe("라운드 채팅", () => {
15 guesserSockets[0].testOk("chat", { message: word }); 16 guesserSockets[0].testOk("chat", { message: word });
16 expect(guesserSockets[0].socket.received("answerAccepted").answer).eq(word); 17 expect(guesserSockets[0].socket.received("answerAccepted").answer).eq(word);
17 guesserSockets[1].socket.notReceived("chat"); 18 guesserSockets[1].socket.notReceived("chat");
19 +
20 + clear([room]);
18 }); 21 });
19 it("guesser가 정답을 채팅으로 보내면 역할이 winner로 변경됩니다", () => { 22 it("guesser가 정답을 채팅으로 보내면 역할이 winner로 변경됩니다", () => {
20 - const { drawerSocket, guesserSockets } = prepareGame(2); 23 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
21 24
22 const word = drawerSocket.socket.received("wordSet").words[0]; 25 const word = drawerSocket.socket.received("wordSet").words[0];
23 drawerSocket.testOk("chooseWord", { word }); 26 drawerSocket.testOk("chooseWord", { word });
...@@ -32,9 +35,11 @@ describe("라운드 채팅", () => { ...@@ -32,9 +35,11 @@ describe("라운드 채팅", () => {
32 username: guesserSockets[0].connection.user?.username, 35 username: guesserSockets[0].connection.user?.username,
33 role: "winner", 36 role: "winner",
34 }); 37 });
38 +
39 + clear([room]);
35 }); 40 });
36 it("라운드가 끝나고 다음 라운드를 준비하는 시간에 답을 채팅으로 보내도 정답 처리되지 않습니다", (done) => { 41 it("라운드가 끝나고 다음 라운드를 준비하는 시간에 답을 채팅으로 보내도 정답 처리되지 않습니다", (done) => {
37 - const { drawerSocket, guesserSockets } = prepareGame(2, 5, 0.1, 0.3); 42 + const { drawerSocket, guesserSockets, room } = prepareGame(2, 5, 0.1, 0.3);
38 43
39 const word = drawerSocket.socket.received("wordSet").words[0]; 44 const word = drawerSocket.socket.received("wordSet").words[0];
40 drawerSocket.testOk("chooseWord", { word }); 45 drawerSocket.testOk("chooseWord", { word });
...@@ -45,11 +50,18 @@ describe("라운드 채팅", () => { ...@@ -45,11 +50,18 @@ describe("라운드 채팅", () => {
45 guesserSockets[0].testOk("chat", { message: word }); 50 guesserSockets[0].testOk("chat", { message: word });
46 guesserSockets[0].socket.notReceived("answerAccepted"); 51 guesserSockets[0].socket.notReceived("answerAccepted");
47 guesserSockets[0].socket.notReceived("role"); 52 guesserSockets[0].socket.notReceived("role");
53 +
54 + clear([room]);
48 done(); 55 done();
49 }, 200); 56 }, 200);
50 }); 57 });
51 it("다음 라운드의 단어가 선택되지 않았을 때 이전 라운드의 답을 채팅으로 보내도 정답 처리되지 않습니다", (done) => { 58 it("다음 라운드의 단어가 선택되지 않았을 때 이전 라운드의 답을 채팅으로 보내도 정답 처리되지 않습니다", (done) => {
52 - const { drawerSocket, guesserSockets, game } = prepareGame(2, 5, 0.2, 0.1); 59 + const { drawerSocket, guesserSockets, game, room } = prepareGame(
60 + 2,
61 + 5,
62 + 0.2,
63 + 0.1
64 + );
53 65
54 const word = drawerSocket.socket.received("wordSet").words[0]; 66 const word = drawerSocket.socket.received("wordSet").words[0];
55 drawerSocket.testOk("chooseWord", { word }); 67 drawerSocket.testOk("chooseWord", { word });
...@@ -67,6 +79,8 @@ describe("라운드 채팅", () => { ...@@ -67,6 +79,8 @@ describe("라운드 채팅", () => {
67 } else { 79 } else {
68 throw new Error("There is no drawer!"); 80 throw new Error("There is no drawer!");
69 } 81 }
82 +
83 + clear([room]);
70 done(); 84 done();
71 }, 400); 85 }, 400);
72 }); 86 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareGame } from "./util/prepare"; 3 import { prepareGame } from "./util/prepare";
3 4
4 describe("라운드 브러시 설정", () => { 5 describe("라운드 브러시 설정", () => {
5 it("drawer가 브러시를 설정하면 다른 사람들이 설정을 받습니다", () => { 6 it("drawer가 브러시를 설정하면 다른 사람들이 설정을 받습니다", () => {
6 - const { drawerSocket, guesserSockets } = prepareGame(2); 7 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
7 8
8 const brushSettings = { 9 const brushSettings = {
9 size: 1, 10 size: 1,
...@@ -14,9 +15,11 @@ describe("라운드 브러시 설정", () => { ...@@ -14,9 +15,11 @@ describe("라운드 브러시 설정", () => {
14 expect(guesserSockets[0].socket.received("setBrush")).deep.eq( 15 expect(guesserSockets[0].socket.received("setBrush")).deep.eq(
15 brushSettings 16 brushSettings
16 ); 17 );
18 +
19 + clear([room]);
17 }); 20 });
18 it("올바르지 않은 브러시 색상은 허용되지 않습니다", () => { 21 it("올바르지 않은 브러시 색상은 허용되지 않습니다", () => {
19 - const { drawerSocket } = prepareGame(2); 22 + const { drawerSocket, room } = prepareGame(2);
20 drawerSocket.testNotOk("setBrush", { 23 drawerSocket.testNotOk("setBrush", {
21 size: 1, 24 size: 1,
22 color: "000", 25 color: "000",
...@@ -27,9 +30,11 @@ describe("라운드 브러시 설정", () => { ...@@ -27,9 +30,11 @@ describe("라운드 브러시 설정", () => {
27 color: "asdf01", 30 color: "asdf01",
28 drawing: true, 31 drawing: true,
29 }); 32 });
33 +
34 + clear([room]);
30 }); 35 });
31 it("올바르지 않은 브러시 사이즈는 Clamp 됩니다", () => { 36 it("올바르지 않은 브러시 사이즈는 Clamp 됩니다", () => {
32 - const { drawerSocket, guesserSockets } = prepareGame(2); 37 + const { drawerSocket, guesserSockets, room } = prepareGame(2);
33 drawerSocket.testOk("setBrush", { 38 drawerSocket.testOk("setBrush", {
34 size: 0, 39 size: 0,
35 color: "000000", 40 color: "000000",
...@@ -42,9 +47,11 @@ describe("라운드 브러시 설정", () => { ...@@ -42,9 +47,11 @@ describe("라운드 브러시 설정", () => {
42 drawing: true, 47 drawing: true,
43 }); 48 });
44 expect(guesserSockets[0].socket.received("setBrush").size).eq(64); 49 expect(guesserSockets[0].socket.received("setBrush").size).eq(64);
50 +
51 + clear([room]);
45 }); 52 });
46 it("drawer가 아닌 다른 사람들은 브러시를 설정할 수 없습니다", () => { 53 it("drawer가 아닌 다른 사람들은 브러시를 설정할 수 없습니다", () => {
47 - const { guesserSockets } = prepareGame(2); 54 + const { guesserSockets, room } = prepareGame(2);
48 55
49 const brushSettings = { 56 const brushSettings = {
50 size: 1, 57 size: 1,
...@@ -52,5 +59,7 @@ describe("라운드 브러시 설정", () => { ...@@ -52,5 +59,7 @@ describe("라운드 브러시 설정", () => {
52 drawing: true, 59 drawing: true,
53 }; 60 };
54 guesserSockets[0].testNotOk("setBrush", brushSettings); 61 guesserSockets[0].testNotOk("setBrush", brushSettings);
62 +
63 + clear([room]);
55 }); 64 });
56 }); 65 });
......
1 import { expect } from "chai"; 1 import { expect } from "chai";
2 +import { clear } from "./util/clear";
2 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare"; 3 import { prepareJoinedRoom, prepareUsersEmptyRooms } from "./util/prepare";
3 4
4 describe("게임 시작", () => { 5 describe("게임 시작", () => {
...@@ -14,17 +15,23 @@ describe("게임 시작", () => { ...@@ -14,17 +15,23 @@ describe("게임 시작", () => {
14 15
15 expect(socket2.testNotOk("startGame", {})); 16 expect(socket2.testNotOk("startGame", {}));
16 expect(socket1.testOk("startGame", {})); 17 expect(socket1.testOk("startGame", {}));
18 +
19 + clear([room]);
17 }); 20 });
18 it("인원이 충분해야 게임을 시작할 수 있습니다.", () => { 21 it("인원이 충분해야 게임을 시작할 수 있습니다.", () => {
19 const { 22 const {
20 sockets: [socket1], 23 sockets: [socket1],
24 + room,
21 } = prepareJoinedRoom(1); 25 } = prepareJoinedRoom(1);
22 26
23 expect(socket1.testNotOk("startGame", {})); 27 expect(socket1.testNotOk("startGame", {}));
28 +
29 + clear([room]);
24 }); 30 });
25 it("게임이 시작되면 startRound를 받습니다.", () => { 31 it("게임이 시작되면 startRound를 받습니다.", () => {
26 const { 32 const {
27 sockets: [socket1, socket2], 33 sockets: [socket1, socket2],
34 + room,
28 } = prepareJoinedRoom(2); 35 } = prepareJoinedRoom(2);
29 36
30 expect(socket2.testOk("ready", { ready: true })); 37 expect(socket2.testOk("ready", { ready: true }));
...@@ -32,5 +39,7 @@ describe("게임 시작", () => { ...@@ -32,5 +39,7 @@ describe("게임 시작", () => {
32 39
33 expect(socket1.socket.received("startRound")); 40 expect(socket1.socket.received("startRound"));
34 expect(socket2.socket.received("startRound")); 41 expect(socket2.socket.received("startRound"));
42 +
43 + clear([room]);
35 }); 44 });
36 }); 45 });
......
1 +import { Game } from "../../game/Game";
2 +import { Room } from "../../room/Room";
3 +
4 +export function clear(rooms: Room[]): void {
5 + rooms.forEach((room) => {
6 + room.game?.finishGame();
7 + room.close();
8 + });
9 +}