Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
sagemathinc
GitHub Repository: sagemathinc/cocalc
Path: blob/master/src/packages/util/async-utils.test.ts
1540 views
1
import { once } from "./async-utils";
2
import { EventEmitter } from "events";
3
4
describe("test once timing out due to close", () => {
5
class Obj extends EventEmitter {}
6
it("creates object, waits for event and has it work fine", async () => {
7
const obj = new Obj();
8
const w = once(obj, "ready");
9
obj.emit("ready");
10
await w;
11
});
12
13
it("creates object, waits for an event, but instead gets closed", async () => {
14
const obj = new Obj();
15
const w = once(obj, "ready");
16
obj.emit("closed");
17
try {
18
await w;
19
} catch (err) {
20
expect(`${err}`).toContain(`not emitted before "closed"`);
21
// timeout error, though it's really due to "close"
22
expect(err.code).toBe(408);
23
}
24
});
25
26
it("creates object and has it throw due to the timeout", async () => {
27
const obj = new Obj();
28
const w = once(obj, "ready", 50);
29
try {
30
await w;
31
} catch (err) {
32
expect(`${err}`).toContain("timeout");
33
// timeout error, obviously
34
expect(err.code).toBe(408);
35
}
36
});
37
});
38
39