summaryrefslogtreecommitdiff
path: root/cli/tests/workers_test.ts
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tests/workers_test.ts')
-rw-r--r--cli/tests/workers_test.ts47
1 files changed, 47 insertions, 0 deletions
diff --git a/cli/tests/workers_test.ts b/cli/tests/workers_test.ts
index 2c56a491c..bb00d67fd 100644
--- a/cli/tests/workers_test.ts
+++ b/cli/tests/workers_test.ts
@@ -184,3 +184,50 @@ Deno.test({
await promise;
},
});
+
+Deno.test({
+ name: "worker is event listener",
+ fn: async function (): Promise<void> {
+ let messageHandlersCalled = 0;
+ let errorHandlersCalled = 0;
+
+ const promise1 = createResolvable();
+ const promise2 = createResolvable();
+
+ const worker = new Worker("../tests/subdir/event_worker.js", {
+ type: "module",
+ });
+
+ worker.onmessage = (_e: Event): void => {
+ messageHandlersCalled++;
+ };
+ worker.addEventListener("message", (_e: Event) => {
+ messageHandlersCalled++;
+ });
+ worker.addEventListener("message", (_e: Event) => {
+ messageHandlersCalled++;
+ promise1.resolve();
+ });
+
+ worker.onerror = (e): void => {
+ errorHandlersCalled++;
+ e.preventDefault();
+ };
+ worker.addEventListener("error", (_e: Event) => {
+ errorHandlersCalled++;
+ });
+ worker.addEventListener("error", (_e: Event) => {
+ errorHandlersCalled++;
+ promise2.resolve();
+ });
+
+ worker.postMessage("ping");
+ await promise1;
+ assertEquals(messageHandlersCalled, 3);
+
+ worker.postMessage("boom");
+ await promise2;
+ assertEquals(errorHandlersCalled, 3);
+ worker.terminate();
+ },
+});