@daiso-tech/core 0.32.0 → 0.33.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 (126) hide show
  1. package/dist/async/async.errors.d.ts +14 -0
  2. package/dist/async/async.errors.js +14 -0
  3. package/dist/async/async.errors.js.map +1 -1
  4. package/dist/async/async.events.d.ts +23 -0
  5. package/dist/async/async.events.js +23 -0
  6. package/dist/async/async.events.js.map +1 -1
  7. package/dist/async/backof-policies/_shared.d.ts +1 -1
  8. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +2 -2
  9. package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +1 -1
  10. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
  11. package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +1 -1
  12. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +2 -2
  13. package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +1 -1
  14. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
  15. package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +1 -1
  16. package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +7 -41
  17. package/dist/async/utilities/lazy-promise/lazy-promise.js +7 -8
  18. package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
  19. package/dist/cache/contracts/cache-factory.contract.d.ts +3 -3
  20. package/dist/cache/contracts/cache.contract.d.ts +0 -22
  21. package/dist/cache/contracts/cache.errors.d.ts +14 -1
  22. package/dist/cache/contracts/cache.errors.js +14 -1
  23. package/dist/cache/contracts/cache.errors.js.map +1 -1
  24. package/dist/cache/contracts/cache.events.d.ts +28 -14
  25. package/dist/cache/contracts/cache.events.js +28 -3
  26. package/dist/cache/contracts/cache.events.js.map +1 -1
  27. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js +3 -3
  28. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js.map +1 -1
  29. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -1
  30. package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
  31. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js +3 -3
  32. package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js.map +1 -1
  33. package/dist/cache/implementations/derivables/cache/cache.d.ts +9 -139
  34. package/dist/cache/implementations/derivables/cache/cache.js +38 -229
  35. package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
  36. package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +6 -6
  37. package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
  38. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +2 -2
  39. package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +1 -1
  40. package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -4
  41. package/dist/cache/implementations/test-utilities/cache.test-suite.js +239 -433
  42. package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
  43. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +2 -2
  44. package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +1 -1
  45. package/dist/collection/contracts/collection.errors.d.ts +17 -0
  46. package/dist/collection/contracts/collection.errors.js +17 -0
  47. package/dist/collection/contracts/collection.errors.js.map +1 -1
  48. package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +3 -3
  49. package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -44
  50. package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
  51. package/dist/event-bus/contracts/event-bus.errors.d.ts +16 -1
  52. package/dist/event-bus/contracts/event-bus.errors.js +16 -1
  53. package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
  54. package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +6 -77
  55. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +11 -131
  56. package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
  57. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +4 -4
  58. package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
  59. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +2 -2
  60. package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +1 -1
  61. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +4 -4
  62. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +691 -1432
  63. package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
  64. package/dist/lock/contracts/lock-provider-factory.contract.d.ts +3 -3
  65. package/dist/lock/contracts/lock-provider.contract.d.ts +10 -20
  66. package/dist/lock/contracts/lock.contract.d.ts +1 -10
  67. package/dist/lock/contracts/lock.errors.d.ts +18 -0
  68. package/dist/lock/contracts/lock.errors.js +18 -0
  69. package/dist/lock/contracts/lock.errors.js.map +1 -1
  70. package/dist/lock/contracts/lock.events.d.ts +22 -0
  71. package/dist/lock/contracts/lock.events.js +22 -0
  72. package/dist/lock/contracts/lock.events.js.map +1 -1
  73. package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +12 -155
  74. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +31 -228
  75. package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
  76. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +5 -5
  77. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +7 -30
  78. package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
  79. package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +8 -58
  80. package/dist/lock/implementations/derivables/lock-provider/lock.js +33 -105
  81. package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
  82. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +9 -8
  83. package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
  84. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +2 -2
  85. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +178 -659
  86. package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
  87. package/dist/serde/contracts/deserializer.contract.d.ts +1 -1
  88. package/dist/serde/contracts/deserializer.contract.js +1 -1
  89. package/dist/serde/contracts/deserializer.contract.js.map +1 -1
  90. package/dist/serde/contracts/serde.errors.d.ts +14 -2
  91. package/dist/serde/contracts/serde.errors.js +16 -4
  92. package/dist/serde/contracts/serde.errors.js.map +1 -1
  93. package/dist/serde/contracts/serializer.contract.d.ts +1 -1
  94. package/dist/serde/contracts/serializer.contract.js +1 -1
  95. package/dist/serde/contracts/serializer.contract.js.map +1 -1
  96. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js +3 -3
  97. package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js.map +1 -1
  98. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js +3 -3
  99. package/dist/serde/implementations/adapters/redis-serde/redis-serde.js.map +1 -1
  100. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js +3 -3
  101. package/dist/serde/implementations/adapters/sql-serde/sql-serde.js.map +1 -1
  102. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +3 -3
  103. package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
  104. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +2 -2
  105. package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +1 -1
  106. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +2 -2
  107. package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +1 -1
  108. package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
  109. package/dist/utilities/classes/key-prefixer/_module.js +0 -1
  110. package/dist/utilities/classes/key-prefixer/_module.js.map +1 -1
  111. package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +2 -11
  112. package/dist/utilities/classes/key-prefixer/key-prefixer.js +4 -46
  113. package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
  114. package/dist/utilities/errors.d.ts +2 -0
  115. package/dist/utilities/errors.js +2 -0
  116. package/dist/utilities/errors.js.map +1 -1
  117. package/package.json +3 -4
  118. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.d.ts +0 -15
  119. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js +0 -50
  120. package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js.map +0 -1
  121. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.d.ts +0 -23
  122. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js +0 -44
  123. package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js.map +0 -1
  124. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.d.ts +0 -28
  125. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js +0 -5
  126. package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js.map +0 -1
@@ -12,7 +12,7 @@ import { NoOpSerdeAdapter } from "../../../serde/implementations/adapters/_modul
12
12
  * The <i>eventBusTestSuite</i> function simplifies the process of testing your custom implementation of <i>{@link IEventBus}</i> with vitest.
13
13
  *
14
14
  * IMPORT_PATH: ```"@daiso-tech/core/event-bus/test-utilities"```
15
- * @group Test utilities
15
+ * @group TestUtilities
16
16
  */
