@fedify/fedify
Version:
An ActivityPub server framework
95 lines (91 loc) • 3.35 kB
JavaScript
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