Files
owl/tests/app/app.test.ts
T

63 lines
1.7 KiB
TypeScript
Raw Normal View History

2021-12-20 16:19:07 +01:00
import { App, Component, xml } from "../../src";
2020-11-26 16:45:25 +01:00
import { status } from "../../src/component/status";
2021-12-20 13:54:52 +01:00
import { makeTestFixture, snapshotEverything, nextTick, elem } from "../helpers";
2020-11-26 16:45:25 +01:00
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`<div/>`;
}
const app = new App(SomeComponent);
const comp = await app.mount(fixture);
2021-12-20 13:54:52 +01:00
const el = elem(comp);
2020-11-26 16:45:25 +01:00
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`<div><t t-esc="env.someVal" /> <t t-esc="Object.keys(env.services)" /></div>`;
}
2021-12-20 17:32:32 +01:00
const app = new App(SomeComponent, { env });
const comp = await app.mount(fixture);
expect(fixture.innerHTML).toBe("<div>maggot serv1</div>");
someVal = "brain";
services.serv2 = "";
comp.render();
await nextTick();
expect(fixture.innerHTML).toBe("<div>brain serv1,serv2</div>");
});
2021-12-20 17:32:32 +01:00
test("can configure an app with props", async () => {
class SomeComponent extends Component {
static template = xml`<div t-esc="props.value"/>`;
}
const app = new App(SomeComponent, { props: { value: 333 } });
await app.mount(fixture);
expect(fixture.innerHTML).toBe("<div>333</div>");
});
2020-11-26 16:45:25 +01:00
});