@joist/di
Version:
Dependency Injection for Vanilla JS classes
41 lines • 1.47 kB
JavaScript
import { assert } from "chai";
import { INJECTOR_CTX } from "../context/injector.js";
import { ContextRequestEvent, } from "../context/protocol.js";
import { Injector } from "../injector.js";
import { DOMInjector } from "./dom-injector.js";
it("should respond to elements looking for an injector", () => {
const injector = new DOMInjector();
injector.attach(document.body);
const host = document.createElement("div");
document.body.append(host);
let parent = null;
host.dispatchEvent(new ContextRequestEvent(INJECTOR_CTX, (i) => {
parent = i;
}));
assert.equal(parent, injector);
injector.detach();
host.remove();
});
it("should send request looking for other injector contexts", () => {
const parent = new Injector();
const injector = new DOMInjector();
const cb = (e) => {
if (e.context === INJECTOR_CTX) {
e.callback(parent);
}
};
document.body.addEventListener("context-request", cb);
injector.attach(document.body);
assert.equal(injector.parent, parent);
injector.detach();
document.body.removeEventListener("context-request", cb);
});
it("should throw an error if attempting to attach an already attached DOMInjector", () => {
const injector = new DOMInjector();
const el = document.createElement("div");
injector.attach(el);
assert.throw(() => {
injector.attach(el);
});
});
//# sourceMappingURL=dom-injector.test.js.map