@daiso-tech/core 0.38.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.
- package/README.md +5 -1
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +1 -1
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +1 -1
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
- package/dist/async/middlewares/bulkhead/bulkhead.middleware.d.ts +2 -2
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js +2 -2
- package/dist/async/middlewares/hedging/sequential-hedging.middleware.js.map +1 -1
- package/dist/async/middlewares/retry/retry.middleware.js +2 -2
- package/dist/async/middlewares/retry/retry.middleware.js.map +1 -1
- package/dist/async/middlewares/retry/retry.types.d.ts +1 -1
- package/dist/cache/contracts/cache-adapter.contract.d.ts +9 -9
- package/dist/cache/contracts/cache.contract.d.ts +7 -7
- package/dist/cache/contracts/cache.errors.d.ts +3 -26
- package/dist/cache/contracts/cache.errors.js +0 -47
- package/dist/cache/contracts/cache.errors.js.map +1 -1
- package/dist/cache/contracts/database-cache-adapter.contract.d.ts +10 -10
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.d.ts +6 -5
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js +17 -13
- package/dist/cache/implementations/adapters/kysely-cache-adapter/kysely-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.d.ts +15 -3
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +25 -9
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.d.ts +9 -9
- package/dist/cache/implementations/adapters/no-op-cache-adapter/no-op-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.d.ts +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter.js +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js +2 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/utilities.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +2 -2
- package/dist/cache/implementations/derivables/cache/cache.js +1 -1
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/collection/contracts/async-collection.contract.d.ts +0 -1
- package/dist/collection/contracts/async-collection.contract.js +3 -1
- package/dist/collection/contracts/async-collection.contract.js.map +1 -1
- package/dist/collection/contracts/collection.contract.d.ts +0 -1
- package/dist/collection/contracts/collection.contract.js +3 -1
- package/dist/collection/contracts/collection.contract.js.map +1 -1
- package/dist/collection/contracts/collection.errors.d.ts +1 -26
- package/dist/collection/contracts/collection.errors.js +0 -55
- package/dist/collection/contracts/collection.errors.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-split-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js +1 -1
- package/dist/collection/implementations/async-iterable-collection/_shared/async-zip-iterable.js.map +1 -1
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js +9 -6
- package/dist/collection/implementations/async-iterable-collection/async-iterable-collection.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/split-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/zip-iterable.js +1 -1
- package/dist/collection/implementations/iterable-collection/_shared/zip-iterable.js.map +1 -1
- package/dist/collection/implementations/iterable-collection/iterable-collection.js +9 -6
- package/dist/collection/implementations/iterable-collection/iterable-collection.js.map +1 -1
- package/dist/collection/implementations/list-collection/list-collection.js +12 -9
- package/dist/collection/implementations/list-collection/list-collection.js.map +1 -1
- package/dist/event-bus/contracts/_module-exports.d.ts +0 -1
- package/dist/event-bus/contracts/_module-exports.js +0 -1
- package/dist/event-bus/contracts/_module-exports.js.map +1 -1
- package/dist/event-bus/contracts/event-bus-adapter.contract.d.ts +3 -3
- package/dist/event-bus/implementations/adapters/no-op-event-bus-adapter/no-op-event-bus-adapter.d.ts +3 -3
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.d.ts +2 -2
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js +3 -2
- package/dist/event-bus/implementations/adapters/redis-pub-sub-event-bus-adapter/redis-pub-sub-event-bus-adapter.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +2 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +26 -26
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.d.ts +11 -4
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.js +17 -12
- package/dist/event-bus/implementations/derivables/event-bus/listener-store.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +17 -20
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +159 -752
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
- package/dist/lock/contracts/database-lock-adapter.contract.d.ts +56 -16
- package/dist/lock/contracts/lock-adapter.contract.d.ts +32 -9
- package/dist/lock/contracts/lock-adapter.contract.js +10 -1
- package/dist/lock/contracts/lock-adapter.contract.js.map +1 -1
- package/dist/lock/contracts/lock.contract.d.ts +30 -25
- package/dist/lock/contracts/lock.errors.d.ts +11 -28
- package/dist/lock/contracts/lock.errors.js +10 -74
- package/dist/lock/contracts/lock.errors.js.map +1 -1
- package/dist/lock/contracts/lock.events.d.ts +15 -3
- package/dist/lock/contracts/lock.events.js +2 -1
- package/dist/lock/contracts/lock.events.js.map +1 -1
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.d.ts +40 -10
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js +135 -37
- package/dist/lock/implementations/adapters/kysely-lock-adapter/kysely-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.d.ts +20 -7
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js +59 -35
- package/dist/lock/implementations/adapters/memory-lock-adapter/memory-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.d.ts +23 -12
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js +152 -87
- package/dist/lock/implementations/adapters/mongodb-lock-adapter/mongodb-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.d.ts +5 -5
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js +3 -2
- package/dist/lock/implementations/adapters/no-op-lock-adapter/no-op-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.d.ts +6 -6
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js +46 -24
- package/dist/lock/implementations/adapters/redis-lock-adapter/redis-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.d.ts +4 -4
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js +45 -12
- package/dist/lock/implementations/derivables/lock-provider/database-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js +7 -5
- package/dist/lock/implementations/derivables/lock-provider/is-database-lock-adapter.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +3 -3
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +2 -3
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.d.ts +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +4 -3
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-state.d.ts +8 -11
- package/dist/lock/implementations/derivables/lock-provider/lock-state.js +9 -26
- package/dist/lock/implementations/derivables/lock-provider/lock-state.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +14 -16
- package/dist/lock/implementations/derivables/lock-provider/lock.js +106 -63
- package/dist/lock/implementations/derivables/lock-provider/lock.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.d.ts +2 -2
- package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
- package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js +184 -166
- package/dist/lock/implementations/test-utilities/database-lock-adapter.test-suite.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js +240 -41
- package/dist/lock/implementations/test-utilities/lock-adapter.test-suite.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +2704 -1514
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/serde/implementations/derivables/serde.d.ts +22 -22
- package/dist/utilities/classes/kysely-table-name-transformer-plugin/kysely-table-name-transformer-plugin.js +2 -1
- package/dist/utilities/classes/kysely-table-name-transformer-plugin/kysely-table-name-transformer-plugin.js.map +1 -1
- package/dist/utilities/classes/namespace/namespace.d.ts +3 -3
- package/dist/utilities/classes/namespace/namespace.js +2 -2
- package/dist/utilities/classes/namespace/namespace.js.map +1 -1
- package/dist/utilities/classes/time-span/time-span.d.ts +10 -2
- package/dist/utilities/classes/time-span/time-span.js +10 -2
- package/dist/utilities/classes/time-span/time-span.js.map +1 -1
- package/dist/utilities/contracts/deinitizable.contract.d.ts +1 -1
- package/dist/utilities/contracts/initizable.contract.d.ts +1 -1
- package/dist/utilities/contracts/prunable.contract.d.ts +1 -1
- package/dist/utilities/errors.d.ts +8 -0
- package/dist/utilities/errors.js +11 -0
- package/dist/utilities/errors.js.map +1 -1
- package/dist/utilities/functions/_module.d.ts +1 -0
- package/dist/utilities/functions/_module.js +1 -0
- package/dist/utilities/functions/_module.js.map +1 -1
- package/dist/utilities/functions/is-class.d.ts +4 -0
- package/dist/utilities/functions/is-class.js +4 -0
- package/dist/utilities/functions/is-class.js.map +1 -1
- package/dist/utilities/functions/is-positive-nbr.d.ts +8 -0
- package/dist/utilities/functions/is-positive-nbr.js +19 -0
- package/dist/utilities/functions/is-positive-nbr.js.map +1 -0
- package/package.json +1 -1
- package/dist/event-bus/contracts/event-bus.errors.d.ts +0 -40
- package/dist/event-bus/contracts/event-bus.errors.js +0 -62
- package/dist/event-bus/contracts/event-bus.errors.js.map +0 -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
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
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
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
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
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
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
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
444
|
-
|
|
445
|
-
|
|
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
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
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
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
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
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
|
|
599
|
-
|
|
600
|
-
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
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
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
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
|
|
780
|
-
|
|
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(
|
|
194
|
+
expect(listener).toHaveBeenCalledTimes(0);
|
|
786
195
|
});
|
|
787
|
-
test("Should
|
|
788
|
-
|
|
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(
|
|
205
|
+
expect(listener).toHaveBeenCalledTimes(1);
|
|
206
|
+
expect(listener).toHaveBeenCalledWith(event);
|
|
800
207
|
});
|
|
801
208
|
});
|
|
802
209
|
}
|