import { Img } from "@html_builder/core/img";
import { ImgGroup } from "@html_builder/core/img_group";
import { defineMailModels } from "@mail/../tests/mail_test_helpers";
import { expect, test, describe } from "@odoo/hoot";
import { animationFrame, Deferred } from "@odoo/hoot-dom";
import { Component, xml } from "@odoo/owl";
import { mountWithCleanup, patchWithCleanup } from "@web/../tests/web_test_helpers";
describe.current.tags("desktop");
defineMailModels(); // meh
test("ImgGroup's inner Img components should not be blocked before src load", async () => {
const defs = {
img1: new Deferred(),
img2: new Deferred(),
img3: new Deferred(),
};
patchWithCleanup(Img.prototype, {
loadImage() {
const def = defs[this.props.class];
return Promise.all([super.loadImage(), def]);
},
});
class Container extends Component {
static components = { ImgGroup, Img };
static template = xml`
`;
static props = {};
setup() {
this.defs = defs;
}
}
await mountWithCleanup(Container);
for (const key in defs) {
expect("img").toHaveCount(0);
defs[key].resolve();
await animationFrame();
}
expect("img").toHaveCount(3);
});