@featurevisor/sdk
Version:
Featurevisor SDK for Node.js and the browser
42 lines (32 loc) • 1.23 kB
text/typescript
import { Emitter, EventDetails } from "./emitter";
describe("Emitter", () => {
let emitter: Emitter;
let handledDetails: EventDetails[] = [];
function handleDetails(details: EventDetails) {
handledDetails.push(details);
}
beforeEach(() => {
emitter = new Emitter();
handledDetails = [];
});
it("should add a listener for an event", function () {
const unsubscribe = emitter.on("datafile_set", handleDetails);
expect(emitter.listeners["datafile_set"]).toContain(handleDetails);
expect(emitter.listeners["datafile_changed"]).toBeUndefined();
expect(emitter.listeners["context_set"]).toBeUndefined();
expect(emitter.listeners["datafile_set"].length).toBe(1);
// trigger already subscribed event
emitter.trigger("datafile_set", { key: "value" });
expect(handledDetails.length).toBe(1);
expect(handledDetails[0]).toEqual({ key: "value" });
// trigger unsubscribed event
emitter.trigger("sticky_set", { key: "value2" });
expect(handledDetails.length).toBe(1);
// unsubscribe
unsubscribe();
expect(emitter.listeners["datafile_set"].length).toBe(0);
// clear all
emitter.clearAll();
expect(emitter.listeners).toEqual({});
});
});