@daiso-tech/core 0.39.0 → 0.40.0

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.
Files changed (63) hide show
  1. package/dist/cache/contracts/cache-adapter.contract.d.ts +9 -9
  2. package/dist/cache/contracts/database-cache-adapter.contract.d.ts +10 -10
  3. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +9 -9
  4. package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
  5. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  6. package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +3 -3
  7. package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +3 -3
  8. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +1 -0
  9. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +26 -26
  10. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  11. package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +11 -4
  12. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +17 -12
  13. package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -1
  14. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +17 -20
  15. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
  16. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +159 -752
  17. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  18. package/dist/lock/contracts/database-lock-adapter.contract.d.ts +52 -14
  19. package/dist/lock/contracts/lock-adapter.contract.d.ts +29 -8
  20. package/dist/lock/contracts/lock-adapter.contract.js +10 -1
  21. package/dist/lock/contracts/lock-adapter.contract.js.map +1 -1
  22. package/dist/lock/contracts/lock.contract.d.ts +17 -12
  23. package/dist/lock/contracts/lock.errors.d.ts +10 -0
  24. package/dist/lock/contracts/lock.errors.js +12 -0
  25. package/dist/lock/contracts/lock.errors.js.map +1 -1
  26. package/dist/lock/contracts/lock.events.d.ts +12 -0
  27. package/dist/lock/contracts/lock.events.js +1 -0
  28. package/dist/lock/contracts/lock.events.js.map +1 -1
  29. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +24 -6
  30. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +126 -31
  31. package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
  32. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +20 -7
  33. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +59 -35
  34. package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -1
  35. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +9 -9
  36. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +150 -78
  37. package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
  38. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +5 -5
  39. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +3 -2
  40. package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js.map +1 -1
  41. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +5 -5
  42. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +44 -22
  43. package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
  44. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +3 -3
  45. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +42 -10
  46. package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -1
  47. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +7 -5
  48. package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -1
  49. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  50. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +1 -1
  51. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +3 -2
  52. package/dist/lock/implementations/derivables/lock-provider/lock.js +60 -41
  53. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  54. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +184 -166
  55. package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js.map +1 -1
  56. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +240 -41
  57. package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
  58. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +2700 -1510
  59. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  60. package/dist/utilities/contracts/deinitizable.contract.d.ts +1 -1
  61. package/dist/utilities/contracts/initizable.contract.d.ts +1 -1
  62. package/dist/utilities/contracts/prunable.contract.d.ts +1 -1
  63. package/package.json +1 -1
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @module EventBus
3
3
  */
4
- import {} from "vitest";
4
+ import { vi, } from "vitest";
5
5
  import {} from "../../../event-bus/contracts/_module-exports.js";
6
6
  import {} from "../../../utilities/_module-exports.js";
7
7
  import { TimeSpan } from "../../../utilities/_module-exports.js";
@@ -20,775 +20,181 @@ export function eventBusTestSuite(settings) {
20
20
  eventBus = await createEventBus();
21
21
  });
