@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.
- package/dist/async/async.errors.d.ts +14 -0
- package/dist/async/async.errors.js +14 -0
- package/dist/async/async.errors.js.map +1 -1
- package/dist/async/async.events.d.ts +23 -0
- package/dist/async/async.events.js +23 -0
- package/dist/async/async.events.js.map +1 -1
- package/dist/async/backof-policies/_shared.d.ts +1 -1
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/constant-backoff-policy/constant-backoff-policy.js +1 -1
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/exponential-backoff-policy/exponential-backoff-policy.js +1 -1
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/linear-backoff-policy/linear-backoff-policy.js +1 -1
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.d.ts +2 -2
- package/dist/async/backof-policies/polynomial-backoff-policy/polynomial-backoff-policy.js +1 -1
- package/dist/async/utilities/lazy-promise/lazy-promise.d.ts +7 -41
- package/dist/async/utilities/lazy-promise/lazy-promise.js +7 -8
- package/dist/async/utilities/lazy-promise/lazy-promise.js.map +1 -1
- package/dist/cache/contracts/cache-factory.contract.d.ts +3 -3
- package/dist/cache/contracts/cache.contract.d.ts +0 -22
- package/dist/cache/contracts/cache.errors.d.ts +14 -1
- package/dist/cache/contracts/cache.errors.js +14 -1
- package/dist/cache/contracts/cache.errors.js.map +1 -1
- package/dist/cache/contracts/cache.events.d.ts +28 -14
- package/dist/cache/contracts/cache.events.js +28 -3
- package/dist/cache/contracts/cache.events.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js +3 -3
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter-serde.js.map +1 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js +0 -1
- package/dist/cache/implementations/adapters/mongodb-cache-adapter/mongodb-cache-adapter.js.map +1 -1
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js +3 -3
- package/dist/cache/implementations/adapters/redis-cache-adapter/redis-cache-adapter-serde.js.map +1 -1
- package/dist/cache/implementations/derivables/cache/cache.d.ts +9 -139
- package/dist/cache/implementations/derivables/cache/cache.js +38 -229
- package/dist/cache/implementations/derivables/cache/cache.js.map +1 -1
- package/dist/cache/implementations/derivables/cache-factory/cache-factory.d.ts +6 -6
- package/dist/cache/implementations/derivables/cache-factory/cache-factory.js.map +1 -1
- package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.d.ts +2 -2
- package/dist/cache/implementations/test-utilities/cache-adapter.test-suite.js +1 -1
- package/dist/cache/implementations/test-utilities/cache.test-suite.d.ts +4 -4
- package/dist/cache/implementations/test-utilities/cache.test-suite.js +239 -433
- package/dist/cache/implementations/test-utilities/cache.test-suite.js.map +1 -1
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.d.ts +2 -2
- package/dist/cache/implementations/test-utilities/database-cache-dapter.test-suite.js +1 -1
- package/dist/collection/contracts/collection.errors.d.ts +17 -0
- package/dist/collection/contracts/collection.errors.js +17 -0
- package/dist/collection/contracts/collection.errors.js.map +1 -1
- package/dist/event-bus/contracts/event-bus-factory.contract.d.ts +3 -3
- package/dist/event-bus/contracts/event-bus.contract.d.ts +2 -44
- package/dist/event-bus/contracts/event-bus.contract.js.map +1 -1
- package/dist/event-bus/contracts/event-bus.errors.d.ts +16 -1
- package/dist/event-bus/contracts/event-bus.errors.js +16 -1
- package/dist/event-bus/contracts/event-bus.errors.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.d.ts +6 -77
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js +11 -131
- package/dist/event-bus/implementations/derivables/event-bus/event-bus.js.map +1 -1
- package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.d.ts +4 -4
- package/dist/event-bus/implementations/derivables/event-bus-factory/event-bus-factory.js.map +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.d.ts +2 -2
- package/dist/event-bus/implementations/test-utilities/event-bus-adapter.test-suite.js +1 -1
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.d.ts +4 -4
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js +691 -1432
- package/dist/event-bus/implementations/test-utilities/event-bus.test-suite.js.map +1 -1
- package/dist/lock/contracts/lock-provider-factory.contract.d.ts +3 -3
- package/dist/lock/contracts/lock-provider.contract.d.ts +10 -20
- package/dist/lock/contracts/lock.contract.d.ts +1 -10
- package/dist/lock/contracts/lock.errors.d.ts +18 -0
- package/dist/lock/contracts/lock.errors.js +18 -0
- package/dist/lock/contracts/lock.errors.js.map +1 -1
- package/dist/lock/contracts/lock.events.d.ts +22 -0
- package/dist/lock/contracts/lock.events.js +22 -0
- package/dist/lock/contracts/lock.events.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.d.ts +12 -155
- package/dist/lock/implementations/derivables/lock-provider/lock-provider.js +31 -228
- 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 +5 -5
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js +7 -30
- package/dist/lock/implementations/derivables/lock-provider/lock-serde-transformer.js.map +1 -1
- package/dist/lock/implementations/derivables/lock-provider/lock.d.ts +8 -58
- package/dist/lock/implementations/derivables/lock-provider/lock.js +33 -105
- 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 +9 -8
- package/dist/lock/implementations/derivables/lock-provider-factory/lock-provider-factory.js.map +1 -1
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.d.ts +2 -2
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js +178 -659
- package/dist/lock/implementations/test-utilities/lock-provider.test-suite.js.map +1 -1
- package/dist/serde/contracts/deserializer.contract.d.ts +1 -1
- package/dist/serde/contracts/deserializer.contract.js +1 -1
- package/dist/serde/contracts/deserializer.contract.js.map +1 -1
- package/dist/serde/contracts/serde.errors.d.ts +14 -2
- package/dist/serde/contracts/serde.errors.js +16 -4
- package/dist/serde/contracts/serde.errors.js.map +1 -1
- package/dist/serde/contracts/serializer.contract.d.ts +1 -1
- package/dist/serde/contracts/serializer.contract.js +1 -1
- package/dist/serde/contracts/serializer.contract.js.map +1 -1
- package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js +3 -3
- package/dist/serde/implementations/adapters/mongodb-serde/mongodb-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/redis-serde/redis-serde.js +3 -3
- package/dist/serde/implementations/adapters/redis-serde/redis-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/sql-serde/sql-serde.js +3 -3
- package/dist/serde/implementations/adapters/sql-serde/sql-serde.js.map +1 -1
- package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js +3 -3
- package/dist/serde/implementations/adapters/super-json-serde-adapter/super-json-serde-adapter.js.map +1 -1
- package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.d.ts +2 -2
- package/dist/serde/implementations/test-utilities/flexible-serde-adapter.test-suite.js +1 -1
- package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.d.ts +2 -2
- package/dist/serde/implementations/test-utilities/flexible-serde.test-suite.js +1 -1
- package/dist/utilities/classes/key-prefixer/_module.d.ts +0 -1
- package/dist/utilities/classes/key-prefixer/_module.js +0 -1
- package/dist/utilities/classes/key-prefixer/_module.js.map +1 -1
- package/dist/utilities/classes/key-prefixer/key-prefixer.d.ts +2 -11
- package/dist/utilities/classes/key-prefixer/key-prefixer.js +4 -46
- package/dist/utilities/classes/key-prefixer/key-prefixer.js.map +1 -1
- package/dist/utilities/errors.d.ts +2 -0
- package/dist/utilities/errors.js +2 -0
- package/dist/utilities/errors.js.map +1 -1
- package/package.json +3 -4
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.d.ts +0 -15
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js +0 -50
- package/dist/async/utilities/lazy-promise/lazy-promise-event-bus.js.map +0 -1
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.d.ts +0 -23
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js +0 -44
- package/dist/async/utilities/lazy-promise/lazy-promise-listener.contract.js.map +0 -1
- package/dist/utilities/classes/key-prefixer/key-prefixer.contract.d.ts +0 -28
- package/dist/utilities/classes/key-prefixer/key-prefixer.contract.js +0 -5
- 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
|
|
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
|
|
26
|
-
let eventBusB;
|
|
25
|
+
let eventBus;
|
|
27
26
|
beforeEach(async () => {
|
|
28
|
-
|
|
29
|
-
eventBusA = eventBus;
|
|
30
|
-
eventBusB = eventBus.withGroup("b");
|
|
27
|
+
eventBus = await createEventBus();
|
|
31
28
|
});
|
|
32
|
-
describe("
|
|
33
|
-
describe("
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
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
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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("
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
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
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
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
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
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
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
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
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
}
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
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
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
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
|
-
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
449
|
-
|
|
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
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
}
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
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
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
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
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
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
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
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("
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
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
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
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
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
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
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
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
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
|
|
841
|
-
|
|
842
|
-
|
|
843
|
-
|
|
844
|
-
|
|
845
|
-
|
|
846
|
-
|
|
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
|
-
|
|
866
|
-
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
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
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
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
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
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
|
-
|
|
923
|
-
|
|
924
|
-
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
}
|
|
931
|
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
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
|
-
|
|
942
|
-
|
|
943
|
-
|
|
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
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
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
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
}
|
|
1014
|
-
|
|
1015
|
-
|
|
1016
|
-
|
|
1017
|
-
|
|
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
|
-
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
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
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
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
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
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
|
-
|
|
1111
|
-
|
|
1112
|
-
|
|
1113
|
-
|
|
1114
|
-
|
|
1115
|
-
|
|
1116
|
-
|
|
1117
|
-
}
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
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
|
-
|
|
1129
|
-
|
|
1130
|
-
|
|
1131
|
-
|
|
1132
|
-
|
|
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
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
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
|
-
|
|
1147
|
-
|
|
1148
|
-
|
|
1149
|
-
|
|
1150
|
-
|
|
1151
|
-
|
|
1152
|
-
|
|
1153
|
-
|
|
1154
|
-
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
1158
|
-
|
|
1159
|
-
|
|
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("
|
|
1164
|
-
|
|
1165
|
-
|
|
1166
|
-
|
|
1167
|
-
|
|
1168
|
-
|
|
1169
|
-
|
|
1170
|
-
|
|
1171
|
-
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
|
|
1175
|
-
|
|
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
|
-
|
|
1196
|
-
|
|
1197
|
-
|
|
1198
|
-
|
|
1199
|
-
|
|
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
|
-
|
|
1221
|
-
|
|
1222
|
-
|
|
1223
|
-
|
|
1224
|
-
|
|
1225
|
-
|
|
1226
|
-
|
|
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
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
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
|
-
|
|
1300
|
-
|
|
1301
|
-
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
}
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
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
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
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
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1327
|
-
|
|
1328
|
-
|
|
1329
|
-
|
|
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
|
-
|
|
1336
|
-
|
|
1337
|
-
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
|
|
1341
|
-
|
|
1342
|
-
|
|
1343
|
-
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
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
|
-
|
|
1353
|
-
|
|
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
|
-
|
|
636
|
+
await eventBus.listenOnce(AddEvent, listener);
|
|
1359
637
|
expect(result).toBeNull();
|
|
1360
638
|
});
|
|
1361
|
-
|
|
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
|
-
|
|
681
|
+
await eventBus.listenOnce(AddEvent, listener);
|
|
1367
682
|
const event = new AddEvent({
|
|
1368
683
|
a: 1,
|
|
1369
684
|
b: 2,
|
|
1370
685
|
});
|
|
1371
|
-
await
|
|
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
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
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
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
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
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
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
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1424
|
-
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
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
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
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
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1447
|
-
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
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
|
-
|
|
1462
|
-
|
|
1463
|
-
|
|
1464
|
-
|
|
1465
|
-
|
|
1466
|
-
|
|
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
|
-
|
|
1471
|
-
|
|
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("
|
|
1484
|
-
let
|
|
1485
|
-
|
|
1486
|
-
|
|
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
|
-
|
|
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
|
|
816
|
+
await eventBus.dispatch(event);
|
|
1557
817
|
await LazyPromise.delay(TTL);
|
|
1558
|
-
expect(
|
|
1559
|
-
expect(
|
|
1560
|
-
expect(result_b).toBeNull();
|
|
818
|
+
expect(result).toEqual(event);
|
|
819
|
+
expect(result).toBeInstanceOf(AddEvent);
|
|
1561
820
|
});
|
|
1562
821
|
});
|
|
1563
822
|
}
|