Odoo18-Base/addons/website/static/tests/dashboard_tests.js
2025-03-10 11:12:23 +07:00

66 lines
2.1 KiB
JavaScript

odoo.define('website/static/tests/dashboard_tests', function (require) {
"use strict";
const ControlPanel = require('web.ControlPanel');
const Dashboard = require('website.backend.dashboard');
const testUtils = require("web.test_utils");
const { patch, unpatch } = require('web.utils');
const { createParent, nextTick, prepareTarget } = testUtils;
QUnit.module('Website Backend Dashboard', {
}, function () {
QUnit.test("mounted is called once for the dashboard's ControlPanel", async function (assert) {
// This test can be removed as soon as we don't mix legacy and owl layers anymore.
assert.expect(5);
patch(ControlPanel.prototype, 'test.ControlPanel', {
setup() {
this._super();
owl.onMounted(() => {
assert.step('mounted');
});
owl.onWillUnmount(() => {
assert.step('willUnmount');
})
},
});
const params = {
mockRPC: (route) => {
if (route === '/website/fetch_dashboard_data') {
return Promise.resolve({
dashboards: {
sales: { summary: {} },
},
groups: { system: true, website_designer: true },
websites: [
{id: 1, name: "My Website", domain: "", selected: true},
],
});
}
return this._super(...arguments);
},
};
const parent = await createParent(params);
const dashboard = new Dashboard(parent, {});
await dashboard.appendTo(document.createDocumentFragment());
assert.verifySteps([]);
dashboard.$el.appendTo(prepareTarget());
dashboard.on_attach_callback();
await nextTick();
assert.verifySteps(['mounted']);
dashboard.destroy();
assert.verifySteps(['willUnmount']);
unpatch(ControlPanel.prototype, 'test.ControlPanel');
});
});
});