import { Env } from "../src/component"; import { QWeb, UTILS } from "../src/qweb_core"; import "../src/qweb_directives"; import "../src/qweb_extensions"; export function nextMicroTick(): Promise { return Promise.resolve(); } export function nextTick(): Promise { return new Promise(resolve => setTimeout(resolve)); } export function makeTestFixture() { let fixture = document.createElement("div"); document.body.appendChild(fixture); return fixture; } export function normalize(str: string): string { return str.replace(/\s+/g, ""); } interface Deferred extends Promise { resolve(val?: any): void; reject(): void; } export function makeDeferred(): Deferred { let resolve, reject; let def = new Promise((_resolve, _reject) => { resolve = _resolve; reject = _reject; }); (def).resolve = resolve; (def).reject = reject; return def; } export function makeTestEnv(): Env { return { qweb: new QWeb() }; } let nextFrame = UTILS.nextFrame; export function patchNextFrame(f: Function): void { UTILS.nextFrame = (cb: () => void) => { setTimeout(() => f(cb)); }; } export function unpatchNextFrame(): void { UTILS.nextFrame = nextFrame; }