17
17
  export function eventBusTestSuite(settings) {
18
18
  const { expect, serde = new Serde(new NoOpSerdeAdapter()), test, describe, createEventBus, beforeEach, } = settings;
@@ -22,1542 +22,801 @@ export function eventBusTestSuite(settings) {
22
22
  class SubEvent extends BaseEvent {
23
23
  }
24
24
  serde.registerEvent(AddEvent).registerEvent(SubEvent);
25
- let eventBusA;
26
- let eventBusB;
25
+ let eventBus;
27
26
  beforeEach(async () => {
28
- const eventBus = await createEventBus();
29
- eventBusA = eventBus;
30
- eventBusB = eventBus.withGroup("b");
27
+ eventBus = await createEventBus();
31
28
  });
32
- describe("Api tests:", () => {
33
- describe("method: addListener, removeListener, dispatch", () => {
34
- describe("Should be null when listener is added and event is not triggered", () => {
35
- test("Object literal listener", async () => {
36
- const listener = {
37
- result: null,
38
- invoke(event) {
39
- this.result = event;
40
- },
41
- };
42
- await eventBusA.addListener(AddEvent, listener);
43
- expect(listener.result).toBeNull();
44
- await eventBusA.removeListener(AddEvent, listener);
45
- });
46
- test("Class instance listener", async () => {
47
- class Listener {
48
- result = null;
49
- invoke(event) {
50
- this.result = event;
51
- }
29
+ describe("method: addListener, removeListener, dispatch", () => {
30
+ describe("Should be null when listener is added and event is not triggered", () => {
31
+ test("Object literal listener", async () => {
32
+ const listener = {
33
+ result: null,
34
+ invoke(event) {
35
+ this.result = event;
36
+ },
37
+ };
38
+ await eventBus.addListener(AddEvent, listener);
39
+ expect(listener.result).toBeNull();
40
+ await eventBus.removeListener(AddEvent, listener);
41
+ });
42
+ test("Class instance listener", async () => {
43
+ class Listener {
44
+ result = null;
45
+ invoke(event) {
46
+ this.result = event;
52
47
  }
53
- const listener = new Listener();
54
- await eventBusA.addListener(AddEvent, listener);
55
- expect(listener.result).toBeNull();
56
- await eventBusA.removeListener(AddEvent, listener);
57
- });
58
- test("Function listener", async () => {
59
- let result = null;
60
- const listener = (event) => {
61
- result = event;
62
- };
63
- await eventBusA.addListener(AddEvent, listener);
64
- expect(result).toBeNull();
65
- await eventBusA.removeListener(AddEvent, listener);
66
- });
48
+ }
49
+ const listener = new Listener();
50
+ await eventBus.addListener(AddEvent, listener);
51
+ expect(listener.result).toBeNull();
52
+ await eventBus.removeListener(AddEvent, listener);
67
53
  });
68
- describe("Should be AddEvent when listener is added and event is triggered", () => {
69
- test("Object literal listener", async () => {
70
- const listener = {
71
- result: null,
72
- invoke(event) {
73
- this.result = event;
74
- },
75
- };
76
- await eventBusA.addListener(AddEvent, listener);
77
- const event = new AddEvent({
78
- a: 1,
79
- b: 2,
80
- });
81
- await eventBusA.dispatch(event);
82
- await LazyPromise.delay(TTL);
83
- expect(listener.result).toEqual(event);
84
- expect(listener.result).toBeInstanceOf(AddEvent);
85
- await eventBusA.removeListener(AddEvent, listener);
86
- });
87
- test("Class instance listener", async () => {
88
- class Listener {
89
- result = null;
90
- invoke(event) {
91
- this.result = event;
92
- }
93
- }
94
- const listener = new Listener();
95
- await eventBusA.addListener(AddEvent, listener);
96
- const event = new AddEvent({
97
- a: 1,
98
- b: 2,
99
- });
100
- await eventBusA.dispatch(event);
101
- await LazyPromise.delay(TTL);
102
- expect(listener.result).toEqual(event);
103
- expect(listener.result).toBeInstanceOf(AddEvent);
104
- await eventBusA.removeListener(AddEvent, listener);
105
- });
106
- test("Function listener", async () => {
107
- let result = null;
108
- const listener = (event) => {
109
- result = event;
110
- };
111
- await eventBusA.addListener(AddEvent, listener);
112
- const event = new AddEvent({
113
- a: 1,
114
- b: 2,
115
- });
116
- await eventBusA.dispatch(event);
117
- await LazyPromise.delay(TTL);
118
- expect(result).toEqual(event);
119
- expect(result).toBeInstanceOf(AddEvent);
120
- await eventBusA.removeListener(AddEvent, listener);
121
- });
54
+ test("Function listener", async () => {
55
+ let result = null;
56
+ const listener = (event) => {
57
+ result = event;
58
+ };
59
+ await eventBus.addListener(AddEvent, listener);
60
+ expect(result).toBeNull();
61
+ await eventBus.removeListener(AddEvent, listener);
122
62
  });
123
- describe("Should be null when listener is removed and event is triggered", () => {
124
- test("Object literal listener", async () => {
125
- const listener = {
126
- result: null,
127
- invoke(event) {
128
- this.result = event;
129
- },
130
- };
131
- await eventBusA.addListener(AddEvent, listener);
132
- await eventBusA.removeListener(AddEvent, listener);
133
- const event = new AddEvent({
134
- a: 1,
135
- b: 2,
136
- });
137
- await eventBusA.dispatch(event);
138
- await LazyPromise.delay(TTL);
139
- expect(listener.result).toBeNull();
63
+ });
64
+ describe("Should be AddEvent when listener is added and event is triggered", () => {
65
+ test("Object literal listener", async () => {
66
+ const listener = {
67
+ result: null,
68
+ invoke(event) {
69
+ this.result = event;
70
+ },
71
+ };
72
+ await eventBus.addListener(AddEvent, listener);
73
+ const event = new AddEvent({
74
+ a: 1,
75
+ b: 2,
140
76
  });
141
- test("Class instance listener", async () => {
142
- class Listener {
143
- result = null;
144
- invoke(event) {
145
- this.result = event;
146
- }
77
+ await eventBus.dispatch(event);
78
+ await LazyPromise.delay(TTL);
79
+ expect(listener.result).toEqual(event);
80
+ expect(listener.result).toBeInstanceOf(AddEvent);
81
+ await eventBus.removeListener(AddEvent, listener);
82
+ });
83
+ test("Class instance listener", async () => {
84
+ class Listener {
85
+ result = null;
86
+ invoke(event) {
87
+ this.result = event;
147
88
  }
148
- const listener = new Listener();
149
- await eventBusA.addListener(AddEvent, listener);
150
- await eventBusA.removeListener(AddEvent, listener);
151
- const event = new AddEvent({
152
- a: 1,
153
- b: 2,
154
- });
155
- await eventBusA.dispatch(event);
156
- await LazyPromise.delay(TTL);
157
- expect(listener.result).toBeNull();
89
+ }
90
+ const listener = new Listener();
91
+ await eventBus.addListener(AddEvent, listener);
92
+ const event = new AddEvent({
93
+ a: 1,
94
+ b: 2,
158
95
  });
159
- test("Function listener", async () => {
160
- let result = null;
161
- const listener = (event) => {
162
- result = event;
163
- };
164
- await eventBusA.addListener(AddEvent, listener);
165
- await eventBusA.removeListener(AddEvent, listener);
166
- const event = new AddEvent({
167
- a: 1,
168
- b: 2,
169
- });
170
- await eventBusA.dispatch(event);
171
- await LazyPromise.delay(TTL);
172
- expect(result).toBeNull();
96
+ await eventBus.dispatch(event);
97
+ await LazyPromise.delay(TTL);
98
+ expect(listener.result).toEqual(event);
99
+ expect(listener.result).toBeInstanceOf(AddEvent);
100
+ await eventBus.removeListener(AddEvent, listener);
101
+ });
102
+ test("Function listener", async () => {
103
+ let result = null;
104
+ const listener = (event) => {
105
+ result = event;
106
+ };
107
+ await eventBus.addListener(AddEvent, listener);
108
+ const event = new AddEvent({
109
+ a: 1,
110
+ b: 2,
173
111
  });
112
+ await eventBus.dispatch(event);
113
+ await LazyPromise.delay(TTL);
114
+ expect(result).toEqual(event);
115
+ expect(result).toBeInstanceOf(AddEvent);
116
+ await eventBus.removeListener(AddEvent, listener);
174
117
  });
175
118
  });
176
- describe("method: addListenerMany, removeListenerMany, dispatchMany", () => {
177
- describe("Should be null when listener is added and event is not triggered", () => {
178
- test("Object literal listener", async () => {
179
- const listener = {
180
- resultA: null,
181
- resultB: null,
182
- invoke(event) {
183
- if (event instanceof AddEvent) {
184
- this.resultA = event;
185
- }
186
- if (event instanceof SubEvent) {
187
- this.resultB = event;
188
- }
189
- },
190
- };
191
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
192
- expect(listener.resultA).toBeNull();
193
- expect(listener.resultB).toBeNull();
194
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
195
- });
196
- test("Class instance listener", async () => {
197
- class Listener {
198
- resultA = null;
199
- resultB = null;
200
- invoke(event) {
201
- if (event instanceof AddEvent) {
202
- this.resultA = event;
203
- }
204
- if (event instanceof SubEvent) {
205
- this.resultB = event;
206
- }
207
- }
208
- }
209
- const listener = new Listener();
210
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
211
- expect(listener.resultA).toBeNull();
212
- expect(listener.resultB).toBeNull();
213
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
214
- });
215
- test("Function listener", async () => {
216
- let resultA = null;
217
- let resultB = null;
218
- const listener = (event) => {
219
- if (event instanceof AddEvent) {
220
- resultA = event;
221
- }
222
- if (event instanceof SubEvent) {
223
- resultB = event;
224
- }
225
- };
226
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
227
- expect(resultA).toBeNull();
228
- expect(resultB).toBeNull();
229
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
119
+ describe("Should be null when listener is removed and event is triggered", () => {
120
+ test("Object literal listener", async () => {
121
+ const listener = {
122
+ result: null,
123
+ invoke(event) {
124
+ this.result = event;
125
+ },
126
+ };
127
+ await eventBus.addListener(AddEvent, listener);
128
+ await eventBus.removeListener(AddEvent, listener);
129
+ const event = new AddEvent({
130
+ a: 1,
131
+ b: 2,
230
132
  });
133
+ await eventBus.dispatch(event);
134
+ await LazyPromise.delay(TTL);
135
+ expect(listener.result).toBeNull();
231
136
  });
232
- describe("Should be AddEvent and SubEvent when listener is added and event is triggered", () => {
233
- test("Object literal listener", async () => {
234
- const listener = {
235
- resultA: null,
236
- resultB: null,
237
- invoke(event) {
238
- if (event instanceof AddEvent) {
239
- this.resultA = event;
240
- }
241
- if (event instanceof SubEvent) {
242
- this.resultB = event;
243
- }
244
- },
245
- };
246
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
247
- const addEvent = new AddEvent({
248
- a: 1,
249
- b: 2,
250
- });
251
- const subEvent = new SubEvent({
252
- c: 1,
253
- d: 2,
254
- });
255
- await eventBusA.dispatchMany([addEvent, subEvent]);
256
- await LazyPromise.delay(TTL);
257
- expect(listener.resultA).toEqual(addEvent);
258
- expect(listener.resultA).toBeInstanceOf(AddEvent);
259
- expect(listener.resultB).toEqual(subEvent);
260
- expect(listener.resultB).toBeInstanceOf(SubEvent);
261
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
262
- });
263
- test("Class instance listener", async () => {
264
- class Listener {
265
- resultA = null;
266
- resultB = null;
267
- invoke(event) {
268
- if (event instanceof AddEvent) {
269
- this.resultA = event;
270
- }
271
- if (event instanceof SubEvent) {
272
- this.resultB = event;
273
- }
274
- }
137
+ test("Class instance listener", async () => {
138
+ class Listener {
139
+ result = null;
140
+ invoke(event) {
141
+ this.result = event;
275
142
  }
276
- const listener = new Listener();
277
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
278
- const addEvent = new AddEvent({
279
- a: 1,
280
- b: 2,
281
- });
282
- const subEvent = new SubEvent({
283
- c: 1,
284
- d: 2,
285
- });
286
- await eventBusA.dispatchMany([addEvent, subEvent]);
287
- await LazyPromise.delay(TTL);
288
- expect(listener.resultA).toEqual(addEvent);
289
- expect(listener.resultA).toBeInstanceOf(AddEvent);
290
- expect(listener.resultB).toEqual(subEvent);
291
- expect(listener.resultB).toBeInstanceOf(SubEvent);
292
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
293
- });
294
- test("Function listener", async () => {
295
- let resultA = null;
296
- let resultB = null;
297
- const listener = (event) => {
298
- if (event instanceof AddEvent) {
299
- resultA = event;
300
- }
301
- if (event instanceof SubEvent) {
302
- resultB = event;
303
- }
304
- };
305
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
306
- const addEvent = new AddEvent({
307
- a: 1,
308
- b: 2,
309
- });
310
- const subEvent = new SubEvent({
311
- c: 1,
312
- d: 2,
313
- });
314
- await eventBusA.dispatchMany([addEvent, subEvent]);
315
- await LazyPromise.delay(TTL);
316
- expect(resultA).toEqual(addEvent);
317
- expect(resultA).toBeInstanceOf(AddEvent);
318
- expect(resultB).toEqual(subEvent);
319
- expect(resultB).toBeInstanceOf(SubEvent);
320
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
143
+ }
144
+ const listener = new Listener();
145
+ await eventBus.addListener(AddEvent, listener);
146
+ await eventBus.removeListener(AddEvent, listener);
147
+ const event = new AddEvent({
148
+ a: 1,
149
+ b: 2,
321
150
  });
151
+ await eventBus.dispatch(event);
152
+ await LazyPromise.delay(TTL);
153
+ expect(listener.result).toBeNull();
322
154
  });
323
- describe("Should be null when listener is removed and event is triggered", () => {
324
- test("Object literal listener", async () => {
325
- const listener = {
326
- resultA: null,
327
- resultB: null,
328
- invoke(event) {
329
- if (event instanceof AddEvent) {
330
- this.resultA = event;
331
- }
332
- if (event instanceof SubEvent) {
333
- this.resultB = event;
334
- }
335
- },
336
- };
337
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
338
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
339
- const addEvent = new AddEvent({
340
- a: 1,
341
- b: 2,
342
- });
343
- const subEvent = new SubEvent({
344
- c: 1,
345
- d: 2,
346
- });
347
- await eventBusA.dispatchMany([addEvent, subEvent]);
348
- await LazyPromise.delay(TTL);
349
- expect(listener.resultA).toBeNull();
350
- expect(listener.resultB).toBeNull();
351
- });
352
- test("Class instance listener", async () => {
353
- class Listener {
354
- resultA = null;
355
- resultB = null;
356
- invoke(event) {
357
- if (event instanceof AddEvent) {
358
- this.resultA = event;
359
- }
360
- if (event instanceof SubEvent) {
361
- this.resultB = event;
362
- }
363
- }
364
- }
365
- const listener = new Listener();
366
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
367
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
368
- const addEvent = new AddEvent({
369
- a: 1,
370
- b: 2,
371
- });
372
- const subEvent = new SubEvent({
373
- c: 1,
374
- d: 2,
375
- });
376
- await eventBusA.dispatchMany([addEvent, subEvent]);
377
- await LazyPromise.delay(TTL);
378
- expect(listener.resultA).toBeNull();
379
- expect(listener.resultB).toBeNull();
380
- });
381
- test("Function listener", async () => {
382
- let resultA = null;
383
- let resultB = null;
384
- const listener = (event) => {
385
- if (event instanceof AddEvent) {
386
- resultA = event;
387
- }
388
- if (event instanceof SubEvent) {
389
- resultB = event;
390
- }
391
- };
392
- await eventBusA.addListenerMany([AddEvent, SubEvent], listener);
393
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
394
- const addEvent = new AddEvent({
395
- a: 1,
396
- b: 2,
397
- });
398
- const subEvent = new SubEvent({
399
- c: 1,
400
- d: 2,
401
- });
402
- await eventBusA.dispatchMany([addEvent, subEvent]);
403
- await LazyPromise.delay(TTL);
404
- expect(resultA).toBeNull();
405
- expect(resultB).toBeNull();
155
+ test("Function listener", async () => {
156
+ let result = null;
157
+ const listener = (event) => {
158
+ result = event;
159
+ };
160
+ await eventBus.addListener(AddEvent, listener);
161
+ await eventBus.removeListener(AddEvent, listener);
162
+ const event = new AddEvent({
163
+ a: 1,
164
+ b: 2,
406
165
  });
166
+ await eventBus.dispatch(event);
167
+ await LazyPromise.delay(TTL);
168
+ expect(result).toBeNull();
407
169
  });
408
170
  });
409
- describe("method: subscribe, dispatch", () => {
410
- describe("Should be null when listener is added and event is not triggered", () => {
411
- test("Object literal listener", async () => {
412
- const listener = {
413
- result: null,
414
- invoke(event) {
415
- this.result = event;
416
- },
417
- };
418
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
419
- expect(listener.result).toBeNull();
420
- await unsubscribe();
421
- });
422
- test("Class instance listener", async () => {
423
- class Listener {
424
- result = null;
425
- invoke(event) {
426
- this.result = event;
427
- }
171
+ });
172
+ describe("method: subscribe, dispatch", () => {
173
+ describe("Should be null when listener is added and event is not triggered", () => {
174
+ test("Object literal listener", async () => {
175
+ const listener = {
176
+ result: null,
177
+ invoke(event) {
178
+ this.result = event;
179
+ },
180
+ };
181
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
182
+ expect(listener.result).toBeNull();
183
+ await unsubscribe();
184
+ });
185
+ test("Class instance listener", async () => {
186
+ class Listener {
187
+ result = null;
188
+ invoke(event) {
189
+ this.result = event;
428
190
  }
429
- const listener = new Listener();
430
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
431
- expect(listener.result).toBeNull();
432
- await unsubscribe();
433
- });
434
- test("Function listener", async () => {
435
- let result = null;
436
- const listener = (event) => {
437
- result = event;
438
- };
439
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
440
- expect(result).toBeNull();
441
- await unsubscribe();
442
- });
191
+ }
192
+ const listener = new Listener();
193
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
194
+ expect(listener.result).toBeNull();
195
+ await unsubscribe();
443
196
  });
444
- describe("Should be AddEvent when listener is added and event is triggered", () => {
445
- test("Object literal listener", async () => {
446
- const listener = {
447
- result: null,
448
- invoke(event) {
449
- this.result = event;
450
- },
451
- };
452
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
453
- const event = new AddEvent({
454
- a: 1,
455
- b: 2,
456
- });
457
- await eventBusA.dispatch(event);
458
- await LazyPromise.delay(TTL);
459
- expect(listener.result).toEqual(event);
460
- expect(listener.result).toBeInstanceOf(AddEvent);
461
- await unsubscribe();
462
- });
463
- test("Class instance listener", async () => {
464
- class Listener {
465
- result = null;
466
- invoke(event) {
467
- this.result = event;
468
- }
469
- }
470
- const listener = new Listener();
471
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
472
- const event = new AddEvent({
473
- a: 1,
474
- b: 2,
475
- });
476
- await eventBusA.dispatch(event);
477
- await LazyPromise.delay(TTL);
478
- expect(listener.result).toEqual(event);
479
- expect(listener.result).toBeInstanceOf(AddEvent);
480
- await unsubscribe();
481
- });
482
- test("Function listener", async () => {
483
- let result = null;
484
- const listener = (event) => {
485
- result = event;
486
- };
487
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
488
- const event = new AddEvent({
489
- a: 1,
490
- b: 2,
491
- });
492
- await eventBusA.dispatch(event);
493
- await LazyPromise.delay(TTL);
494
- expect(result).toEqual(event);
495
- expect(result).toBeInstanceOf(AddEvent);
496
- await unsubscribe();
497
- });
197
+ test("Function listener", async () => {
198
+ let result = null;
199
+ const listener = (event) => {
200
+ result = event;
201
+ };
202
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
203
+ expect(result).toBeNull();
204
+ await unsubscribe();
498
205
  });
499
- describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
500
- test("Object literal listener", async () => {
501
- const listener = {
502
- result: null,
503
- invoke(event) {
504
- this.result = event;
505
- },
506
- };
507
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
508
- await unsubscribe();
509
- const event = new AddEvent({
510
- a: 1,
511
- b: 2,
512
- });
513
- await eventBusA.dispatch(event);
514
- await LazyPromise.delay(TTL);
515
- expect(listener.result).toBeNull();
206
+ });
207
+ describe("Should be AddEvent when listener is added and event is triggered", () => {
208
+ test("Object literal listener", async () => {
209
+ const listener = {
210
+ result: null,
211
+ invoke(event) {
212
+ this.result = event;
213
+ },
214
+ };
215
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
216
+ const event = new AddEvent({
217
+ a: 1,
218
+ b: 2,
516
219
  });
517
- test("Class instance listener", async () => {
518
- class Listener {
519
- result = null;
520
- invoke(event) {
521
- this.result = event;
522
- }
220
+ await eventBus.dispatch(event);
221
+ await LazyPromise.delay(TTL);
222
+ expect(listener.result).toEqual(event);
223
+ expect(listener.result).toBeInstanceOf(AddEvent);
224
+ await unsubscribe();
225
+ });
226
+ test("Class instance listener", async () => {
227
+ class Listener {
228
+ result = null;
229
+ invoke(event) {
230
+ this.result = event;
523
231
  }
524
- const listener = new Listener();
525
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
526
- await unsubscribe();
527
- const event = new AddEvent({
528
- a: 1,
529
- b: 2,
530
- });
531
- await eventBusA.dispatch(event);
532
- await LazyPromise.delay(TTL);
533
- expect(listener.result).toBeNull();
534
- });
535
- test("Function listener", async () => {
536
- let result = null;
537
- const listener = (event) => {
538
- result = event;
539
- };
540
- const unsubscribe = await eventBusA.subscribe(AddEvent, listener);
541
- await unsubscribe();
542
- const event = new AddEvent({
543
- a: 1,
544
- b: 2,
545
- });
546
- await eventBusA.dispatch(event);
547
- await LazyPromise.delay(TTL);
548
- expect(result).toBeNull();
232
+ }
233
+ const listener = new Listener();
234
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
235
+ const event = new AddEvent({
236
+ a: 1,
237
+ b: 2,
549
238
  });
239
+ await eventBus.dispatch(event);
240
+ await LazyPromise.delay(TTL);
241
+ expect(listener.result).toEqual(event);
242
+ expect(listener.result).toBeInstanceOf(AddEvent);
243
+ await unsubscribe();
550
244
  });
551
- describe("Should be null when listener is removed by removeListener and event is triggered", () => {
552
- test("Object literal listener", async () => {
553
- const listener = {
554
- result: null,
555
- invoke(event) {
556
- this.result = event;
557
- },
558
- };
559
- await eventBusA.subscribe(AddEvent, listener);
560
- await eventBusA.removeListener(AddEvent, listener);
561
- const event = new AddEvent({
562
- a: 1,
563
- b: 2,
564
- });
565
- await eventBusA.dispatch(event);
566
- await LazyPromise.delay(TTL);
567
- expect(listener.result).toBeNull();
568
- });
569
- test("Class instance listener", async () => {
570
- class Listener {
571
- result = null;
572
- invoke(event) {
573
- this.result = event;
574
- }
575
- }
576
- const listener = new Listener();
577
- await eventBusA.subscribe(AddEvent, listener);
578
- await eventBusA.removeListener(AddEvent, listener);
579
- const event = new AddEvent({
580
- a: 1,
581
- b: 2,
582
- });
583
- await eventBusA.dispatch(event);
584
- await LazyPromise.delay(TTL);
585
- expect(listener.result).toBeNull();
586
- });
587
- test("Function listener", async () => {
588
- let result = null;
589
- const listener = (event) => {
590
- result = event;
591
- };
592
- await eventBusA.subscribe(AddEvent, listener);
593
- await eventBusA.removeListener(AddEvent, listener);
594
- const event = new AddEvent({
595
- a: 1,
596
- b: 2,
597
- });
598
- await eventBusA.dispatch(event);
599
- await LazyPromise.delay(TTL);
600
- expect(result).toBeNull();
245
+ test("Function listener", async () => {
246
+ let result = null;
247
+ const listener = (event) => {
248
+ result = event;
249
+ };
250
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
251
+ const event = new AddEvent({
252
+ a: 1,
253
+ b: 2,
601
254
  });
255
+ await eventBus.dispatch(event);
256
+ await LazyPromise.delay(TTL);
257
+ expect(result).toEqual(event);
258
+ expect(result).toBeInstanceOf(AddEvent);
259
+ await unsubscribe();
602
260
  });
603
261
  });
604
- describe("method: subscribeMany, dispatchMany", () => {
605
- describe("Should be null when listener is added and event is not triggered", () => {
606
- test("Object literal listener", async () => {
607
- const listener = {
608
- resultA: null,
609
- resultB: null,
610
- invoke(event) {
611
- if (event instanceof AddEvent) {
612
- this.resultA = event;
613
- }
614
- if (event instanceof SubEvent) {
615
- this.resultB = event;
616
- }
617
- },
618
- };
619
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
620
- expect(listener.resultA).toBeNull();
621
- expect(listener.resultB).toBeNull();
622
- await unsubscribe();
623
- });
624
- test("Class instance listener", async () => {
625
- class Listener {
626
- resultA = null;
627
- resultB = null;
628
- invoke(event) {
629
- if (event instanceof AddEvent) {
630
- this.resultA = event;
631
- }
632
- if (event instanceof SubEvent) {
633
- this.resultB = event;
634
- }
635
- }
636
- }
637
- const listener = new Listener();
638
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
639
- expect(listener.resultA).toBeNull();
640
- expect(listener.resultB).toBeNull();
641
- await unsubscribe();
642
- });
643
- test("Function listener", async () => {
644
- let resultA = null;
645
- let resultB = null;
646
- const listener = (event) => {
647
- if (event instanceof AddEvent) {
648
- resultA = event;
649
- }
650
- if (event instanceof SubEvent) {
651
- resultB = event;
652
- }
653
- };
654
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
655
- expect(resultA).toBeNull();
656
- expect(resultB).toBeNull();
657
- await unsubscribe();
262
+ describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
263
+ test("Object literal listener", async () => {
264
+ const listener = {
265
+ result: null,
266
+ invoke(event) {
267
+ this.result = event;
268
+ },
269
+ };
270
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
271
+ await unsubscribe();
272
+ const event = new AddEvent({
273
+ a: 1,
274
+ b: 2,
658
275
  });
276
+ await eventBus.dispatch(event);
277
+ await LazyPromise.delay(TTL);
278
+ expect(listener.result).toBeNull();
659
279
  });
660
- describe("Should be AddEvent and SubEvent when listener is added and event is triggered", () => {
661
- test("Object literal listener", async () => {
662
- const listener = {
663
- resultA: null,
664
- resultB: null,
665
- invoke(event) {
666
- if (event instanceof AddEvent) {
667
- this.resultA = event;
668
- }
669
- if (event instanceof SubEvent) {
670
- this.resultB = event;
671
- }
672
- },
673
- };
674
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
675
- const addEvent = new AddEvent({
676
- a: 1,
677
- b: 2,
678
- });
679
- const subEvent = new SubEvent({
680
- c: 1,
681
- d: 2,
682
- });
683
- await eventBusA.dispatchMany([addEvent, subEvent]);
684
- await LazyPromise.delay(TTL);
685
- expect(listener.resultA).toEqual(addEvent);
686
- expect(listener.resultA).toBeInstanceOf(AddEvent);
687
- expect(listener.resultB).toEqual(subEvent);
688
- expect(listener.resultB).toBeInstanceOf(SubEvent);
689
- await unsubscribe();
690
- });
691
- test("Class instance listener", async () => {
692
- class Listener {
693
- resultA = null;
694
- resultB = null;
695
- invoke(event) {
696
- if (event instanceof AddEvent) {
697
- this.resultA = event;
698
- }
699
- if (event instanceof SubEvent) {
700
- this.resultB = event;
701
- }
702
- }
280
+ test("Class instance listener", async () => {
281
+ class Listener {
282
+ result = null;
283
+ invoke(event) {
284
+ this.result = event;
703
285
  }
704
- const listener = new Listener();
705
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
706
- const addEvent = new AddEvent({
707
- a: 1,
708
- b: 2,
709
- });
710
- const subEvent = new SubEvent({
711
- c: 1,
712
- d: 2,
713
- });
714
- await eventBusA.dispatchMany([addEvent, subEvent]);
715
- await LazyPromise.delay(TTL);
716
- expect(listener.resultA).toEqual(addEvent);
717
- expect(listener.resultA).toBeInstanceOf(AddEvent);
718
- expect(listener.resultB).toEqual(subEvent);
719
- expect(listener.resultB).toBeInstanceOf(SubEvent);
720
- await unsubscribe();
721
- });
722
- test("Function listener", async () => {
723
- let resultA = null;
724
- let resultB = null;
725
- const listener = (event) => {
726
- if (event instanceof AddEvent) {
727
- resultA = event;
728
- }
729
- if (event instanceof SubEvent) {
730
- resultB = event;
731
- }
732
- };
733
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
734
- const addEvent = new AddEvent({
735
- a: 1,
736
- b: 2,
737
- });
738
- const subEvent = new SubEvent({
739
- c: 1,
740
- d: 2,
741
- });
742
- await eventBusA.dispatchMany([addEvent, subEvent]);
743
- await LazyPromise.delay(TTL);
744
- expect(resultA).toEqual(addEvent);
745
- expect(resultA).toBeInstanceOf(AddEvent);
746
- expect(resultB).toEqual(subEvent);
747
- expect(resultB).toBeInstanceOf(SubEvent);
748
- await unsubscribe();
286
+ }
287
+ const listener = new Listener();
288
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
289
+ await unsubscribe();
290
+ const event = new AddEvent({
291
+ a: 1,
292
+ b: 2,
749
293
  });
294
+ await eventBus.dispatch(event);
295
+ await LazyPromise.delay(TTL);
296
+ expect(listener.result).toBeNull();
750
297
  });
751
- describe("Should be null when listener is removed by unsubscribe and event is triggered", () => {
752
- test("Object literal listener", async () => {
753
- const listener = {
754
- resultA: null,
755
- resultB: null,
756
- invoke(event) {
757
- if (event instanceof AddEvent) {
758
- this.resultA = event;
759
- }
760
- if (event instanceof SubEvent) {
761
- this.resultB = event;
762
- }
763
- },
764
- };
765
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
766
- await unsubscribe();
767
- const addEvent = new AddEvent({
768
- a: 1,
769
- b: 2,
770
- });
771
- const subEvent = new SubEvent({
772
- c: 1,
773
- d: 2,
774
- });
775
- await eventBusA.dispatchMany([addEvent, subEvent]);
776
- await LazyPromise.delay(TTL);
777
- expect(listener.resultA).toBeNull();
778
- expect(listener.resultB).toBeNull();
779
- });
780
- test("Class instance listener", async () => {
781
- class Listener {
782
- resultA = null;
783
- resultB = null;
784
- invoke(event) {
785
- if (event instanceof AddEvent) {
786
- this.resultA = event;
787
- }
788
- if (event instanceof SubEvent) {
789
- this.resultB = event;
790
- }
791
- }
792
- }
793
- const listener = new Listener();
794
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
795
- await unsubscribe();
796
- const addEvent = new AddEvent({
797
- a: 1,
798
- b: 2,
799
- });
800
- const subEvent = new SubEvent({
801
- c: 1,
802
- d: 2,
803
- });
804
- await eventBusA.dispatchMany([addEvent, subEvent]);
805
- await LazyPromise.delay(TTL);
806
- expect(listener.resultA).toBeNull();
807
- expect(listener.resultB).toBeNull();
808
- });
809
- test("Function listener", async () => {
810
- let resultA = null;
811
- let resultB = null;
812
- const listener = (event) => {
813
- if (event instanceof AddEvent) {
814
- resultA = event;
815
- }
816
- if (event instanceof SubEvent) {
817
- resultB = event;
818
- }
819
- };
820
- const unsubscribe = await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
821
- await unsubscribe();
822
- const addEvent = new AddEvent({
823
- a: 1,
824
- b: 2,
825
- });
826
- const subEvent = new SubEvent({
827
- c: 1,
828
- d: 2,
829
- });
830
- await eventBusA.dispatchMany([addEvent, subEvent]);
831
- await LazyPromise.delay(TTL);
832
- expect(resultA).toBeNull();
833
- expect(resultB).toBeNull();
298
+ test("Function listener", async () => {
299
+ let result = null;
300
+ const listener = (event) => {
301
+ result = event;
302
+ };
303
+ const unsubscribe = await eventBus.subscribe(AddEvent, listener);
304
+ await unsubscribe();
305
+ const event = new AddEvent({
306
+ a: 1,
307
+ b: 2,
834
308
  });
309
+ await eventBus.dispatch(event);
310
+ await LazyPromise.delay(TTL);
311
+ expect(result).toBeNull();
835
312
  });
836
- describe("Should be null when listener is removed by removeListener and event is triggered", () => {
837
- test("Object literal listener", async () => {
838
- const listener = {
839
- resultA: null,
840
- resultB: null,
841
- invoke(event) {
842
- if (event instanceof AddEvent) {
843
- this.resultA = event;
844
- }
845
- if (event instanceof SubEvent) {
846
- this.resultB = event;
847
- }
848
- },
849
- };
850
- await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
851
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
852
- const addEvent = new AddEvent({
853
- a: 1,
854
- b: 2,
855
- });
856
- const subEvent = new SubEvent({
857
- c: 1,
858
- d: 2,
859
- });
860
- await eventBusA.dispatchMany([addEvent, subEvent]);
861
- await LazyPromise.delay(TTL);
862
- expect(listener.resultA).toBeNull();
863
- expect(listener.resultB).toBeNull();
313
+ });
314
+ describe("Should be null when listener is removed by removeListener and event is triggered", () => {
315
+ test("Object literal listener", async () => {
316
+ const listener = {
317
+ result: null,
318
+ invoke(event) {
319
+ this.result = event;
320
+ },
321
+ };
322
+ await eventBus.subscribe(AddEvent, listener);
323
+ await eventBus.removeListener(AddEvent, listener);
324
+ const event = new AddEvent({
325
+ a: 1,
326
+ b: 2,
864
327
  });
865
- test("Class instance listener", async () => {
866
- class Listener {
867
- resultA = null;
868
- resultB = null;
869
- invoke(event) {
870
- if (event instanceof AddEvent) {
871
- this.resultA = event;
872
- }
873
- if (event instanceof SubEvent) {
874
- this.resultB = event;
875
- }
876
- }
328
+ await eventBus.dispatch(event);
329
+ await LazyPromise.delay(TTL);
330
+ expect(listener.result).toBeNull();
331
+ });
332
+ test("Class instance listener", async () => {
333
+ class Listener {
334
+ result = null;
335
+ invoke(event) {
336
+ this.result = event;
877
337
  }
878
- const listener = new Listener();
879
- await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
880
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
881
- const addEvent = new AddEvent({
882
- a: 1,
883
- b: 2,
884
- });
885
- const subEvent = new SubEvent({
886
- c: 1,
887
- d: 2,
888
- });
889
- await eventBusA.dispatchMany([addEvent, subEvent]);
890
- await LazyPromise.delay(TTL);
891
- expect(listener.resultA).toBeNull();
892
- expect(listener.resultB).toBeNull();
338
+ }
339
+ const listener = new Listener();
340
+ await eventBus.subscribe(AddEvent, listener);
341
+ await eventBus.removeListener(AddEvent, listener);
342
+ const event = new AddEvent({
343
+ a: 1,
344
+ b: 2,
893
345
  });
894
- test("Function listener", async () => {
895
- let resultA = null;
896
- let resultB = null;
897
- const listener = (event) => {
898
- if (event instanceof AddEvent) {
899
- resultA = event;
900
- }
901
- if (event instanceof SubEvent) {
902
- resultB = event;
903
- }
904
- };
905
- await eventBusA.subscribeMany([AddEvent, SubEvent], listener);
906
- await eventBusA.removeListenerMany([AddEvent, SubEvent], listener);
907
- const addEvent = new AddEvent({
908
- a: 1,
909
- b: 2,
910
- });
911
- const subEvent = new SubEvent({
912
- c: 1,
913
- d: 2,
914
- });
915
- await eventBusA.dispatchMany([addEvent, subEvent]);
916
- await LazyPromise.delay(TTL);
917
- expect(resultA).toBeNull();
918
- expect(resultB).toBeNull();
346
+ await eventBus.dispatch(event);
347
+ await LazyPromise.delay(TTL);
348
+ expect(listener.result).toBeNull();
349
+ });
350
+ test("Function listener", async () => {
351
+ let result = null;
352
+ const listener = (event) => {
353
+ result = event;
354
+ };
355
+ await eventBus.subscribe(AddEvent, listener);
356
+ await eventBus.removeListener(AddEvent, listener);
357
+ const event = new AddEvent({
358
+ a: 1,
359
+ b: 2,
919
360
  });
361
+ await eventBus.dispatch(event);
362
+ await LazyPromise.delay(TTL);
363
+ expect(result).toBeNull();
920
364
  });
921
365
  });
922
- describe("method: subscribeOnce", () => {
923
- describe("Should be null when listener added and event is not triggered", () => {
924
- test("Object literal listener", async () => {
925
- const listener = {
926
- result: null,
927
- invoke(event) {
928
- this.result = event;
929
- },
930
- };
931
- await eventBusA.subscribeOnce(AddEvent, listener);
932
- expect(listener.result).toBeNull();
933
- });
934
- test("Class instance listener", async () => {
935
- class Listener {
936
- result = null;
937
- invoke(event) {
938
- this.result = event;
939
- }
366
+ });
367
+ describe("method: subscribeOnce", () => {
368
+ describe("Should be null when listener added and event is not triggered", () => {
369
+ test("Object literal listener", async () => {
370
+ const listener = {
371
+ result: null,
372
+ invoke(event) {
373
+ this.result = event;
374
+ },
375
+ };
376
+ await eventBus.subscribeOnce(AddEvent, listener);
377
+ expect(listener.result).toBeNull();
378
+ });
379
+ test("Class instance listener", async () => {
380
+ class Listener {
381
+ result = null;
382
+ invoke(event) {
383
+ this.result = event;
940
384
  }
941
- const listener = new Listener();
942
- await eventBusA.subscribeOnce(AddEvent, listener);
943
- expect(listener.result).toBeNull();
944
- });
945
- test("Function listener", async () => {
946
- let result = null;
947
- const listener = (event) => {
948
- result = event;
949
- };
950
- await eventBusA.subscribeOnce(AddEvent, listener);
951
- expect(result).toBeNull();
952
- });
385
+ }
386
+ const listener = new Listener();
387
+ await eventBus.subscribeOnce(AddEvent, listener);
388
+ expect(listener.result).toBeNull();
953
389
  });
954
- describe("Should be AddEvent when listener added and event is triggered", () => {
955
- test("Object literal listener", async () => {
956
- const listener = {
957
- result: null,
958
- invoke(event) {
959
- this.result = event;
960
- },
961
- };
962
- await eventBusA.subscribeOnce(AddEvent, listener);
963
- const event = new AddEvent({
964
- a: 1,
965
- b: 2,
966
- });
967
- await eventBusA.dispatch(event);
968
- await LazyPromise.delay(TTL);
969
- expect(listener.result).toEqual(event);
970
- expect(listener.result).toBeInstanceOf(AddEvent);
971
- });
972
- test("Class instance listener", async () => {
973
- class Listener {
974
- result = null;
975
- invoke(event) {
976
- this.result = event;
977
- }
978
- }
979
- const listener = new Listener();
980
- await eventBusA.subscribeOnce(AddEvent, listener);
981
- const event = new AddEvent({
982
- a: 1,
983
- b: 2,
984
- });
985
- await eventBusA.dispatch(event);
986
- await LazyPromise.delay(TTL);
987
- expect(listener.result).toEqual(event);
988
- expect(listener.result).toBeInstanceOf(AddEvent);
989
- });
990
- test("Function listener", async () => {
991
- let result = null;
992
- const listener = (event) => {
993
- result = event;
994
- };
995
- await eventBusA.subscribeOnce(AddEvent, listener);
996
- const event = new AddEvent({
997
- a: 1,
998
- b: 2,
999
- });
1000
- await eventBusA.dispatch(event);
1001
- await LazyPromise.delay(TTL);
1002
- expect(result).toEqual(event);
1003
- expect(result).toBeInstanceOf(AddEvent);
1004
- });
390
+ test("Function listener", async () => {
391
+ let result = null;
392
+ const listener = (event) => {
393
+ result = event;
394
+ };
395
+ await eventBus.subscribeOnce(AddEvent, listener);
396
+ expect(result).toBeNull();
1005
397
  });
1006
- describe("Should only listen for event once", () => {
1007
- test("Object literal listener", async () => {
1008
- const listener = {
1009
- i: 0,
1010
- invoke(_event) {
1011
- this.i++;
1012
- },
1013
- };
1014
- await eventBusA.subscribeOnce(AddEvent, listener);
1015
- const event = new AddEvent({
1016
- a: 1,
1017
- b: 2,
1018
- });
1019
- await eventBusA.dispatch(event);
1020
- await eventBusA.dispatch(event);
1021
- await LazyPromise.delay(TTL);
1022
- expect(listener.i).toBe(1);
398
+ });
399
+ describe("Should be AddEvent when listener added and event is triggered", () => {
400
+ test("Object literal listener", async () => {
401
+ const listener = {
402
+ result: null,
403
+ invoke(event) {
404
+ this.result = event;
405
+ },
406
+ };
407
+ await eventBus.subscribeOnce(AddEvent, listener);
408
+ const event = new AddEvent({
409
+ a: 1,
410
+ b: 2,
1023
411
  });
1024
- test("Class instance listener", async () => {
1025
- class Listener {
1026
- i = 0;
1027
- invoke(_event) {
1028
- this.i++;
1029
- }
412
+ await eventBus.dispatch(event);
413
+ await LazyPromise.delay(TTL);
414
+ expect(listener.result).toEqual(event);
415
+ expect(listener.result).toBeInstanceOf(AddEvent);
416
+ });
417
+ test("Class instance listener", async () => {
418
+ class Listener {
419
+ result = null;
420
+ invoke(event) {
421
+ this.result = event;
1030
422
  }
1031
- const listener = new Listener();
1032
- await eventBusA.subscribeOnce(AddEvent, listener);
1033
- const event = new AddEvent({
1034
- a: 1,
1035
- b: 2,
1036
- });
1037
- await eventBusA.dispatch(event);
1038
- await eventBusA.dispatch(event);
1039
- await LazyPromise.delay(TTL);
1040
- expect(listener.i).toBe(1);
1041
- });
1042
- test("Function listener", async () => {
1043
- let i = 0;
1044
- const listener = () => {
1045
- i++;
1046
- };
1047
- await eventBusA.subscribeOnce(AddEvent, listener);
1048
- const event = new AddEvent({
1049
- a: 1,
1050
- b: 2,
1051
- });
1052
- await eventBusA.dispatch(event);
1053
- await eventBusA.dispatch(event);
1054
- await LazyPromise.delay(TTL);
1055
- expect(i).toBe(1);
423
+ }
424
+ const listener = new Listener();
425
+ await eventBus.subscribeOnce(AddEvent, listener);
426
+ const event = new AddEvent({
427
+ a: 1,
428
+ b: 2,
1056
429
  });
430
+ await eventBus.dispatch(event);
431
+ await LazyPromise.delay(TTL);
432
+ expect(listener.result).toEqual(event);
433
+ expect(listener.result).toBeInstanceOf(AddEvent);
1057
434
  });
1058
- describe("Should be null when listener is removed by unsubscribe function and event is triggered", () => {
1059
- test("Object literal listener", async () => {
1060
- const listener = {
1061
- result: null,
1062
- invoke(event) {
1063
- this.result = event;
1064
- },
1065
- };
1066
- const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1067
- await unsubscribe();
1068
- const event = new AddEvent({
1069
- a: 1,
1070
- b: 2,
1071
- });
1072
- await eventBusA.dispatch(event);
1073
- await LazyPromise.delay(TTL);
1074
- expect(listener.result).toBeNull();
1075
- });
1076
- test("Class instance listener", async () => {
1077
- class Listener {
1078
- result = null;
1079
- invoke(event) {
1080
- this.result = event;
1081
- }
1082
- }
1083
- const listener = new Listener();
1084
- const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1085
- await unsubscribe();
1086
- const event = new AddEvent({
1087
- a: 1,
1088
- b: 2,
1089
- });
1090
- await eventBusA.dispatch(event);
1091
- await LazyPromise.delay(TTL);
1092
- expect(listener.result).toBeNull();
1093
- });
1094
- test("Function listener", async () => {
1095
- let result = null;
1096
- const listener = (event) => {
1097
- result = event;
1098
- };
1099
- const unsubscribe = await eventBusA.subscribeOnce(AddEvent, listener);
1100
- await unsubscribe();
1101
- const event = new AddEvent({
1102
- a: 1,
1103
- b: 2,
1104
- });
1105
- await eventBusA.dispatch(event);
1106
- await LazyPromise.delay(TTL);
1107
- expect(result).toBeNull();
435
+ test("Function listener", async () => {
436
+ let result = null;
437
+ const listener = (event) => {
438
+ result = event;
439
+ };
440
+ await eventBus.subscribeOnce(AddEvent, listener);
441
+ const event = new AddEvent({
442
+ a: 1,
443
+ b: 2,
1108
444
  });
445
+ await eventBus.dispatch(event);
446
+ await LazyPromise.delay(TTL);
447
+ expect(result).toEqual(event);
448
+ expect(result).toBeInstanceOf(AddEvent);
1109
449
  });
1110
- describe("Should be null when listener is removed by removeListener method and event is triggered", () => {
1111
- test("Object literal listener", async () => {
1112
- const listener = {
1113
- result: null,
1114
- invoke(event) {
1115
- this.result = event;
1116
- },
1117
- };
1118
- await eventBusA.subscribeOnce(AddEvent, listener);
1119
- await eventBusA.removeListener(AddEvent, listener);
1120
- const event = new AddEvent({
1121
- a: 1,
1122
- b: 2,
1123
- });
1124
- await eventBusA.dispatch(event);
1125
- await LazyPromise.delay(TTL);
1126
- expect(listener.result).toBeNull();
450
+ });
451
+ describe("Should only listen for event once", () => {
452
+ test("Object literal listener", async () => {
453
+ const listener = {
454
+ i: 0,
455
+ invoke(_event) {
456
+ this.i++;
457
+ },
458
+ };
459
+ await eventBus.subscribeOnce(AddEvent, listener);
460
+ const event = new AddEvent({
461
+ a: 1,
462
+ b: 2,
1127
463
  });
1128
- test("Class instance listener", async () => {
1129
- class Listener {
1130
- result = null;
1131
- invoke(event) {
1132
- this.result = event;
1133
- }
464
+ await eventBus.dispatch(event);
465
+ await eventBus.dispatch(event);
466
+ await LazyPromise.delay(TTL);
467
+ expect(listener.i).toBe(1);
468
+ });
469
+ test("Class instance listener", async () => {
470
+ class Listener {
471
+ i = 0;
472
+ invoke(_event) {
473
+ this.i++;
1134
474
  }
1135
- const listener = new Listener();
1136
- await eventBusA.subscribeOnce(AddEvent, listener);
1137
- await eventBusA.removeListener(AddEvent, listener);
1138
- const event = new AddEvent({
1139
- a: 1,
1140
- b: 2,
1141
- });
1142
- await eventBusA.dispatch(event);
1143
- await LazyPromise.delay(TTL);
1144
- expect(listener.result).toBeNull();
475
+ }
476
+ const listener = new Listener();
477
+ await eventBus.subscribeOnce(AddEvent, listener);
478
+ const event = new AddEvent({
479
+ a: 1,
480
+ b: 2,
1145
481
  });
1146
- test("Function listener", async () => {
1147
- let result = null;
1148
- const listener = (event) => {
1149
- result = event;
1150
- };
1151
- await eventBusA.subscribeOnce(AddEvent, listener);
1152
- await eventBusA.removeListener(AddEvent, listener);
1153
- const event = new AddEvent({
1154
- a: 1,
1155
- b: 2,
1156
- });
1157
- await eventBusA.dispatch(event);
1158
- await LazyPromise.delay(TTL);
1159
- expect(result).toBeNull();
482
+ await eventBus.dispatch(event);
483
+ await eventBus.dispatch(event);
484
+ await LazyPromise.delay(TTL);
485
+ expect(listener.i).toBe(1);
486
+ });
487
+ test("Function listener", async () => {
488
+ let i = 0;
489
+ const listener = () => {
490
+ i++;
491
+ };
492
+ await eventBus.subscribeOnce(AddEvent, listener);
493
+ const event = new AddEvent({
494
+ a: 1,
495
+ b: 2,
1160
496
  });
497
+ await eventBus.dispatch(event);
498
+ await eventBus.dispatch(event);
499
+ await LazyPromise.delay(TTL);
500
+ expect(i).toBe(1);
1161
501
  });
1162
502
  });
1163
- describe("method: listenOnce", () => {
1164
- describe("Should be null when listener added and event is not triggered", () => {
1165
- test("Object literal listener", async () => {
1166
- const listener = {
1167
- result: null,
1168
- invoke(event) {
1169
- this.result = event;
1170
- },
1171
- };
1172
- await eventBusA.listenOnce(AddEvent, listener);
1173
- expect(listener.result).toBeNull();
1174
- });
1175
- test("Class instance listener", async () => {
1176
- class Listener {
1177
- result = null;
1178
- invoke(event) {
1179
- this.result = event;
1180
- }
1181
- }
1182
- const listener = new Listener();
1183
- await eventBusA.listenOnce(AddEvent, listener);
1184
- expect(listener.result).toBeNull();
1185
- });
1186
- test("Function listener", async () => {
1187
- let result = null;
1188
- const listener = (event) => {
1189
- result = event;
1190
- };
1191
- await eventBusA.listenOnce(AddEvent, listener);
1192
- expect(result).toBeNull();
503
+ describe("Should be null when listener is removed by unsubscribe function and event is triggered", () => {
504
+ test("Object literal listener", async () => {
505
+ const listener = {
506
+ result: null,
507
+ invoke(event) {
508
+ this.result = event;
509
+ },
510
+ };
511
+ const unsubscribe = await eventBus.subscribeOnce(AddEvent, listener);
512
+ await unsubscribe();
513
+ const event = new AddEvent({
514
+ a: 1,
515
+ b: 2,
1193
516
  });
517
+ await eventBus.dispatch(event);
518
+ await LazyPromise.delay(TTL);
519
+ expect(listener.result).toBeNull();
1194
520
  });
1195
- describe("Should be AddEvent when listener added and event is triggered", () => {
1196
- test("Object literal listener", async () => {
1197
- const listener = {
1198
- result: null,
1199
- invoke(event) {
1200
- this.result = event;
1201
- },
1202
- };
1203
- await eventBusA.listenOnce(AddEvent, listener);
1204
- const event = new AddEvent({
1205
- a: 1,
1206
- b: 2,
1207
- });
1208
- await eventBusA.dispatch(event);
1209
- await LazyPromise.delay(TTL);
1210
- expect(listener.result).toEqual(event);
1211
- expect(listener.result).toBeInstanceOf(AddEvent);
1212
- });
1213
- test("Class instance listener", async () => {
1214
- class Listener {
1215
- result = null;
1216
- invoke(event) {
1217
- this.result = event;
1218
- }
521
+ test("Class instance listener", async () => {
522
+ class Listener {
523
+ result = null;
524
+ invoke(event) {
525
+ this.result = event;
1219
526
  }
1220
- const listener = new Listener();
1221
- await eventBusA.listenOnce(AddEvent, listener);
1222
- const event = new AddEvent({
1223
- a: 1,
1224
- b: 2,
1225
- });
1226
- await eventBusA.dispatch(event);
1227
- await LazyPromise.delay(TTL);
1228
- expect(listener.result).toEqual(event);
1229
- expect(listener.result).toBeInstanceOf(AddEvent);
1230
- });
1231
- test("Function listener", async () => {
1232
- let result = null;
1233
- const listener = (event) => {
1234
- result = event;
1235
- };
1236
- await eventBusA.listenOnce(AddEvent, listener);
1237
- const event = new AddEvent({
1238
- a: 1,
1239
- b: 2,
1240
- });
1241
- await eventBusA.dispatch(event);
1242
- await LazyPromise.delay(TTL);
1243
- expect(result).toEqual(event);
1244
- expect(result).toBeInstanceOf(AddEvent);
527
+ }
528
+ const listener = new Listener();
529
+ const unsubscribe = await eventBus.subscribeOnce(AddEvent, listener);
530
+ await unsubscribe();
531
+ const event = new AddEvent({
532
+ a: 1,
533
+ b: 2,
1245
534
  });
535
+ await eventBus.dispatch(event);
536
+ await LazyPromise.delay(TTL);
537
+ expect(listener.result).toBeNull();
1246
538
  });
1247
- describe("Should only listen for event once", () => {
1248
- test("Object literal listener", async () => {
1249
- const listener = {
1250
- i: 0,
1251
- invoke(_event) {
1252
- this.i++;
1253
- },
1254
- };
1255
- await eventBusA.listenOnce(AddEvent, listener);
1256
- const event = new AddEvent({
1257
- a: 1,
1258
- b: 2,
1259
- });
1260
- await eventBusA.dispatch(event);
1261
- await eventBusA.dispatch(event);
1262
- await LazyPromise.delay(TTL);
1263
- expect(listener.i).toBe(1);
1264
- });
1265
- test("Class instance listener", async () => {
1266
- class Listener {
1267
- i = 0;
1268
- invoke(_event) {
1269
- this.i++;
1270
- }
1271
- }
1272
- const listener = new Listener();
1273
- await eventBusA.listenOnce(AddEvent, listener);
1274
- const event = new AddEvent({
1275
- a: 1,
1276
- b: 2,
1277
- });
1278
- await eventBusA.dispatch(event);
1279
- await eventBusA.dispatch(event);
1280
- await LazyPromise.delay(TTL);
1281
- expect(listener.i).toBe(1);
1282
- });
1283
- test("Function listener", async () => {
1284
- let i = 0;
1285
- const listener = () => {
1286
- i++;
1287
- };
1288
- await eventBusA.listenOnce(AddEvent, listener);
1289
- const event = new AddEvent({
1290
- a: 1,
1291
- b: 2,
1292
- });
1293
- await eventBusA.dispatch(event);
1294
- await eventBusA.dispatch(event);
1295
- await LazyPromise.delay(TTL);
1296
- expect(i).toBe(1);
539
+ test("Function listener", async () => {
540
+ let result = null;
541
+ const listener = (event) => {
542
+ result = event;
543
+ };
544
+ const unsubscribe = await eventBus.subscribeOnce(AddEvent, listener);
545
+ await unsubscribe();
546
+ const event = new AddEvent({
547
+ a: 1,
548
+ b: 2,
1297
549
  });
550
+ await eventBus.dispatch(event);
551
+ await LazyPromise.delay(TTL);
552
+ expect(result).toBeNull();
1298
553
  });
1299
- describe("Should be null when listener is removed and event is triggered", () => {
1300
- test("Object literal listener", async () => {
1301
- const listener = {
1302
- result: null,
1303
- invoke(event) {
1304
- this.result = event;
1305
- },
1306
- };
1307
- await eventBusA.listenOnce(AddEvent, listener);
1308
- await eventBusA.removeListener(AddEvent, listener);
1309
- const event = new AddEvent({
1310
- a: 1,
1311
- b: 2,
1312
- });
1313
- await eventBusA.dispatch(event);
1314
- await LazyPromise.delay(TTL);
1315
- expect(listener.result).toBeNull();
554
+ });
555
+ describe("Should be null when listener is removed by removeListener method and event is triggered", () => {
556
+ test("Object literal listener", async () => {
557
+ const listener = {
558
+ result: null,
559
+ invoke(event) {
560
+ this.result = event;
561
+ },
562
+ };
563
+ await eventBus.subscribeOnce(AddEvent, listener);
564
+ await eventBus.removeListener(AddEvent, listener);
565
+ const event = new AddEvent({
566
+ a: 1,
567
+ b: 2,
1316
568
  });
1317
- test("Class instance listener", async () => {
1318
- class Listener {
1319
- result = null;
1320
- invoke(event) {
1321
- this.result = event;
1322
- }
569
+ await eventBus.dispatch(event);
570
+ await LazyPromise.delay(TTL);
571
+ expect(listener.result).toBeNull();
572
+ });
573
+ test("Class instance listener", async () => {
574
+ class Listener {
575
+ result = null;
576
+ invoke(event) {
577
+ this.result = event;
1323
578
  }
1324
- const listener = new Listener();
1325
- await eventBusA.listenOnce(AddEvent, listener);
1326
- await eventBusA.removeListener(AddEvent, listener);
1327
- const event = new AddEvent({
1328
- a: 1,
1329
- b: 2,
1330
- });
1331
- await eventBusA.dispatch(event);
1332
- await LazyPromise.delay(TTL);
1333
- expect(listener.result).toBeNull();
579
+ }
580
+ const listener = new Listener();
581
+ await eventBus.subscribeOnce(AddEvent, listener);
582
+ await eventBus.removeListener(AddEvent, listener);
583
+ const event = new AddEvent({
584
+ a: 1,
585
+ b: 2,
1334
586
  });
1335
- test("Function listener", async () => {
1336
- let result = null;
1337
- const listener = (event) => {
1338
- result = event;
1339
- };
1340
- await eventBusA.listenOnce(AddEvent, listener);
1341
- await eventBusA.removeListener(AddEvent, listener);
1342
- const event = new AddEvent({
1343
- a: 1,
1344
- b: 2,
1345
- });
1346
- await eventBusA.dispatch(event);
1347
- await LazyPromise.delay(TTL);
1348
- expect(result).toBeNull();
587
+ await eventBus.dispatch(event);
588
+ await LazyPromise.delay(TTL);
589
+ expect(listener.result).toBeNull();
590
+ });
591
+ test("Function listener", async () => {
592
+ let result = null;
593
+ const listener = (event) => {
594
+ result = event;
595
+ };
596
+ await eventBus.subscribeOnce(AddEvent, listener);
597
+ await eventBus.removeListener(AddEvent, listener);
598
+ const event = new AddEvent({
599
+ a: 1,
600
+ b: 2,
1349
601
  });
602
+ await eventBus.dispatch(event);
603
+ await LazyPromise.delay(TTL);
604
+ expect(result).toBeNull();
1350
605
  });
1351
606
  });
1352
- describe("method: asPromise", () => {
1353
- test("Should be null when listener added and event is not triggered", () => {
607
+ });
608
+ describe("method: listenOnce", () => {
609
+ describe("Should be null when listener added and event is not triggered", () => {
610
+ test("Object literal listener", async () => {
611
+ const listener = {
612
+ result: null,
613
+ invoke(event) {
614
+ this.result = event;
615
+ },
616
+ };
617
+ await eventBus.listenOnce(AddEvent, listener);
618
+ expect(listener.result).toBeNull();
619
+ });
620
+ test("Class instance listener", async () => {
621
+ class Listener {
622
+ result = null;
623
+ invoke(event) {
624
+ this.result = event;
625
+ }
626
+ }
627
+ const listener = new Listener();
628
+ await eventBus.listenOnce(AddEvent, listener);
629
+ expect(listener.result).toBeNull();
630
+ });
631
+ test("Function listener", async () => {
1354
632
  let result = null;
1355
633
  const listener = (event) => {
1356
634
  result = event;
1357
635
  };
1358
- eventBusA.asPromise(AddEvent).then(listener);
636
+ await eventBus.listenOnce(AddEvent, listener);
1359
637
  expect(result).toBeNull();
1360
638
  });
1361
- test("Should be AddEvent when listener added and event is triggered", async () => {
639
+ });
640
+ describe("Should be AddEvent when listener added and event is triggered", () => {
641
+ test("Object literal listener", async () => {
642
+ const listener = {
643
+ result: null,
644
+ invoke(event) {
645
+ this.result = event;
646
+ },
647
+ };
648
+ await eventBus.listenOnce(AddEvent, listener);
649
+ const event = new AddEvent({
650
+ a: 1,
651
+ b: 2,
652
+ });
653
+ await eventBus.dispatch(event);
654
+ await LazyPromise.delay(TTL);
655
+ expect(listener.result).toEqual(event);
656
+ expect(listener.result).toBeInstanceOf(AddEvent);
657
+ });
658
+ test("Class instance listener", async () => {
659
+ class Listener {
660
+ result = null;
661
+ invoke(event) {
662
+ this.result = event;
663
+ }
664
+ }
665
+ const listener = new Listener();
666
+ await eventBus.listenOnce(AddEvent, listener);
667
+ const event = new AddEvent({
668
+ a: 1,
669
+ b: 2,
670
+ });
671
+ await eventBus.dispatch(event);
672
+ await LazyPromise.delay(TTL);
673
+ expect(listener.result).toEqual(event);
674
+ expect(listener.result).toBeInstanceOf(AddEvent);
675
+ });
676
+ test("Function listener", async () => {
1362
677
  let result = null;
1363
678
  const listener = (event) => {
1364
679
  result = event;
1365
680
  };
1366
- eventBusA.asPromise(AddEvent).then(listener);
681
+ await eventBus.listenOnce(AddEvent, listener);
1367
682
  const event = new AddEvent({
1368
683
  a: 1,
1369
684
  b: 2,
1370
685
  });
1371
- await eventBusA.dispatch(event);
686
+ await eventBus.dispatch(event);
1372
687
  await LazyPromise.delay(TTL);
1373
688
  expect(result).toEqual(event);
1374
689
  expect(result).toBeInstanceOf(AddEvent);
1375
690
  });
1376
691
  });
1377
- });
1378
- describe("Group tests:", () => {
1379
- test("method: addListener / dispatch", async () => {
1380
- let result_a = null;
1381
- await eventBusA.addListener(AddEvent, (event) => {
1382
- result_a = event;
1383
- });
1384
- let result_b = null;
1385
- await eventBusB.addListener(AddEvent, (event) => {
1386
- result_b = event;
1387
- });
1388
- const event = new AddEvent({
1389
- a: 1,
1390
- b: 2,
1391
- });
1392
- await eventBusA.dispatch(event);
1393
- await LazyPromise.delay(TTL);
1394
- expect(result_a).toEqual(event);
1395
- expect(result_a).toBeInstanceOf(AddEvent);
1396
- expect(result_b).toBeNull();
1397
- });
1398
- test("method: addListenerMany / dispatch", async () => {
1399
- let result_a = null;
1400
- await eventBusA.addListenerMany([AddEvent], (event) => {
1401
- result_a = event;
692
+ describe("Should only listen for event once", () => {
693
+ test("Object literal listener", async () => {
694
+ const listener = {
695
+ i: 0,
696
+ invoke(_event) {
697
+ this.i++;
698
+ },
699
+ };
700
+ await eventBus.listenOnce(AddEvent, listener);
701
+ const event = new AddEvent({
702
+ a: 1,
703
+ b: 2,
704
+ });
705
+ await eventBus.dispatch(event);
706
+ await eventBus.dispatch(event);
707
+ await LazyPromise.delay(TTL);
708
+ expect(listener.i).toBe(1);
1402
709
  });
1403
- let result_b = null;
1404
- await eventBusB.addListenerMany([AddEvent], (event) => {
1405
- result_b = event;
710
+ test("Class instance listener", async () => {
711
+ class Listener {
712
+ i = 0;
713
+ invoke(_event) {
714
+ this.i++;
715
+ }
716
+ }
717
+ const listener = new Listener();
718
+ await eventBus.listenOnce(AddEvent, listener);
719
+ const event = new AddEvent({
720
+ a: 1,
721
+ b: 2,
722
+ });
723
+ await eventBus.dispatch(event);
724
+ await eventBus.dispatch(event);
725
+ await LazyPromise.delay(TTL);
726
+ expect(listener.i).toBe(1);
1406
727
  });
1407
- const event = new AddEvent({
1408
- a: 1,
1409
- b: 2,
728
+ test("Function listener", async () => {
729
+ let i = 0;
730
+ const listener = () => {
731
+ i++;
732
+ };
733
+ await eventBus.listenOnce(AddEvent, listener);
734
+ const event = new AddEvent({
735
+ a: 1,
736
+ b: 2,
737
+ });
738
+ await eventBus.dispatch(event);
739
+ await eventBus.dispatch(event);
740
+ await LazyPromise.delay(TTL);
741
+ expect(i).toBe(1);
1410
742
  });
1411
- await eventBusA.dispatch(event);
1412
- await LazyPromise.delay(TTL);
1413
- expect(result_a).toEqual(event);
1414
- expect(result_a).toBeInstanceOf(AddEvent);
1415
- expect(result_b).toBeNull();
1416
743
  });
1417
- test("method: removeListener / addListener / dispatch", async () => {
1418
- let result_a = null;
1419
- await eventBusA.addListener(AddEvent, (event) => {
1420
- result_a = event;
1421
- });
1422
- let result_b = null;
1423
- const listenerB = (event) => {
1424
- result_b = event;
1425
- };
1426
- await eventBusB.addListener(AddEvent, listenerB);
1427
- await eventBusB.removeListener(AddEvent, listenerB);
1428
- const event = new AddEvent({
1429
- a: 1,
1430
- b: 2,
744
+ describe("Should be null when listener is removed and event is triggered", () => {
745
+ test("Object literal listener", async () => {
746
+ const listener = {
747
+ result: null,
748
+ invoke(event) {
749
+ this.result = event;
750
+ },
751
+ };
752
+ await eventBus.listenOnce(AddEvent, listener);
753
+ await eventBus.removeListener(AddEvent, listener);
754
+ const event = new AddEvent({
755
+ a: 1,
756
+ b: 2,
757
+ });
758
+ await eventBus.dispatch(event);
759
+ await LazyPromise.delay(TTL);
760
+ expect(listener.result).toBeNull();
1431
761
  });
1432
- await eventBusA.dispatch(event);
1433
- await eventBusB.dispatch(event);
1434
- await LazyPromise.delay(TTL);
1435
- expect(result_a).toEqual(event);
1436
- expect(result_a).toBeInstanceOf(AddEvent);
1437
- expect(result_b).toBeNull();
1438
- });
1439
- test("method: removeListenerMany / addListener / dispatch", async () => {
1440
- let result_a = null;
1441
- await eventBusA.addListener(AddEvent, (event) => {
1442
- result_a = event;
762
+ test("Class instance listener", async () => {
763
+ class Listener {
764
+ result = null;
765
+ invoke(event) {
766
+ this.result = event;
767
+ }
768
+ }
769
+ const listener = new Listener();
770
+ await eventBus.listenOnce(AddEvent, listener);
771
+ await eventBus.removeListener(AddEvent, listener);
772
+ const event = new AddEvent({
773
+ a: 1,
774
+ b: 2,
775
+ });
776
+ await eventBus.dispatch(event);
777
+ await LazyPromise.delay(TTL);
778
+ expect(listener.result).toBeNull();
1443
779
  });
1444
- let result_b = null;
1445
- const listenerB = (event) => {
1446
- result_b = event;
1447
- };
1448
- await eventBusB.addListener(AddEvent, listenerB);
1449
- await eventBusB.removeListenerMany([AddEvent], listenerB);
1450
- const event = new AddEvent({
1451
- a: 1,
1452
- b: 2,
780
+ test("Function listener", async () => {
781
+ let result = null;
782
+ const listener = (event) => {
783
+ result = event;
784
+ };
785
+ await eventBus.listenOnce(AddEvent, listener);
786
+ await eventBus.removeListener(AddEvent, listener);
787
+ const event = new AddEvent({
788
+ a: 1,
789
+ b: 2,
790
+ });
791
+ await eventBus.dispatch(event);
792
+ await LazyPromise.delay(TTL);
793
+ expect(result).toBeNull();
1453
794
  });
1454
- await eventBusA.dispatch(event);
1455
- await eventBusB.dispatch(event);
1456
- await LazyPromise.delay(TTL);
1457
- expect(result_a).toEqual(event);
1458
- expect(result_a).toBeInstanceOf(AddEvent);
1459
- expect(result_b).toBeNull();
1460
795
  });
1461
- test("method: subscribe / dispatch", async () => {
1462
- let result_a = null;
1463
- await eventBusA.subscribe(AddEvent, (event) => {
1464
- result_a = event;
1465
- });
1466
- let result_b = null;
1467
- const listenerB = (event) => {
1468
- result_b = event;
796
+ });
797
+ describe("method: asPromise", () => {
798
+ test("Should be null when listener added and event is not triggered", () => {
799
+ let result = null;
800
+ const listener = (event) => {
801
+ result = event;
1469
802
  };
1470
- const unsubscribe = await eventBusB.subscribe(AddEvent, listenerB);
1471
- await unsubscribe();
1472
- const event = new AddEvent({
1473
- a: 1,
1474
- b: 2,
1475
- });
1476
- await eventBusA.dispatch(event);
1477
- await eventBusB.dispatch(event);
1478
- await LazyPromise.delay(TTL);
1479
- expect(result_a).toEqual(event);
1480
- expect(result_a).toBeInstanceOf(AddEvent);
1481
- expect(result_b).toBeNull();
803
+ eventBus.asPromise(AddEvent).then(listener);
804
+ expect(result).toBeNull();
1482
805
  });
1483
- test("method: subscribeMany / dispatch", async () => {
1484
- let result_a = null;
1485
- await eventBusA.subscribeMany([AddEvent], (event) => {
1486
- result_a = event;
1487
- });
1488
- let result_b = null;
1489
- const listenerB = (event) => {
1490
- result_b = event;
806
+ test("Should be AddEvent when listener added and event is triggered", async () => {
807
+ let result = null;
808
+ const listener = (event) => {
809
+ result = event;
1491
810
  };
1492
- const unsubscribe = await eventBusB.subscribeMany([AddEvent], listenerB);
1493
- await unsubscribe();
1494
- const event = new AddEvent({
1495
- a: 1,
1496
- b: 2,
1497
- });
1498
- await eventBusA.dispatch(event);
1499
- await eventBusB.dispatch(event);
1500
- await LazyPromise.delay(TTL);
1501
- expect(result_a).toEqual(event);
1502
- expect(result_a).toBeInstanceOf(AddEvent);
1503
- expect(result_b).toBeNull();
1504
- });
1505
- test("method: subscribeOnce", async () => {
1506
- let result_a = null;
1507
- await eventBusA.subscribeOnce(AddEvent, (event) => {
1508
- result_a = event;
1509
- });
1510
- let result_b = null;
1511
- await eventBusB.subscribeOnce(AddEvent, (event) => {
1512
- result_b = event;
1513
- });
1514
- const event = new AddEvent({
1515
- a: 1,
1516
- b: 2,
1517
- });
1518
- await eventBusA.dispatch(event);
1519
- await LazyPromise.delay(TTL);
1520
- expect(result_a).toEqual(event);
1521
- expect(result_a).toBeInstanceOf(AddEvent);
1522
- expect(result_b).toBeNull();
1523
- });
1524
- test("method: listenOnce", async () => {
1525
- let result_a = null;
1526
- await eventBusA.listenOnce(AddEvent, (event) => {
1527
- result_a = event;
1528
- });
1529
- let result_b = null;
1530
- await eventBusB.listenOnce(AddEvent, (event) => {
1531
- result_b = event;
1532
- });
1533
- const event = new AddEvent({
1534
- a: 1,
1535
- b: 2,
1536
- });
1537
- await eventBusA.dispatch(event);
1538
- await LazyPromise.delay(TTL);
1539
- expect(result_a).toEqual(event);
1540
- expect(result_a).toBeInstanceOf(AddEvent);
1541
- expect(result_b).toBeNull();
1542
- });
1543
- test("method: asPromise", async () => {
1544
- let result_a = null;
1545
- eventBusA.asPromise(AddEvent).then((event) => {
1546
- result_a = event;
1547
- });
1548
- let result_b = null;
1549
- eventBusB.asPromise(AddEvent).then((event) => {
1550
- result_b = event;
1551
- });
811
+ eventBus.asPromise(AddEvent).then(listener);
1552
812
  const event = new AddEvent({
1553
813
  a: 1,
1554
814
  b: 2,
1555
815
  });
1556
- await eventBusA.dispatch(event);
816
+ await eventBus.dispatch(event);
1557
817
  await LazyPromise.delay(TTL);
1558
- expect(result_a).toEqual(event);
1559
- expect(result_a).toBeInstanceOf(AddEvent);
1560
- expect(result_b).toBeNull();
818
+ expect(result).toEqual(event);
819
+ expect(result).toBeInstanceOf(AddEvent);
1561
820
  });
1562
821
  });
1563
822
  }