UNPKG

@fedify/fedify

Version:

An ActivityPub server framework

95 lines (91 loc) 3.35 kB
import { Temporal } from "@js-temporal/polyfill"; import { URLPattern } from "urlpattern-polyfill"; globalThis.addEventListener = () => {}; import { assertEquals } from "../assert_equals-CTYbeopb.js"; import "../docloader-C8mmLN-Y.js"; import "../url-kTAI6_KP.js"; import "../multibase-DeCHcK8L.js"; import { Activity, Create, Invite, Offer, Update } from "../vocab-dDpPQ0fF.js"; import "../langstr-DbWheeIS.js"; import "../type-D2s5lmbZ.js"; import { InboxListenerSet } from "../inbox-AwdJVoMZ.js"; import { test } from "../testing-BZ0dJ4qn.js"; import "../assert_is_error-nrwA1GeT.js"; import { assertThrows } from "../assert_throws-Cn9C6Jur.js"; //#region federation/inbox.test.ts test("InboxListenerSet", () => { const listeners = new InboxListenerSet(); const activity = new Activity({}); const offer = new Offer({}); const invite = new Invite({}); const create = new Create({}); const update = new Update({}); assertEquals(listeners.dispatch(activity), null); assertEquals(listeners.dispatch(offer), null); assertEquals(listeners.dispatch(invite), null); assertEquals(listeners.dispatch(create), null); assertEquals(listeners.dispatch(update), null); const listenOffer = () => {}; listeners.add(Offer, listenOffer); assertEquals(listeners.dispatch(activity), null); assertEquals(listeners.dispatchWithClass(offer), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(offer), listenOffer); assertEquals(listeners.dispatchWithClass(invite), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(invite), listenOffer); assertEquals(listeners.dispatch(create), null); assertEquals(listeners.dispatch(update), null); const listenCreate = () => {}; listeners.add(Create, listenCreate); assertEquals(listeners.dispatch(activity), null); assertEquals(listeners.dispatch(offer), listenOffer); assertEquals(listeners.dispatchWithClass(offer), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(invite), listenOffer); assertEquals(listeners.dispatchWithClass(invite), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(create), listenCreate); assertEquals(listeners.dispatchWithClass(create), { class: Create, listener: listenCreate }); assertEquals(listeners.dispatch(update), null); const listenActivity = () => {}; listeners.add(Activity, listenActivity); assertEquals(listeners.dispatch(activity), listenActivity); assertEquals(listeners.dispatchWithClass(activity), { class: Activity, listener: listenActivity }); assertEquals(listeners.dispatch(offer), listenOffer); assertEquals(listeners.dispatchWithClass(offer), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(invite), listenOffer); assertEquals(listeners.dispatchWithClass(invite), { class: Offer, listener: listenOffer }); assertEquals(listeners.dispatch(create), listenCreate); assertEquals(listeners.dispatchWithClass(create), { class: Create, listener: listenCreate }); assertEquals(listeners.dispatch(update), listenActivity); assertEquals(listeners.dispatchWithClass(update), { class: Activity, listener: listenActivity }); assertThrows(() => listeners.add(Activity, listenActivity), TypeError, "Listener already set for this type."); }); //#endregion