/** * We can only make one test per file, since the debug tool modify in place * the owl object in a way that is difficult to undo. */ import { debugOwl } from "../../tools/debug"; import * as owl from "../../src/index"; import { Component, Env } from "../../src/component/component"; import { xml } from "../../src/tags"; import { makeTestFixture, makeTestEnv } from "../helpers"; let fixture: HTMLElement = makeTestFixture(); let env: Env = makeTestEnv(); Component.env = env; debugOwl(owl, { logScheduler: true }); test("log a specific message for render method calls if component is not mounted", async () => { const steps: string[] = []; const log = console.log; console.log = arg => steps.push(arg); class Parent extends Component { static template = xml`
`; state = owl.hooks.useState({ value: 1 }); } const parent = new Parent(null, {}); await parent.mount(fixture); parent.unmount(); parent.state.value = 2; expect(steps).toEqual([ "[OWL_DEBUG] Parent constructor, props={}", "[OWL_DEBUG] Parent mount", "[OWL_DEBUG] Parent willStart", "[OWL_DEBUG] scheduler: start running tasks queue", "[OWL_DEBUG] Parent rendering template", "[OWL_DEBUG] Parent mounted", "[OWL_DEBUG] scheduler: stop running tasks queue", "[OWL_DEBUG] Parent willUnmount", "[OWL_DEBUG] Parent render (warning: component is not mounted, this render has no effect)" ]); console.log = log; });