@takaro/modules 0.0.1 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/BuiltinModule.js +0 -4
- package/dist/BuiltinModule.js.map +1 -1
- package/dist/community-modules.json +21 -0
- package/dist/dto/gameEvents.d.ts +3 -2
- package/dist/dto/gameEvents.js +1 -0
- package/dist/dto/gameEvents.js.map +1 -1
- package/dist/dto/index.d.ts +6 -0
- package/dist/dto/takaroEvents.d.ts +46 -0
- package/dist/dto/takaroEvents.js +129 -1
- package/dist/dto/takaroEvents.js.map +1 -1
- package/dist/main.js +1 -1
- package/dist/main.js.map +1 -1
- package/dist/modules/chatBridge/hooks/GameToDiscord.js +1 -1
- package/dist/modules/chatBridge/hooks/GameToDiscord.js.map +1 -1
- package/dist/modules/chatBridge/hooks/PlayerConnected.js +2 -2
- package/dist/modules/chatBridge/hooks/PlayerConnected.js.map +1 -1
- package/dist/modules/chatBridge/hooks/PlayerDisconnected.js +1 -1
- package/dist/modules/chatBridge/hooks/PlayerDisconnected.js.map +1 -1
- package/dist/modules/economyUtils/commands/transfer.js +1 -1
- package/dist/modules/economyUtils/commands/transfer.js.map +1 -1
- package/dist/modules/geoBlock/hooks/IPDetected.js +3 -5
- package/dist/modules/geoBlock/hooks/IPDetected.js.map +1 -1
- package/dist/modules/geoBlock/index.js +1 -1
- package/dist/modules/geoBlock/index.js.map +1 -1
- package/dist/modules/gimme/commands/gimme.js +1 -0
- package/dist/modules/gimme/commands/gimme.js.map +1 -1
- package/dist/modules/lottery/commands/nextDraw.js +1 -1
- package/dist/modules/lottery/commands/nextDraw.js.map +1 -1
- package/dist/modules/playerOnboarding/index.js.map +1 -1
- package/dist/modules/teleports/commands/deletetp.js +1 -1
- package/dist/modules/teleports/commands/deletetp.js.map +1 -1
- package/dist/modules/teleports/commands/setprivate.js +4 -6
- package/dist/modules/teleports/commands/setprivate.js.map +1 -1
- package/dist/modules/teleports/commands/setpublic.js +8 -15
- package/dist/modules/teleports/commands/setpublic.js.map +1 -1
- package/dist/modules/teleports/commands/settp.js +2 -2
- package/dist/modules/teleports/commands/settp.js.map +1 -1
- package/dist/modules/teleports/commands/teleport.js +3 -8
- package/dist/modules/teleports/commands/teleport.js.map +1 -1
- package/dist/modules/teleports/commands/teleportwaypoint.js +9 -1
- package/dist/modules/teleports/commands/teleportwaypoint.js.map +1 -1
- package/dist/modules/teleports/commands/tplist.js +13 -12
- package/dist/modules/teleports/commands/tplist.js.map +1 -1
- package/dist/modules/teleports/functions/utils.d.ts +2 -2
- package/dist/modules/teleports/functions/utils.js +21 -3
- package/dist/modules/teleports/functions/utils.js.map +1 -1
- package/dist/modules.json +99 -79
- package/package.json +4 -8
- package/scripts/buildBuiltinJson.ts +20 -0
- package/src/BuiltinModule.ts +1 -1
- package/src/__tests__/aliases.integration.test.ts +6 -7
- package/src/__tests__/bugRepros.integration.test.ts +72 -0
- package/src/__tests__/commandArgs.integration.test.ts +24 -25
- package/src/__tests__/economyUtils.integration.test.ts +66 -60
- package/src/__tests__/geoblock.integration.test.ts +22 -65
- package/src/__tests__/gimme.integration.test.ts +35 -36
- package/src/__tests__/help.integration.test.ts +47 -35
- package/src/__tests__/lottery.integration.test.ts +32 -28
- package/src/__tests__/modulePermission.integration.test.ts +24 -18
- package/src/__tests__/onboarding.integration.test.ts +13 -14
- package/src/__tests__/ping.integration.test.ts +5 -6
- package/src/__tests__/roleExpiry.integration.test.ts +9 -10
- package/src/__tests__/serverMessages.integration.test.ts +14 -12
- package/src/__tests__/systemConfigCost.integration.test.ts +14 -15
- package/src/__tests__/teleports/listtp.integration.test.ts +98 -22
- package/src/__tests__/teleports/publicteleports.integration.test.ts +55 -48
- package/src/__tests__/teleports/teleport.integration.test.ts +17 -16
- package/src/__tests__/teleports/tpManagement.integration.test.ts +26 -27
- package/src/__tests__/teleports/waypoints.integration.test.ts +113 -82
- package/src/community-modules/README.md +5 -0
- package/src/community-modules/modules/vote.json +19 -0
- package/src/dto/gameEvents.ts +2 -2
- package/src/dto/takaroEvents.ts +79 -0
- package/src/main.ts +2 -3
- package/src/modules/chatBridge/hooks/GameToDiscord.js +1 -1
- package/src/modules/chatBridge/hooks/PlayerConnected.js +2 -2
- package/src/modules/chatBridge/hooks/PlayerDisconnected.js +1 -1
- package/src/modules/chatBridge/index.ts +1 -1
- package/src/modules/economyUtils/commands/transfer.js +4 -4
- package/src/modules/economyUtils/index.ts +1 -1
- package/src/modules/geoBlock/hooks/IPDetected.js +3 -4
- package/src/modules/geoBlock/index.ts +2 -2
- package/src/modules/gimme/commands/gimme.js +2 -1
- package/src/modules/gimme/index.ts +1 -1
- package/src/modules/highPingKicker/index.ts +1 -1
- package/src/modules/lottery/commands/nextDraw.js +3 -1
- package/src/modules/lottery/index.ts +1 -1
- package/src/modules/playerOnboarding/index.ts +2 -1
- package/src/modules/serverMessages/index.ts +1 -1
- package/src/modules/teleports/commands/deletetp.js +1 -1
- package/src/modules/teleports/commands/setprivate.js +6 -6
- package/src/modules/teleports/commands/setpublic.js +18 -25
- package/src/modules/teleports/commands/settp.js +2 -2
- package/src/modules/teleports/commands/teleport.js +3 -10
- package/src/modules/teleports/commands/teleportwaypoint.js +12 -1
- package/src/modules/teleports/commands/tplist.js +16 -15
- package/src/modules/teleports/functions/utils.js +19 -3
- package/src/modules/teleports/index.ts +1 -1
- package/src/modules/utils/index.ts +1 -1
|
@@ -1,5 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import {
|
|
2
|
+
IntegrationTest,
|
|
3
|
+
expect,
|
|
4
|
+
IModuleTestsSetupData,
|
|
5
|
+
modulesTestSetup,
|
|
6
|
+
chatMessageSorter,
|
|
7
|
+
EventsAwaiter,
|
|
8
|
+
} from '@takaro/test';
|
|
3
9
|
import { GameEvents } from '../dto/index.js';
|
|
4
10
|
|
|
5
11
|
const group = 'Economy utils suite';
|
|
@@ -31,10 +37,10 @@ const tests = [
|
|
|
31
37
|
test: async function () {
|
|
32
38
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
33
39
|
this.setupData.gameserver.id,
|
|
34
|
-
this.setupData.economyUtilsModule.id
|
|
40
|
+
this.setupData.economyUtilsModule.id,
|
|
35
41
|
);
|
|
36
42
|
|
|
37
|
-
const events = this.
|
|
43
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
38
44
|
|
|
39
45
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
40
46
|
msg: '/balance',
|
|
@@ -52,7 +58,7 @@ const tests = [
|
|
|
52
58
|
playerOnGameServer[0].playerId,
|
|
53
59
|
{
|
|
54
60
|
currency: 1000,
|
|
55
|
-
}
|
|
61
|
+
},
|
|
56
62
|
);
|
|
57
63
|
|
|
58
64
|
// trigger balance command
|
|
@@ -62,8 +68,8 @@ const tests = [
|
|
|
62
68
|
});
|
|
63
69
|
|
|
64
70
|
expect((await events).length).to.be.eq(2);
|
|
65
|
-
expect((await events)[0].data.msg).to.be.eq('balance: 0 test coin');
|
|
66
|
-
expect((await events)[1].data.msg).to.be.eq('balance: 1000 test coin');
|
|
71
|
+
expect((await events)[0].data.meta.msg).to.be.eq('balance: 0 test coin');
|
|
72
|
+
expect((await events)[1].data.meta.msg).to.be.eq('balance: 1000 test coin');
|
|
67
73
|
},
|
|
68
74
|
}),
|
|
69
75
|
new IntegrationTest<IModuleTestsSetupData>({
|
|
@@ -75,7 +81,7 @@ const tests = [
|
|
|
75
81
|
// install module
|
|
76
82
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
77
83
|
this.setupData.gameserver.id,
|
|
78
|
-
this.setupData.economyUtilsModule.id
|
|
84
|
+
this.setupData.economyUtilsModule.id,
|
|
79
85
|
);
|
|
80
86
|
|
|
81
87
|
const giveCurrencies = this.setupData.players.map(async (player, index) => {
|
|
@@ -90,24 +96,24 @@ const tests = [
|
|
|
90
96
|
playerOnGameServer[0].playerId,
|
|
91
97
|
{
|
|
92
98
|
currency: 1000 * index,
|
|
93
|
-
}
|
|
99
|
+
},
|
|
94
100
|
);
|
|
95
101
|
});
|
|
96
102
|
await Promise.all(giveCurrencies);
|
|
97
103
|
|
|
98
104
|
// title message (1) + balance of player messages (5)
|
|
99
|
-
const events = this.
|
|
105
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 6);
|
|
100
106
|
|
|
101
107
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
102
108
|
msg: '/topcurrency',
|
|
103
109
|
playerId: this.setupData.players[0].id,
|
|
104
110
|
});
|
|
105
111
|
|
|
106
|
-
const messages = (await events).map((e) => e.data.msg as string);
|
|
112
|
+
const messages = (await events).map((e) => e.data.meta.msg as string);
|
|
107
113
|
expect((await events).length).to.be.eq(6);
|
|
108
114
|
for (const message of messages) {
|
|
109
115
|
expect(message).to.match(
|
|
110
|
-
/(Richest players\:|1\. .+ - 4000 test coin|2\. .+ - 3000 test coin|3\. .+ - 2000 test coin|4\. .+ - 1000 test coin|5\. .+ - 0 test coin)
|
|
116
|
+
/(Richest players\:|1\. .+ - 4000 test coin|2\. .+ - 3000 test coin|3\. .+ - 2000 test coin|4\. .+ - 1000 test coin|5\. .+ - 0 test coin)/,
|
|
111
117
|
);
|
|
112
118
|
}
|
|
113
119
|
},
|
|
@@ -120,7 +126,7 @@ const tests = [
|
|
|
120
126
|
test: async function () {
|
|
121
127
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
122
128
|
this.setupData.gameserver.id,
|
|
123
|
-
this.setupData.economyUtilsModule.id
|
|
129
|
+
this.setupData.economyUtilsModule.id,
|
|
124
130
|
);
|
|
125
131
|
|
|
126
132
|
const transferAmount = 500;
|
|
@@ -133,36 +139,36 @@ const tests = [
|
|
|
133
139
|
senderPog.playerId,
|
|
134
140
|
{
|
|
135
141
|
currency: transferAmount,
|
|
136
|
-
}
|
|
142
|
+
},
|
|
137
143
|
);
|
|
138
144
|
|
|
139
145
|
const receiver = this.setupData.players[1];
|
|
140
146
|
const receiverPog = receiver.playerOnGameServers?.find(
|
|
141
|
-
(pog) => pog.gameServerId === this.setupData.gameserver.id
|
|
147
|
+
(pog) => pog.gameServerId === this.setupData.gameserver.id,
|
|
142
148
|
);
|
|
143
149
|
if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
|
|
144
150
|
expect(receiverPog.currency).to.be.eq(0);
|
|
145
151
|
|
|
146
|
-
const events = this.
|
|
152
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
147
153
|
|
|
148
154
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
149
155
|
msg: `/transfer ${receiver.name} ${transferAmount}`,
|
|
150
156
|
playerId: sender.id,
|
|
151
157
|
});
|
|
152
158
|
|
|
153
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
159
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
154
160
|
expect((await events).length).to.be.eq(2);
|
|
155
161
|
|
|
156
162
|
// check if balances are correct
|
|
157
163
|
const updatedSender = await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
158
164
|
senderPog.gameServerId,
|
|
159
|
-
senderPog.playerId
|
|
165
|
+
senderPog.playerId,
|
|
160
166
|
);
|
|
161
167
|
expect(updatedSender.data.data.currency).to.be.eq(0);
|
|
162
168
|
|
|
163
169
|
const updatedReceiver = await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
164
170
|
receiverPog.gameServerId,
|
|
165
|
-
receiverPog.playerId
|
|
171
|
+
receiverPog.playerId,
|
|
166
172
|
);
|
|
167
173
|
expect(updatedReceiver.data.data.currency).to.be.eq(transferAmount);
|
|
168
174
|
|
|
@@ -178,24 +184,24 @@ const tests = [
|
|
|
178
184
|
test: async function () {
|
|
179
185
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
180
186
|
this.setupData.gameserver.id,
|
|
181
|
-
this.setupData.economyUtilsModule.id
|
|
187
|
+
this.setupData.economyUtilsModule.id,
|
|
182
188
|
);
|
|
183
189
|
|
|
184
190
|
const sender = this.setupData.players[0];
|
|
185
191
|
const receiver = this.setupData.players[1];
|
|
186
192
|
const transferAmount = 500;
|
|
187
193
|
|
|
188
|
-
const events = this.
|
|
194
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
|
|
189
195
|
|
|
190
196
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
191
197
|
msg: `/transfer ${receiver.name} ${transferAmount}`,
|
|
192
198
|
playerId: sender.id,
|
|
193
199
|
});
|
|
194
200
|
|
|
195
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
201
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
196
202
|
expect((await events).length).to.be.eq(1);
|
|
197
203
|
expect(messages[0]).to.be.eq(
|
|
198
|
-
`Failed to transfer ${transferAmount} test coin to ${receiver.name}. Are you sure you have enough balance
|
|
204
|
+
`Failed to transfer ${transferAmount} test coin to ${receiver.name}. Are you sure you have enough balance?`,
|
|
199
205
|
);
|
|
200
206
|
},
|
|
201
207
|
}),
|
|
@@ -212,7 +218,7 @@ const tests = [
|
|
|
212
218
|
userConfig: JSON.stringify({
|
|
213
219
|
pendingAmount: 100,
|
|
214
220
|
}),
|
|
215
|
-
}
|
|
221
|
+
},
|
|
216
222
|
);
|
|
217
223
|
|
|
218
224
|
const transferAmount = 500;
|
|
@@ -228,73 +234,73 @@ const tests = [
|
|
|
228
234
|
senderPog.playerId,
|
|
229
235
|
{
|
|
230
236
|
currency: transferAmount,
|
|
231
|
-
}
|
|
237
|
+
},
|
|
232
238
|
);
|
|
233
239
|
|
|
234
240
|
const receiver = this.setupData.players[1];
|
|
235
241
|
const receiverPog = receiver.playerOnGameServers?.find(
|
|
236
|
-
(pog) => pog.gameServerId === this.setupData.gameserver.id
|
|
242
|
+
(pog) => pog.gameServerId === this.setupData.gameserver.id,
|
|
237
243
|
);
|
|
238
244
|
if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
|
|
239
245
|
expect(receiverPog.currency).to.be.eq(0);
|
|
240
246
|
|
|
241
|
-
let events = this.
|
|
247
|
+
let events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
|
|
242
248
|
|
|
243
249
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
244
250
|
msg: `/transfer ${receiver.name} ${transferAmount}`,
|
|
245
251
|
playerId: sender.id,
|
|
246
252
|
});
|
|
247
253
|
|
|
248
|
-
let messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
254
|
+
let messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
249
255
|
|
|
250
256
|
// check if balances have not changed yet
|
|
251
257
|
expect(
|
|
252
258
|
(
|
|
253
259
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
254
260
|
senderPog.gameServerId,
|
|
255
|
-
senderPog.playerId
|
|
261
|
+
senderPog.playerId,
|
|
256
262
|
)
|
|
257
|
-
).data.data.currency
|
|
263
|
+
).data.data.currency,
|
|
258
264
|
).to.be.eq(transferAmount);
|
|
259
265
|
expect(
|
|
260
266
|
(
|
|
261
267
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
262
268
|
receiverPog.gameServerId,
|
|
263
|
-
receiverPog.playerId
|
|
269
|
+
receiverPog.playerId,
|
|
264
270
|
)
|
|
265
|
-
).data.data.currency
|
|
271
|
+
).data.data.currency,
|
|
266
272
|
).to.be.eq(0);
|
|
267
273
|
expect(messages.length).to.be.eq(1);
|
|
268
274
|
expect(messages[0]).to.be.eq(
|
|
269
|
-
`You are about to send ${transferAmount} test coin to ${receiver.name}. (Please confirm by typing ${prefix}confirmtransfer)
|
|
275
|
+
`You are about to send ${transferAmount} test coin to ${receiver.name}. (Please confirm by typing ${prefix}confirmtransfer)`,
|
|
270
276
|
);
|
|
271
277
|
|
|
272
278
|
// =================================================
|
|
273
279
|
// transfer confirmed
|
|
274
280
|
// =================================================
|
|
275
|
-
events = this.
|
|
281
|
+
events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
276
282
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
277
283
|
msg: `${prefix}confirmtransfer`,
|
|
278
284
|
playerId: sender.id,
|
|
279
285
|
});
|
|
280
286
|
|
|
281
|
-
messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
287
|
+
messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
282
288
|
expect((await events).length).to.be.eq(2);
|
|
283
289
|
expect(
|
|
284
290
|
(
|
|
285
291
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
286
292
|
senderPog.gameServerId,
|
|
287
|
-
senderPog.playerId
|
|
293
|
+
senderPog.playerId,
|
|
288
294
|
)
|
|
289
|
-
).data.data.currency
|
|
295
|
+
).data.data.currency,
|
|
290
296
|
).to.be.eq(0);
|
|
291
297
|
expect(
|
|
292
298
|
(
|
|
293
299
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
294
300
|
receiverPog.gameServerId,
|
|
295
|
-
receiverPog.playerId
|
|
301
|
+
receiverPog.playerId,
|
|
296
302
|
)
|
|
297
|
-
).data.data.currency
|
|
303
|
+
).data.data.currency,
|
|
298
304
|
).to.be.eq(transferAmount);
|
|
299
305
|
|
|
300
306
|
expect(messages[0]).to.be.eq(`You received ${transferAmount} test coin from ${sender.name}`);
|
|
@@ -314,15 +320,15 @@ const tests = [
|
|
|
314
320
|
userConfig: JSON.stringify({
|
|
315
321
|
pendingAmount: 100,
|
|
316
322
|
}),
|
|
317
|
-
}
|
|
323
|
+
},
|
|
318
324
|
);
|
|
319
|
-
const events = this.
|
|
325
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 1);
|
|
320
326
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
321
327
|
msg: '/confirmtransfer',
|
|
322
328
|
playerId: this.setupData.players[0].id,
|
|
323
329
|
});
|
|
324
330
|
|
|
325
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
331
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
326
332
|
expect(messages[0]).to.be.eq('You have no pending transfer.');
|
|
327
333
|
},
|
|
328
334
|
}),
|
|
@@ -338,7 +344,7 @@ const tests = [
|
|
|
338
344
|
|
|
339
345
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
340
346
|
this.setupData.gameserver.id,
|
|
341
|
-
this.setupData.economyUtilsModule.id
|
|
347
|
+
this.setupData.economyUtilsModule.id,
|
|
342
348
|
);
|
|
343
349
|
|
|
344
350
|
// Change permissions of role to only have manageCurrency permission
|
|
@@ -352,25 +358,25 @@ const tests = [
|
|
|
352
358
|
});
|
|
353
359
|
|
|
354
360
|
const receiverPog = receiver.playerOnGameServers?.find(
|
|
355
|
-
(pog) => pog.gameServerId === this.setupData.gameserver.id
|
|
361
|
+
(pog) => pog.gameServerId === this.setupData.gameserver.id,
|
|
356
362
|
);
|
|
357
363
|
if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
|
|
358
364
|
expect(receiverPog.currency).to.be.eq(0);
|
|
359
365
|
|
|
360
|
-
const events = this.
|
|
366
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
361
367
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
362
368
|
msg: `/grantcurrency ${receiver.name} ${grantAmount}`,
|
|
363
369
|
playerId: granter.id,
|
|
364
370
|
});
|
|
365
371
|
|
|
366
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
372
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
367
373
|
expect(
|
|
368
374
|
(
|
|
369
375
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
370
376
|
receiverPog.gameServerId,
|
|
371
|
-
receiverPog.playerId
|
|
377
|
+
receiverPog.playerId,
|
|
372
378
|
)
|
|
373
|
-
).data.data.currency
|
|
379
|
+
).data.data.currency,
|
|
374
380
|
).to.be.eq(grantAmount);
|
|
375
381
|
expect(messages[0]).to.be.eq(`Granted ${grantAmount} test coin by ${granter.name}`);
|
|
376
382
|
expect(messages[1]).to.be.eq(`You successfully granted ${grantAmount} test coin to ${receiver.name}`);
|
|
@@ -388,7 +394,7 @@ const tests = [
|
|
|
388
394
|
|
|
389
395
|
// make sure receiver has enough currency
|
|
390
396
|
const receiverPog = receiver.playerOnGameServers?.find(
|
|
391
|
-
(pog) => pog.gameServerId === this.setupData.gameserver.id
|
|
397
|
+
(pog) => pog.gameServerId === this.setupData.gameserver.id,
|
|
392
398
|
);
|
|
393
399
|
if (!receiverPog) throw new Error('Receiver playerOnGameServer does not exist');
|
|
394
400
|
await this.client.playerOnGameserver.playerOnGameServerControllerSetCurrency(
|
|
@@ -396,12 +402,12 @@ const tests = [
|
|
|
396
402
|
receiverPog.playerId,
|
|
397
403
|
{
|
|
398
404
|
currency: revokeAmount,
|
|
399
|
-
}
|
|
405
|
+
},
|
|
400
406
|
);
|
|
401
407
|
|
|
402
408
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
403
409
|
this.setupData.gameserver.id,
|
|
404
|
-
this.setupData.economyUtilsModule.id
|
|
410
|
+
this.setupData.economyUtilsModule.id,
|
|
405
411
|
);
|
|
406
412
|
|
|
407
413
|
// Change permissions of role to only have manageCurrency permission
|
|
@@ -416,23 +422,23 @@ const tests = [
|
|
|
416
422
|
|
|
417
423
|
// currency before revoke
|
|
418
424
|
expect(
|
|
419
|
-
receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency
|
|
425
|
+
receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency,
|
|
420
426
|
).to.be.eq(0);
|
|
421
427
|
|
|
422
|
-
const events = this.
|
|
428
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
423
429
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
424
430
|
msg: `/revokecurrency ${receiver.name} ${revokeAmount}`,
|
|
425
431
|
playerId: revoker.id,
|
|
426
432
|
});
|
|
427
433
|
|
|
428
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
434
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
429
435
|
expect(
|
|
430
436
|
(
|
|
431
437
|
await this.client.playerOnGameserver.playerOnGameServerControllerGetOne(
|
|
432
438
|
receiverPog.gameServerId,
|
|
433
|
-
receiverPog.playerId
|
|
439
|
+
receiverPog.playerId,
|
|
434
440
|
)
|
|
435
|
-
).data.data.currency
|
|
441
|
+
).data.data.currency,
|
|
436
442
|
).to.be.eq(0);
|
|
437
443
|
expect(messages[0]).to.be.eq(`${revokeAmount} test coin were revoked by ${revoker.name}`);
|
|
438
444
|
expect(messages[1]).to.be.eq(`You successfully revoked ${revokeAmount} test coin of ${receiver.name}'s balance`);
|
|
@@ -455,15 +461,15 @@ const tests = [
|
|
|
455
461
|
|
|
456
462
|
await this.client.gameserver.gameServerControllerInstallModule(
|
|
457
463
|
this.setupData.gameserver.id,
|
|
458
|
-
this.setupData.economyUtilsModule.id
|
|
464
|
+
this.setupData.economyUtilsModule.id,
|
|
459
465
|
);
|
|
460
466
|
|
|
461
467
|
// currency before revoke
|
|
462
468
|
expect(
|
|
463
|
-
receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency
|
|
469
|
+
receiver.playerOnGameServers?.find((pog) => pog.gameServerId === this.setupData.gameserver.id)?.currency,
|
|
464
470
|
).to.be.eq(0);
|
|
465
471
|
|
|
466
|
-
const events = this.
|
|
472
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(GameEvents.CHAT_MESSAGE, 2);
|
|
467
473
|
await this.client.command.commandControllerTrigger(this.setupData.gameserver.id, {
|
|
468
474
|
msg: `/grantcurrency ${receiver.name} ${amount}`,
|
|
469
475
|
playerId: sender.id,
|
|
@@ -474,7 +480,7 @@ const tests = [
|
|
|
474
480
|
playerId: sender.id,
|
|
475
481
|
});
|
|
476
482
|
|
|
477
|
-
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.msg as string);
|
|
483
|
+
const messages = (await events).sort(chatMessageSorter).map((e) => e.data.meta.msg as string);
|
|
478
484
|
expect(messages[0]).to.be.eq('You do not have permission to use grant currency command.');
|
|
479
485
|
expect(messages[1]).to.be.eq('You do not have permission to use revoke currency command.');
|
|
480
486
|
},
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import { IntegrationTest, expect } from '@takaro/test';
|
|
2
|
-
import { IModuleTestsSetupData, modulesTestSetup } from '@takaro/test';
|
|
1
|
+
import { IntegrationTest, expect, IModuleTestsSetupData, modulesTestSetup, EventsAwaiter } from '@takaro/test';
|
|
3
2
|
import { HookEvents } from '../dto/index.js';
|
|
4
3
|
import { TakaroEventPlayerNewIpDetected } from '@takaro/modules';
|
|
5
4
|
import { faker } from '@faker-js/faker';
|
|
@@ -12,7 +11,7 @@ const customSetup = async function (this: IntegrationTest<IModuleTestsSetupData>
|
|
|
12
11
|
await Promise.all(
|
|
13
12
|
setupData.players.map(async (player) => {
|
|
14
13
|
await this.client.player.playerControllerRemoveRole(player.id, setupData.role.id);
|
|
15
|
-
})
|
|
14
|
+
}),
|
|
16
15
|
);
|
|
17
16
|
|
|
18
17
|
return setupData;
|
|
@@ -34,9 +33,9 @@ const tests = [
|
|
|
34
33
|
countries: ['RU'],
|
|
35
34
|
ban: false,
|
|
36
35
|
}),
|
|
37
|
-
}
|
|
36
|
+
},
|
|
38
37
|
);
|
|
39
|
-
const events = this.
|
|
38
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
|
|
40
39
|
await this.client.hook.hookControllerTrigger({
|
|
41
40
|
gameServerId: this.setupData.gameserver.id,
|
|
42
41
|
playerId: this.setupData.players[0].id,
|
|
@@ -51,8 +50,7 @@ const tests = [
|
|
|
51
50
|
});
|
|
52
51
|
|
|
53
52
|
expect((await events).length).to.be.eq(1);
|
|
54
|
-
expect((await events)[0].data.
|
|
55
|
-
expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
|
|
53
|
+
expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
|
|
56
54
|
},
|
|
57
55
|
}),
|
|
58
56
|
new IntegrationTest<IModuleTestsSetupData>({
|
|
@@ -70,9 +68,9 @@ const tests = [
|
|
|
70
68
|
countries: ['RU'],
|
|
71
69
|
ban: false,
|
|
72
70
|
}),
|
|
73
|
-
}
|
|
71
|
+
},
|
|
74
72
|
);
|
|
75
|
-
const events = this.
|
|
73
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
|
|
76
74
|
|
|
77
75
|
await this.client.hook.hookControllerTrigger({
|
|
78
76
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -109,9 +107,9 @@ const tests = [
|
|
|
109
107
|
countries: ['RU'],
|
|
110
108
|
ban: false,
|
|
111
109
|
}),
|
|
112
|
-
}
|
|
110
|
+
},
|
|
113
111
|
);
|
|
114
|
-
const events = this.
|
|
112
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
|
|
115
113
|
|
|
116
114
|
await this.client.hook.hookControllerTrigger({
|
|
117
115
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -148,9 +146,9 @@ const tests = [
|
|
|
148
146
|
countries: ['RU'],
|
|
149
147
|
ban: false,
|
|
150
148
|
}),
|
|
151
|
-
}
|
|
149
|
+
},
|
|
152
150
|
);
|
|
153
|
-
const events = this.
|
|
151
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
|
|
154
152
|
|
|
155
153
|
await this.client.hook.hookControllerTrigger({
|
|
156
154
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -166,8 +164,7 @@ const tests = [
|
|
|
166
164
|
});
|
|
167
165
|
|
|
168
166
|
expect((await events).length).to.be.eq(1);
|
|
169
|
-
expect((await events)[0].data.
|
|
170
|
-
expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
|
|
167
|
+
expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
|
|
171
168
|
},
|
|
172
169
|
}),
|
|
173
170
|
new IntegrationTest<IModuleTestsSetupData>({
|
|
@@ -185,9 +182,9 @@ const tests = [
|
|
|
185
182
|
countries: ['RU'],
|
|
186
183
|
ban: true,
|
|
187
184
|
}),
|
|
188
|
-
}
|
|
185
|
+
},
|
|
189
186
|
);
|
|
190
|
-
const events = this.
|
|
187
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
|
|
191
188
|
|
|
192
189
|
await this.client.hook.hookControllerTrigger({
|
|
193
190
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -203,46 +200,7 @@ const tests = [
|
|
|
203
200
|
});
|
|
204
201
|
|
|
205
202
|
expect((await events).length).to.be.eq(1);
|
|
206
|
-
expect((await events)[0].data.
|
|
207
|
-
expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
|
|
208
|
-
},
|
|
209
|
-
}),
|
|
210
|
-
new IntegrationTest<IModuleTestsSetupData>({
|
|
211
|
-
group,
|
|
212
|
-
snapshot: false,
|
|
213
|
-
setup: customSetup,
|
|
214
|
-
name: 'MESSAGE CONFIGURATION: Custom message displayed to player on kick/ban',
|
|
215
|
-
test: async function () {
|
|
216
|
-
await this.client.gameserver.gameServerControllerInstallModule(
|
|
217
|
-
this.setupData.gameserver.id,
|
|
218
|
-
this.setupData.geoBlockModule.id,
|
|
219
|
-
{
|
|
220
|
-
userConfig: JSON.stringify({
|
|
221
|
-
mode: 'allow',
|
|
222
|
-
countries: ['RU'],
|
|
223
|
-
ban: true,
|
|
224
|
-
message: 'Custom message',
|
|
225
|
-
}),
|
|
226
|
-
}
|
|
227
|
-
);
|
|
228
|
-
const events = this.setupData.eventAwaiter.waitForEvents(HookEvents.PLAYER_DISCONNECTED);
|
|
229
|
-
|
|
230
|
-
await this.client.hook.hookControllerTrigger({
|
|
231
|
-
gameServerId: this.setupData.gameserver.id,
|
|
232
|
-
playerId: this.setupData.players[0].id,
|
|
233
|
-
eventType: HookEvents.PLAYER_NEW_IP_DETECTED,
|
|
234
|
-
eventMeta: new TakaroEventPlayerNewIpDetected({
|
|
235
|
-
city: 'nowhere',
|
|
236
|
-
country: 'BE',
|
|
237
|
-
latitude: '0',
|
|
238
|
-
longitude: '0',
|
|
239
|
-
ip: faker.internet.ip(),
|
|
240
|
-
}),
|
|
241
|
-
});
|
|
242
|
-
|
|
243
|
-
expect((await events).length).to.be.eq(1);
|
|
244
|
-
expect((await events)[0].data.msg).to.match(/Banned Custom message/);
|
|
245
|
-
expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
|
|
203
|
+
expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
|
|
246
204
|
},
|
|
247
205
|
}),
|
|
248
206
|
new IntegrationTest<IModuleTestsSetupData>({
|
|
@@ -261,9 +219,9 @@ const tests = [
|
|
|
261
219
|
ban: true,
|
|
262
220
|
message: 'Custom message',
|
|
263
221
|
}),
|
|
264
|
-
}
|
|
222
|
+
},
|
|
265
223
|
);
|
|
266
|
-
const events = this.
|
|
224
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.PLAYER_DISCONNECTED);
|
|
267
225
|
|
|
268
226
|
await this.client.hook.hookControllerTrigger({
|
|
269
227
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -279,8 +237,7 @@ const tests = [
|
|
|
279
237
|
});
|
|
280
238
|
|
|
281
239
|
expect((await events).length).to.be.eq(1);
|
|
282
|
-
expect((await events)[0].data.
|
|
283
|
-
expect((await events)[0].data.player.name).to.be.eq(this.setupData.players[0].name);
|
|
240
|
+
expect((await events)[0].data.playerId).to.be.eq(this.setupData.players[0].id);
|
|
284
241
|
},
|
|
285
242
|
}),
|
|
286
243
|
new IntegrationTest<IModuleTestsSetupData>({
|
|
@@ -299,7 +256,7 @@ const tests = [
|
|
|
299
256
|
ban: true,
|
|
300
257
|
message: 'Custom message',
|
|
301
258
|
}),
|
|
302
|
-
}
|
|
259
|
+
},
|
|
303
260
|
);
|
|
304
261
|
const permissions = await this.client.permissionCodesToInputs(['GEOBLOCK_IMMUNITY']);
|
|
305
262
|
const roleRes = await this.client.role.roleControllerCreate({
|
|
@@ -309,7 +266,7 @@ const tests = [
|
|
|
309
266
|
|
|
310
267
|
await this.client.player.playerControllerAssignRole(this.setupData.players[0].id, roleRes.data.data.id);
|
|
311
268
|
|
|
312
|
-
const events = this.
|
|
269
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
|
|
313
270
|
|
|
314
271
|
await this.client.hook.hookControllerTrigger({
|
|
315
272
|
gameServerId: this.setupData.gameserver.id,
|
|
@@ -347,9 +304,9 @@ const tests = [
|
|
|
347
304
|
ban: true,
|
|
348
305
|
message: 'Custom message',
|
|
349
306
|
}),
|
|
350
|
-
}
|
|
307
|
+
},
|
|
351
308
|
);
|
|
352
|
-
const events = this.
|
|
309
|
+
const events = (await new EventsAwaiter().connect(this.client)).waitForEvents(HookEvents.HOOK_EXECUTED);
|
|
353
310
|
|
|
354
311
|
await this.client.hook.hookControllerTrigger({
|
|
355
312
|
gameServerId: this.setupData.gameserver.id,
|