22
22
  describe("method: addListener, removeListener, dispatch", () => {
23
- describe("Should be null when listener is added and event is not triggered", () => {
24
- test("Object literal listener", async () => {
25
- const listener = {
26
- result: null,
27
- invoke(event) {
28
- this.result = event;
29
- },
30
- };
31
- await eventBus.addListener("add", listener);
32
- expect(listener.result).toBeNull();
33
- await eventBus.removeListener("add", listener);
34
- });
35
- test("Class instance listener", async () => {
36
- class Listener {
37
- result = null;
38
- invoke(event) {
39
- this.result = event;
40
- }
41
- }
42
- const listener = new Listener();
43
- await eventBus.addListener("add", listener);
44
- expect(listener.result).toBeNull();
45
- await eventBus.removeListener("add", listener);
46
- });
47
- test("Function listener", async () => {
48
- let result = null;
49
- const listener = (event) => {
50
- result = event;
51
- };
52
- await eventBus.addListener("add", listener);
53
- expect(result).toBeNull();
54
- await eventBus.removeListener("add", listener);
55
- });
56
- });
57
- describe("Should be AddEvent when listener is added and event is triggered", () => {
58
- test("Object literal listener", async () => {
59
- const listener = {
60
- result: null,
61
- invoke(event) {
62
- this.result = event;
63
- },
64
- };
65
- await eventBus.addListener("add", listener);
66
- const event = {
67
- a: 1,
68
- b: 2,
69
- };
70
- await eventBus.dispatch("add", event);
71
- await LazyPromise.delay(TTL);
72
- expect(listener.result).toEqual(event);
73
- await eventBus.removeListener("add", listener);
74
- });
75
- test("Class instance listener", async () => {
76
- class Listener {
77
- result = null;
78
- invoke(event) {
79
- this.result = event;
80
- }
81
- }
82
- const listener = new Listener();
83
- await eventBus.addListener("add", listener);
84
- const event = {
85
- a: 1,
86
- b: 2,
87
- };
88
- await eventBus.dispatch("add", event);
89
- await LazyPromise.delay(TTL);
90
- expect(listener.result).toEqual(event);
91
- await eventBus.removeListener("add", listener);
92
- });
93
- test("Function listener", async () => {
94
- let result = null;
95
- const listener = (event) => {
96
- result = event;
97
- };
98
- await eventBus.addListener("add", listener);
99
- const event = {
100
- a: 1,
101
- b: 2,
102
- };
103
- await eventBus.dispatch("add", event);
104
- await LazyPromise.delay(TTL);
105
- expect(result).toEqual(event);
106
- await eventBus.removeListener("add", listener);
107
- });
108
- });
109
- describe("Should be null when listener is removed and event is triggered", () => {
110
- test("Object literal listener", async () => {
111
- const listener = {
112
- result: null,
113
- invoke(event) {
114
- this.result = event;
115
- },
116
- };
117
- await eventBus.addListener("add", listener);
118
- await eventBus.removeListener("add", listener);
119
- const event = {
120
- a: 1,
121
- b: 2,
122
- };
123
- await eventBus.dispatch("add", event);
124
- await LazyPromise.delay(TTL);
125
- expect(listener.result).toBeNull();
126
- });
127
- test("Class instance listener", async () => {
128
- class Listener {
129
- result = null;
130
- invoke(event) {
131
- this.result = event;
132
- }
133
- }
134
- const listener = new Listener();
135
- await eventBus.addListener("add", listener);
136
- await eventBus.removeListener("add", listener);
137
- const event = {
138
- a: 1,
139
- b: 2,
140
- };
141
- await eventBus.dispatch("add", event);
142
- await LazyPromise.delay(TTL);
143
- expect(listener.result).toBeNull();
144
- });
145
- test("Function listener", async () => {
146
- let result = null;
147
- const listener = (event) => {
148
- result = event;
149
- };
150
- await eventBus.addListener("add", listener);
151
- await eventBus.removeListener("add", listener);
152
- const event = {
153
- a: 1,
154
- b: 2,
155
- };
156
- await eventBus.dispatch("add", event);
157
- await LazyPromise.delay(TTL);
158
- expect(result).toBeNull();
159
- });
23
+ test("Should not call listener when listener is added and event is not triggered", async () => {
24
+ const listener = vi.fn((_event) => { });
25
+ await eventBus.addListener("add", listener);
26
+ expect(listener).toHaveBeenCalledTimes(0);
27
+ await eventBus.removeListener("add", listener);
28
+ });
29
+ test("Should call listener 2 times with AddEvent when listener is added and event is triggered 2 times", async () => {
30
+ const listener = vi.fn((_event) => { });
31
+ await eventBus.addListener("add", listener);
32
+ const event = {
33
+ a: 1,
34
+ b: 2,
35
+ };
36
+ await eventBus.dispatch("add", event);
37
+ await eventBus.dispatch("add", event);
38
+ await LazyPromise.delay(TTL);
39
+ expect(listener).toHaveBeenCalledTimes(2);
40
+ expect(listener).toHaveBeenCalledWith(event);
41
+ await eventBus.removeListener("add", listener);
42
+ });
43
+ test("Should not call listener when listener is removed and event is triggered", async () => {
44
+ const listener = vi.fn((_event) => { });
45
+ await eventBus.addListener("add", listener);
46
+ await eventBus.removeListener("add", listener);
47
+ const event = {
48
+ a: 1,
49
+ b: 2,
50
+ };
51
+ await eventBus.dispatch("add", event);
52
+ await LazyPromise.delay(TTL);
53
+ expect(listener).toHaveBeenCalledTimes(0);
160
54
  });
161
55
  });
162
56
  describe("method: subscribe, dispatch", () => {
163
- describe("Should be null when listener is added and event is not triggered", () => {
164
- test("Object literal listener", async () => {
165
- const listener = {
166
- result: null,
167
- invoke(event) {
168
- this.result = event;
169
- },
170
- };
171
- const unsubscribe = await eventBus.subscribe("add", listener);
172
- expect(listener.result).toBeNull();
173
- await unsubscribe();
174
- });
175
- test("Class instance listener", async () => {
176
- class Listener {
177
- result = null;
178
- invoke(event) {
179
- this.result = event;
180
- }
181
- }
182
- const listener = new Listener();
183
- const unsubscribe = await eventBus.subscribe("add", listener);
184
- expect(listener.result).toBeNull();
185
- await unsubscribe();
186
- });
187
- test("Function listener", async () => {
188
- let result = null;
189
- const listener = (event) => {
190
- result = event;
191
- };
192
- const unsubscribe = await eventBus.subscribe("add", listener);
193
- expect(result).toBeNull();
194
- await unsubscribe();
195
- });
196
- });
197
- describe("Should be AddEvent when listener is added and event is triggered", () => {
198
- test("Object literal listener", async () => {
199
- const listener = {
200
- result: null,
201
- invoke(event) {
202
- this.result = event;
203
- },
204
- };
205
- const unsubscribe = await eventBus.subscribe("add", listener);
206
- const event = {
207
- a: 1,
208
- b: 2,
209
- };
210
- await eventBus.dispatch("add", event);
211
- await LazyPromise.delay(TTL);
212
- expect(listener.result).toEqual(event);
213
- await unsubscribe();
214
- });
215
- test("Class instance listener", async () => {
216
- class Listener {
217
- result = null;
218
- invoke(event) {
219
- this.result = event;
220
- }
221
- }
222
- const listener = new Listener();
223
- const unsubscribe = await eventBus.subscribe("add", listener);
224
- const event = {
225
- a: 1,
226
- b: 2,
227
- };
228
- await eventBus.dispatch("add", event);
229
- await LazyPromise.delay(TTL);
230
- expect(listener.result).toEqual(event);
231
- await unsubscribe();
232
- });
233
- test("Function listener", async () => {
234
- let result = null;
235
- const listener = (event) => {
236
- result = event;
237
- };
238
- const unsubscribe = await eventBus.subscribe("add", listener);
239
- const event = {
240
- a: 1,
241
- b: 2,
242
- };
243
- await eventBus.dispatch("add", event);
244
- await LazyPromise.delay(TTL);
245
- expect(result).toEqual(event);
246
- await unsubscribe();
247
- });
248
- });
249
- describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
250
- test("Object literal listener", async () => {
251
- const listener = {
252
- result: null,
253
- invoke(event) {
254
- this.result = event;
255
- },
256
- };
257
- const unsubscribe = await eventBus.subscribe("add", listener);
258
- await unsubscribe();
259
- const event = {
260
- a: 1,
261
- b: 2,
262
- };
263
- await eventBus.dispatch("add", event);
264
- await LazyPromise.delay(TTL);
265
- expect(listener.result).toBeNull();
266
- });
267
- test("Class instance listener", async () => {
268
- class Listener {
269
- result = null;
270
- invoke(event) {
271
- this.result = event;
272
- }
273
- }
274
- const listener = new Listener();
275
- const unsubscribe = await eventBus.subscribe("add", listener);
276
- await unsubscribe();
277
- const event = {
278
- a: 1,
279
- b: 2,
280
- };
281
- await eventBus.dispatch("add", event);
282
- await LazyPromise.delay(TTL);
283
- expect(listener.result).toBeNull();
284
- });
285
- test("Function listener", async () => {
286
- let result = null;
287
- const listener = (event) => {
288
- result = event;
289
- };
290
- const unsubscribe = await eventBus.subscribe("add", listener);
291
- await unsubscribe();
292
- const event = {
293
- a: 1,
294
- b: 2,
295
- };
296
- await eventBus.dispatch("add", event);
297
- await LazyPromise.delay(TTL);
298
- expect(result).toBeNull();
299
- });
57
+ test("Should not call listener when listener is added and event is not triggered", async () => {
58
+ const listener = vi.fn((_event) => { });
59
+ const unsubscribe = await eventBus.subscribe("add", listener);
60
+ expect(listener).toHaveBeenCalledTimes(0);
61
+ await unsubscribe();
62
+ });
63
+ test("Should call listener 2 times with AddEvent when listener is added and event is triggered 2 times", async () => {
64
+ const listener = vi.fn((_event) => { });
65
+ const unsubscribe = await eventBus.subscribe("add", listener);
66
+ const event = {
67
+ a: 1,
68
+ b: 2,
69
+ };
70
+ await eventBus.dispatch("add", event);
71
+ await eventBus.dispatch("add", event);
72
+ await LazyPromise.delay(TTL);
73
+ expect(listener).toHaveBeenCalledTimes(2);
74
+ expect(listener).toHaveBeenCalledWith(event);
75
+ await unsubscribe();
76
+ });
77
+ test("Should not call listener when listener is removed by unsubscribe and event is triggered", async () => {
78
+ const listener = vi.fn((_event) => { });
79
+ const unsubscribe = await eventBus.subscribe("add", listener);
80
+ await unsubscribe();
81
+ const event = {
82
+ a: 1,
83
+ b: 2,
84
+ };
85
+ await eventBus.dispatch("add", event);
86
+ await LazyPromise.delay(TTL);
87
+ expect(listener).toHaveBeenCalledTimes(0);
300
88
  });
301
- describe("Should be null when listener is removed by removeListener and event is triggered", () => {
302
- test("Object literal listener", async () => {
303
- const listener = {
304
- result: null,
305
- invoke(event) {
306
- this.result = event;
307
- },
308
- };
309
- await eventBus.subscribe("add", listener);
310
- await eventBus.removeListener("add", listener);
311
- const event = {
312
- a: 1,
313
- b: 2,
314
- };
315
- await eventBus.dispatch("add", event);
316
- await LazyPromise.delay(TTL);
317
- expect(listener.result).toBeNull();
318
- });
319
- test("Class instance listener", async () => {
320
- class Listener {
321
- result = null;
322
- invoke(event) {
323
- this.result = event;
324
- }
325
- }
326
- const listener = new Listener();
327
- await eventBus.subscribe("add", listener);
328
- await eventBus.removeListener("add", listener);
329
- const event = {
330
- a: 1,
331
- b: 2,
332
- };
333
- await eventBus.dispatch("add", event);
334
- await LazyPromise.delay(TTL);
335
- expect(listener.result).toBeNull();
336
- });
337
- test("Function listener", async () => {
338
- let result = null;
339
- const listener = (event) => {
340
- result = event;
341
- };
342
- await eventBus.subscribe("add", listener);
343
- await eventBus.removeListener("add", listener);
344
- const event = {
345
- a: 1,
346
- b: 2,
347
- };
348
- await eventBus.dispatch("add", event);
349
- await LazyPromise.delay(TTL);
350
- expect(result).toBeNull();
351
- });
89
+ test("Should not call listener when listener is removed by removeListener and event is triggered", async () => {
90
+ const listener = vi.fn((_event) => { });
91
+ await eventBus.subscribe("add", listener);
92
+ await eventBus.removeListener("add", listener);
93
+ const event = {
94
+ a: 1,
95
+ b: 2,
96
+ };
97
+ await eventBus.dispatch("add", event);
98
+ await LazyPromise.delay(TTL);
99
+ expect(listener).toHaveBeenCalledTimes(0);
352
100
  });
353
101
  });
354
102
  describe("method: subscribeOnce", () => {
355
- describe("Should be null when listener added and event is not triggered", () => {
356
- test("Object literal listener", async () => {
357
- const listener = {
358
- result: null,
359
- invoke(event) {
360
- this.result = event;
361
- },
362
- };
363
- await eventBus.subscribeOnce("add", listener);
364
- expect(listener.result).toBeNull();
365
- });
366
- test("Class instance listener", async () => {
367
- class Listener {
368
- result = null;
369
- invoke(event) {
370
- this.result = event;
371
- }
372
- }
373
- const listener = new Listener();
374
- await eventBus.subscribeOnce("add", listener);
375
- expect(listener.result).toBeNull();
376
- });
377
- test("Function listener", async () => {
378
- let result = null;
379
- const listener = (event) => {
380
- result = event;
381
- };
382
- await eventBus.subscribeOnce("add", listener);
383
- expect(result).toBeNull();
384
- });
385
- });
386
- describe("Should be AddEvent when listener added and event is triggered", () => {
387
- test("Object literal listener", async () => {
388
- const listener = {
389
- result: null,
390
- invoke(event) {
391
- this.result = event;
392
- },
393
- };
394
- await eventBus.subscribeOnce("add", listener);
395
- const event = {
396
- a: 1,
397
- b: 2,
398
- };
399
- await eventBus.dispatch("add", event);
400
- await LazyPromise.delay(TTL);
401
- expect(listener.result).toEqual(event);
402
- });
403
- test("Class instance listener", async () => {
404
- class Listener {
405
- result = null;
406
- invoke(event) {
407
- this.result = event;
408
- }
409
- }
410
- const listener = new Listener();
411
- await eventBus.subscribeOnce("add", listener);
412
- const event = {
413
- a: 1,
414
- b: 2,
415
- };
416
- await eventBus.dispatch("add", event);
417
- await LazyPromise.delay(TTL);
418
- expect(listener.result).toEqual(event);
419
- });
420
- test("Function listener", async () => {
421
- let result = null;
422
- const listener = (event) => {
423
- result = event;
424
- };
425
- await eventBus.subscribeOnce("add", listener);
426
- const event = {
427
- a: 1,
428
- b: 2,
429
- };
430
- await eventBus.dispatch("add", event);
431
- await LazyPromise.delay(TTL);
432
- expect(result).toEqual(event);
433
- });
103
+ test("Should not call listener when listener is added and event is not triggered", async () => {
104
+ const listener = vi.fn((_event) => { });
105
+ await eventBus.subscribeOnce("add", listener);
106
+ expect(listener).toHaveBeenCalledTimes(0);
107
+ });
108
+ test("Should call listener once with AddEvent when listener is added and event is triggered 2 times", async () => {
109
+ const listener = vi.fn((_event) => { });
110
+ await eventBus.subscribeOnce("add", listener);
111
+ const event = {
112
+ a: 1,
113
+ b: 2,
114
+ };
115
+ await eventBus.dispatch("add", event);
116
+ await eventBus.dispatch("add", event);
117
+ await LazyPromise.delay(TTL);
118
+ expect(listener).toHaveBeenCalledOnce();
119
+ expect(listener).toHaveBeenCalledWith(event);
434
120
  });
435
- describe("Should only listen for event once", () => {
436
- test("Object literal listener", async () => {
437
- const listener = {
438
- i: 0,
439
- invoke(_event) {
440
- this.i++;
441
- },
442
- };
443
- await eventBus.subscribeOnce("add", listener);
444
- const event = {
445
- a: 1,
446
- b: 2,
447
- };
448
- await eventBus.dispatch("add", event);
449
- await eventBus.dispatch("add", event);
450
- await LazyPromise.delay(TTL);
451
- expect(listener.i).toBe(1);
452
- });
453
- test("Class instance listener", async () => {
454
- class Listener {
455
- i = 0;
456
- invoke(_event) {
457
- this.i++;
458
- }
459
- }
460
- const listener = new Listener();
461
- await eventBus.subscribeOnce("add", listener);
462
- const event = {
463
- a: 1,
464
- b: 2,
465
- };
466
- await eventBus.dispatch("add", event);
467
- await eventBus.dispatch("add", event);
468
- await LazyPromise.delay(TTL);
469
- expect(listener.i).toBe(1);
470
- });
471
- test("Function listener", async () => {
472
- let i = 0;
473
- const listener = () => {
474
- i++;
475
- };
476
- await eventBus.subscribeOnce("add", listener);
477
- const event = {
478
- a: 1,
479
- b: 2,
480
- };
481
- await eventBus.dispatch("add", event);
482
- await eventBus.dispatch("add", event);
483
- await LazyPromise.delay(TTL);
484
- expect(i).toBe(1);
485
- });
121
+ test("Should only listen for event once", async () => {
122
+ const listener = vi.fn(() => { });
123
+ await eventBus.subscribeOnce("add", listener);
124
+ const event = {
125
+ a: 1,
126
+ b: 2,
127
+ };
128
+ await eventBus.dispatch("add", event);
129
+ await eventBus.dispatch("add", event);
130
+ await LazyPromise.delay(TTL);
131
+ expect(listener).toHaveBeenCalledOnce();
486
132
  });
487
- describe("Should be null when listener is removed by unsubscribe function and event is triggered", () => {
488
- test("Object literal listener", async () => {
489
- const listener = {
490
- result: null,
491
- invoke(event) {
492
- this.result = event;
493
- },
494
- };
495
- const unsubscribe = await eventBus.subscribeOnce("add", listener);
496
- await unsubscribe();
497
- const event = {
498
- a: 1,
499
- b: 2,
500
- };
501
- await eventBus.dispatch("add", event);
502
- await LazyPromise.delay(TTL);
503
- expect(listener.result).toBeNull();
504
- });
505
- test("Class instance listener", async () => {
506
- class Listener {
507
- result = null;
508
- invoke(event) {
509
- this.result = event;
510
- }
511
- }
512
- const listener = new Listener();
513
- const unsubscribe = await eventBus.subscribeOnce("add", listener);
514
- await unsubscribe();
515
- const event = {
516
- a: 1,
517
- b: 2,
518
- };
519
- await eventBus.dispatch("add", event);
520
- await LazyPromise.delay(TTL);
521
- expect(listener.result).toBeNull();
522
- });
523
- test("Function listener", async () => {
524
- let result = null;
525
- const listener = (event) => {
526
- result = event;
527
- };
528
- const unsubscribe = await eventBus.subscribeOnce("add", listener);
529
- await unsubscribe();
530
- const event = {
531
- a: 1,
532
- b: 2,
533
- };
534
- await eventBus.dispatch("add", event);
535
- await LazyPromise.delay(TTL);
536
- expect(result).toBeNull();
537
- });
133
+ test("Should not call listener when listener is removed by unsubscribe function and event is triggered", async () => {
134
+ const listener = vi.fn((_event) => { });
135
+ const unsubscribe = await eventBus.subscribeOnce("add", listener);
136
+ await unsubscribe();
137
+ const event = {
138
+ a: 1,
139
+ b: 2,
140
+ };
141
+ await eventBus.dispatch("add", event);
142
+ await LazyPromise.delay(TTL);
143
+ expect(listener).toHaveBeenCalledTimes(0);
538
144
  });
539
- describe("Should be null when listener is removed by removeListener method and event is triggered", () => {
540
- test("Object literal listener", async () => {
541
- const listener = {
542
- result: null,
543
- invoke(event) {
544
- this.result = event;
545
- },
546
- };
547
- await eventBus.subscribeOnce("add", listener);
548
- await eventBus.removeListener("add", listener);
549
- const event = {
550
- a: 1,
551
- b: 2,
552
- };
553
- await eventBus.dispatch("add", event);
554
- await LazyPromise.delay(TTL);
555
- expect(listener.result).toBeNull();
556
- });
557
- test("Class instance listener", async () => {
558
- class Listener {
559
- result = null;
560
- invoke(event) {
561
- this.result = event;
562
- }
563
- }
564
- const listener = new Listener();
565
- await eventBus.subscribeOnce("add", listener);
566
- await eventBus.removeListener("add", listener);
567
- const event = {
568
- a: 1,
569
- b: 2,
570
- };
571
- await eventBus.dispatch("add", event);
572
- await LazyPromise.delay(TTL);
573
- expect(listener.result).toBeNull();
574
- });
575
- test("Function listener", async () => {
576
- let result = null;
577
- const listener = (event) => {
578
- result = event;
579
- };
580
- await eventBus.subscribeOnce("add", listener);
581
- await eventBus.removeListener("add", listener);
582
- const event = {
583
- a: 1,
584
- b: 2,
585
- };
586
- await eventBus.dispatch("add", event);
587
- await LazyPromise.delay(TTL);
588
- expect(result).toBeNull();
589
- });
145
+ test("Should not call listener when listener is removed by removeListener method and event is triggered", async () => {
146
+ const listener = vi.fn((_event) => { });
147
+ await eventBus.subscribeOnce("add", listener);
148
+ await eventBus.removeListener("add", listener);
149
+ const event = {
150
+ a: 1,
151
+ b: 2,
152
+ };
153
+ await eventBus.dispatch("add", event);
154
+ await LazyPromise.delay(TTL);
155
+ expect(listener).toHaveBeenCalledTimes(0);
590
156
  });
591
157
  });
592
158
  describe("method: listenOnce", () => {
593
- describe("Should be null when listener added and event is not triggered", () => {
594
- test("Object literal listener", async () => {
595
- const listener = {
596
- result: null,
597
- invoke(event) {
598
- this.result = event;
599
- },
600
- };
601
- await eventBus.listenOnce("add", listener);
602
- expect(listener.result).toBeNull();
603
- });
604
- test("Class instance listener", async () => {
605
- class Listener {
606
- result = null;
607
- invoke(event) {
608
- this.result = event;
609
- }
610
- }
611
- const listener = new Listener();
612
- await eventBus.listenOnce("add", listener);
613
- expect(listener.result).toBeNull();
614
- });
615
- test("Function listener", async () => {
616
- let result = null;
617
- const listener = (event) => {
618
- result = event;
619
- };
620
- await eventBus.listenOnce("add", listener);
621
- expect(result).toBeNull();
622
- });
623
- });
624
- describe("Should be AddEvent when listener added and event is triggered", () => {
625
- test("Object literal listener", async () => {
626
- const listener = {
627
- result: null,
628
- invoke(event) {
629
- this.result = event;
630
- },
631
- };
632
- await eventBus.listenOnce("add", listener);
633
- const event = {
634
- a: 1,
635
- b: 2,
636
- };
637
- await eventBus.dispatch("add", event);
638
- await LazyPromise.delay(TTL);
639
- expect(listener.result).toEqual(event);
640
- });
641
- test("Class instance listener", async () => {
642
- class Listener {
643
- result = null;
644
- invoke(event) {
645
- this.result = event;
646
- }
647
- }
648
- const listener = new Listener();
649
- await eventBus.listenOnce("add", listener);
650
- const event = {
651
- a: 1,
652
- b: 2,
653
- };
654
- await eventBus.dispatch("add", event);
655
- await LazyPromise.delay(TTL);
656
- expect(listener.result).toEqual(event);
657
- });
658
- test("Function listener", async () => {
659
- let result = null;
660
- const listener = (event) => {
661
- result = event;
662
- };
663
- await eventBus.listenOnce("add", listener);
664
- const event = {
665
- a: 1,
666
- b: 2,
667
- };
668
- await eventBus.dispatch("add", event);
669
- await LazyPromise.delay(TTL);
670
- expect(result).toEqual(event);
671
- });
672
- });
673
- describe("Should only listen for event once", () => {
674
- test("Object literal listener", async () => {
675
- const listener = {
676
- i: 0,
677
- invoke(_event) {
678
- this.i++;
679
- },
680
- };
681
- await eventBus.listenOnce("add", listener);
682
- const event = {
683
- a: 1,
684
- b: 2,
685
- };
686
- await eventBus.dispatch("add", event);
687
- await eventBus.dispatch("add", event);
688
- await LazyPromise.delay(TTL);
689
- expect(listener.i).toBe(1);
690
- });
691
- test("Class instance listener", async () => {
692
- class Listener {
693
- i = 0;
694
- invoke(_event) {
695
- this.i++;
696
- }
697
- }
698
- const listener = new Listener();
699
- await eventBus.listenOnce("add", listener);
700
- const event = {
701
- a: 1,
702
- b: 2,
703
- };
704
- await eventBus.dispatch("add", event);
705
- await eventBus.dispatch("add", event);
706
- await LazyPromise.delay(TTL);
707
- expect(listener.i).toBe(1);
708
- });
709
- test("Function listener", async () => {
710
- let i = 0;
711
- const listener = () => {
712
- i++;
713
- };
714
- await eventBus.listenOnce("add", listener);
715
- const event = {
716
- a: 1,
717
- b: 2,
718
- };
719
- await eventBus.dispatch("add", event);
720
- await eventBus.dispatch("add", event);
721
- await LazyPromise.delay(TTL);
722
- expect(i).toBe(1);
723
- });
159
+ test("Should not call listener when listener is added and event is not triggered", async () => {
160
+ const listener = vi.fn((_event) => { });
161
+ await eventBus.listenOnce("add", listener);
162
+ expect(listener).toHaveBeenCalledTimes(0);
163
+ });
164
+ test("Should call listener once with AddEvent when listener is added and event is triggered 2 times", async () => {
165
+ const listener = vi.fn((_event_AddEvent) => { });
166
+ await eventBus.listenOnce("add", listener);
167
+ const event = {
168
+ a: 1,
169
+ b: 2,
170
+ };
171
+ await eventBus.dispatch("add", event);
172
+ await eventBus.dispatch("add", event);
173
+ await LazyPromise.delay(TTL);
174
+ expect(listener).toHaveBeenCalledOnce();
175
+ expect(listener).toHaveBeenCalledWith(event);
724
176
  });
725
- describe("Should be null when listener is removed and event is triggered", () => {
726
- test("Object literal listener", async () => {
727
- const listener = {
728
- result: null,
729
- invoke(event) {
730
- this.result = event;
731
- },
732
- };
733
- await eventBus.listenOnce("add", listener);
734
- await eventBus.removeListener("add", listener);
735
- const event = {
736
- a: 1,
737
- b: 2,
738
- };
739
- await eventBus.dispatch("add", event);
740
- await LazyPromise.delay(TTL);
741
- expect(listener.result).toBeNull();
742
- });
743
- test("Class instance listener", async () => {
744
- class Listener {
745
- result = null;
746
- invoke(event) {
747
- this.result = event;
748
- }
749
- }
750
- const listener = new Listener();
751
- await eventBus.listenOnce("add", listener);
752
- await eventBus.removeListener("add", listener);
753
- const event = {
754
- a: 1,
755
- b: 2,
756
- };
757
- await eventBus.dispatch("add", event);
758
- await LazyPromise.delay(TTL);
759
- expect(listener.result).toBeNull();
760
- });
761
- test("Function listener", async () => {
762
- let result = null;
763
- const listener = (event) => {
764
- result = event;
765
- };
766
- await eventBus.listenOnce("add", listener);
767
- await eventBus.removeListener("add", listener);
768
- const event = {
769
- a: 1,
770
- b: 2,
771
- };
772
- await eventBus.dispatch("add", event);
773
- await LazyPromise.delay(TTL);
774
- expect(result).toBeNull();
775
- });
177
+ test("Should not call listener when listener is removed and event is triggered", async () => {
178
+ const listener = vi.fn((_event) => { });
179
+ await eventBus.listenOnce("add", listener);
180
+ await eventBus.removeListener("add", listener);
181
+ const event = {
182
+ a: 1,
183
+ b: 2,
184
+ };
185
+ await eventBus.dispatch("add", event);
186
+ await LazyPromise.delay(TTL);
187
+ expect(listener).toHaveBeenCalledTimes(0);
776
188
  });
777
189
  });
778
190
  describe("method: asPromise", () => {
779
- test("Should be null when listener added and event is not triggered", () => {
780
- let result = null;
781
- const listener = (event) => {
782
- result = event;
783
- };
191
+ test("Should not call onfulfilled handler when event is not triggered", () => {
192
+ const listener = vi.fn((_event) => { });
784
193
  eventBus.asPromise("add").then(listener);
785
- expect(result).toBeNull();
194
+ expect(listener).toHaveBeenCalledTimes(0);
786
195
  });
787
- test("Should be AddEvent when listener added and event is triggered", async () => {
788
- let result = null;
789
- const listener = (event) => {
790
- result = event;
791
- };
196
+ test("Should call onfulfilled with AddEvent when event is triggered", async () => {
197
+ const listener = vi.fn((_event) => { });
792
198
  eventBus.asPromise("add").then(listener);
793
199
  const event = {
794
200
  a: 1,
@@ -796,7 +202,8 @@ export function eventBusTestSuite(settings) {
796
202
  };
797
203
  await eventBus.dispatch("add", event);
798
204
  await LazyPromise.delay(TTL);
799
- expect(result).toEqual(event);
205
+ expect(listener).toHaveBeenCalledTimes(1);
206
+ expect(listener).toHaveBeenCalledWith(event);
800
207
  });
801
208
  });
802
209
  }