Skip to content

Commit f5416f4

Browse files
committedMay 16, 2021
test(@okikio/emitter): ✅
add tests for the once method; fix bugs with other tests
1 parent 8bcbf61 commit f5416f4

File tree

1 file changed

+67
-5
lines changed

1 file changed

+67
-5
lines changed
 

‎packages/emitter/tests/test.ts

+67-5
Original file line numberDiff line numberDiff line change
@@ -268,7 +268,7 @@ describe("EventEmitter", () => {
268268
});
269269
});
270270

271-
/* describe("#once(event, function, context) & #emit(event, function, context)", () => {
271+
describe("#once(event, function, context) & #emit(event, function, context)", () => {
272272
test("listen for one event and one listener once; emit one event listener once", () => {
273273
let test: boolean | any = false;
274274
let obj = { bool: false };
@@ -358,8 +358,70 @@ describe("EventEmitter", () => {
358358
expect(counter).toBe(3);
359359
});
360360

361+
test("listen for multiple events (String format) once; emit only one event listener once", () => {
362+
let test = false;
363+
let obj = { bool: false };
364+
let counter = 0;
365+
let on: EventEmitter = emitter.once(
366+
"test test1 test2",
367+
function () {
368+
test = true;
369+
counter++;
370+
expect(this).toHaveProperty("bool");
371+
expect(this.bool).toBe(false);
372+
},
373+
obj
374+
);
375+
376+
on.emit("test2");
377+
expect(on).toBeInstanceOf(EventEmitter);
378+
expect(test).toEqual(true);
379+
380+
expect(on.get("test")).toBeInstanceOf(Event);
381+
expect(on.get("test").size).toBe(1);
382+
383+
expect(on.get("test1")).toBeInstanceOf(Event);
384+
expect(on.get("test1").size).toBe(1);
385+
386+
expect(on.get("test2")).toBeInstanceOf(Event);
387+
expect(on.get("test2").size).toBe(0);
388+
389+
expect(counter).toBe(1);
390+
});
391+
392+
test("listen for multiple event listeners (String format) on one event; emit only one event listener once; expect only the listener registed once to be removed", () => {
393+
let test = false;
394+
let obj = { bool: false };
395+
let counter = 0;
396+
let fn = function () {
397+
test = true;
398+
counter++;
399+
expect(this).toHaveProperty("bool");
400+
expect(this.bool).toBe(false);
401+
};
402+
let on: EventEmitter = emitter.once("test test1 test2", fn, obj);
403+
emitter.on("test2", fn, obj);
404+
405+
expect(on.get("test2").size).toBe(2);
406+
on.emit("test2");
407+
on.emit("test2");
408+
expect(on).toBeInstanceOf(EventEmitter);
409+
expect(test).toEqual(true);
410+
411+
expect(on.get("test")).toBeInstanceOf(Event);
412+
expect(on.get("test").size).toBe(1);
413+
414+
expect(on.get("test1")).toBeInstanceOf(Event);
415+
expect(on.get("test1").size).toBe(1);
416+
417+
expect(on.get("test2")).toBeInstanceOf(Event);
418+
expect(on.get("test2").size).toBe(1);
419+
420+
expect(counter).toBe(3);
421+
});
422+
361423
test("listen for multiple events (Object format) and multiple listeners once; emit multiples events once", () => {
362-
let test: boolean | any = false;
424+
let test: boolean | (boolean | number)[] = false;
363425
let obj = { bool: false };
364426
let counter = 0;
365427
let fn = function (i = 1) {
@@ -431,8 +493,8 @@ describe("EventEmitter", () => {
431493
expect(on.get("test3").size).toBe(1);
432494

433495
on.off("test");
434-
on.off("test1", on.get("test1").get(0).getCallback(), obj);
435-
on.off("test3", on.get("test3").get(0).getCallback(), obj);
496+
on.off("test1", on.get("test1").get(0).callback, obj);
497+
on.off("test3", on.get("test3").get(0).callback, obj);
436498

437499
on.emit("test test1 test3", 1, "true");
438500
on.emit("test test1 test3", 1, "true");
@@ -449,7 +511,7 @@ describe("EventEmitter", () => {
449511

450512
expect(counter).toBe(0);
451513
});
452-
}); */
514+
});
453515

454516
describe("#emit(event, function, context) & #on(event, function, context)", () => {
455517
test("listen for one event and one listener; emit one wrong event listener", () => {

0 commit comments

Comments
 (0)
Please sign in to comment.