Skip to content

Commit 5dc1b7f

Browse files
authored
fix: create Workers elsewhere and mock for tests (2004Scape#441)
1 parent 33aeddc commit 5dc1b7f

File tree

5 files changed

+22
-2
lines changed

5 files changed

+22
-2
lines changed

src/lostcity/engine/Login.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,10 @@ import Player from '#lostcity/entity/Player.js';
99

1010
import ClientSocket from '#lostcity/server/ClientSocket.js';
1111
import { PlayerLoading } from '#lostcity/entity/PlayerLoading.js';
12+
import { createWorker } from '#lostcity/util/WorkerFactory.js';
1213

1314
class Login {
14-
loginThread: Worker = new Worker('./src/lostcity/server/LoginThread.ts');
15+
loginThread: Worker = createWorker('./src/lostcity/server/LoginThread.ts');
1516
loginRequests: Map<string, ClientSocket> = new Map();
1617
logoutRequests: Set<bigint> = new Set();
1718

src/lostcity/engine/World.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ import { ZoneEvent } from './zone/Zone.js';
5656
import LinkList from '#jagex2/datastruct/LinkList.js';
5757
import ClientProt from '#lostcity/server/ClientProt.js';
5858
import { NetworkPlayer, isNetworkPlayer } from '#lostcity/entity/NetworkPlayer.js';
59+
import { createWorker } from '#lostcity/util/WorkerFactory.js';
5960

6061
class World {
6162
id = Environment.WORLD_ID as number;
@@ -88,7 +89,7 @@ class World {
8889
futureUpdates: Map<number, number[]> = new Map();
8990
queue: LinkList<EntityQueueState> = new LinkList();
9091

91-
friendThread: Worker = new Worker('./src/lostcity/server/FriendThread.ts');
92+
friendThread: Worker = createWorker('./src/lostcity/server/FriendThread.ts');
9293

9394
constructor() {
9495
this.players.fill(null);
@@ -1072,6 +1073,7 @@ class World {
10721073

10731074
removeNpc(npc: Npc) {
10741075
const zone = this.getZone(npc.x, npc.z, npc.level);
1076+
console.log('Removing npc', npc.nid, 'from zone', zone.index);
10751077
zone.leave(npc);
10761078

10771079
switch (npc.blockWalk) {

src/lostcity/util/WorkerFactory.ts

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
import { Worker } from 'node:worker_threads';
2+
3+
export function createWorker(fileName: string) {
4+
return new Worker(fileName);
5+
}

vitest.config.ts

+2
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ const Configuration = defineConfig({
99
globals: true,
1010
// Prevent test cross-contamination when mocking implementations
1111
mockReset: true,
12+
// Files to run before tests
13+
setupFiles: [ './vitest/mock-worker.ts' ]
1214
},
1315
});
1416

vitest/mock-worker.ts

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { vi } from 'vitest';
2+
3+
vi.mock('#lostcity/util/WorkerFactory.js', async () => {
4+
return {
5+
createWorker: () => ({
6+
on: vi.fn(),
7+
postMessage: vi.fn()
8+
})
9+
};
10+
});

0 commit comments

Comments
 (0)