mirror of
https://github.com/odoo/owl.git
synced 2025-10-06 19:59:41 +07:00
[IMP] component/qweb: remove t-mounted directive
The t-mounted directive main goals can be achieved with hooks, in a better and more intuitive way. closes #308
This commit is contained in:
@@ -2959,71 +2959,6 @@ describe("widget and observable state", () => {
|
||||
});
|
||||
});
|
||||
|
||||
describe("t-mounted directive", () => {
|
||||
test("callback is not called when not in DOM", async () => {
|
||||
env.qweb.addTemplate("TestWidget", `<div><input t-mounted="f"/></div>`);
|
||||
class TestWidget extends Widget {
|
||||
f() {}
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
widget.f = jest.fn();
|
||||
await widget.mount(document.createElement("div"));
|
||||
expect(widget.f).toHaveBeenCalledTimes(0);
|
||||
});
|
||||
|
||||
test("callback is called when in DOM", async () => {
|
||||
env.qweb.addTemplate("TestWidget", `<div><input t-mounted="f"/></div>`);
|
||||
class TestWidget extends Widget {
|
||||
f() {}
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
widget.f = jest.fn();
|
||||
await widget.mount(fixture);
|
||||
expect(widget.f).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test("callback with args is called when in DOM", async () => {
|
||||
env.qweb.addTemplate("TestWidget", `<div><input t-mounted="f(2)"/></div>`);
|
||||
class TestWidget extends Widget {
|
||||
f() {}
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
widget.f = jest.fn();
|
||||
await widget.mount(fixture);
|
||||
expect(widget.f).toHaveBeenCalledTimes(1);
|
||||
expect(widget.f).toHaveBeenCalledWith(2);
|
||||
});
|
||||
|
||||
test("combined with a t-if", async () => {
|
||||
env.qweb.addTemplate("TestWidget", `<div><input t-if="state.flag" t-mounted="f"/></div>`);
|
||||
class TestWidget extends Widget {
|
||||
state = useState({ flag: false });
|
||||
f() {}
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
widget.f = jest.fn();
|
||||
await widget.mount(fixture);
|
||||
expect(widget.f).toHaveBeenCalledTimes(0);
|
||||
|
||||
widget.state.flag = true;
|
||||
await nextTick();
|
||||
expect(widget.f).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
|
||||
test("combined with a t-ref", async () => {
|
||||
env.qweb.addTemplate("TestWidget", `<div><input t-ref="input" t-mounted="f"/></div>`);
|
||||
class TestWidget extends Widget {
|
||||
input = useRef("input");
|
||||
f() {}
|
||||
}
|
||||
const widget = new TestWidget(env);
|
||||
widget.f = jest.fn();
|
||||
await widget.mount(fixture);
|
||||
expect(widget.input.el).toBeDefined();
|
||||
expect(widget.f).toHaveBeenCalledTimes(1);
|
||||
});
|
||||
});
|
||||
|
||||
describe("can deduce template from name", () => {
|
||||
test("can find template if name of component", async () => {
|
||||
class ABC extends Widget {}
|
||||
|
||||
Reference in New Issue
Block a user