import { App, Component, xml } from "../../src"; import { status } from "../../src/component/status"; import { makeTestFixture, snapshotEverything, nextTick, elem } from "../helpers"; let fixture: HTMLElement; snapshotEverything(); beforeEach(() => { fixture = makeTestFixture(); }); describe("app", () => { test("destroy remove the widget from the DOM", async () => { class SomeComponent extends Component { static template = xml`
`; } const app = new App(SomeComponent); const comp = await app.mount(fixture); const el = elem(comp); expect(document.contains(el)).toBe(true); app.destroy(); expect(document.contains(el)).toBe(false); expect(status(comp)).toBe("destroyed"); }); test("App supports env with getters/setters", async () => { let someVal = "maggot"; const services: any = { serv1: "" }; const env = { get someVal() { return someVal; }, services, }; class SomeComponent extends Component { static template = xml`
`; } const app = new App(SomeComponent, { env }); const comp = await app.mount(fixture); expect(fixture.innerHTML).toBe("
maggot serv1
"); someVal = "brain"; services.serv2 = ""; comp.render(); await nextTick(); expect(fixture.innerHTML).toBe("
brain serv1,serv2
"); }); test("can configure an app with props", async () => { class SomeComponent extends Component { static template = xml`
`; } const app = new App(SomeComponent, { props: { value: 333 } }); await app.mount(fixture); expect(fixture.innerHTML).toBe("
333
"); }); });