Odoo18-Base/addons/web/static/tests/webclient/actions/multi_company_action.test.js
2025-01-06 10:57:38 +07:00

97 lines
2.7 KiB
JavaScript

import { beforeEach, expect, test } from "@odoo/hoot";
import { cookie } from "@web/core/browser/cookie";
import { redirect } from "@web/core/utils/urls";
import {
defineModels,
fields,
getService,
makeServerError,
models,
mountWebClient,
onRpc,
patchWithCleanup,
serverState,
} from "@web/../tests/web_test_helpers";
import { animationFrame } from "@odoo/hoot-dom";
import { browser } from "@web/core/browser/browser";
class Partner extends models.Model {
_name = "res.partner";
name = fields.Char();
_records = [{ id: 1, name: "First record" }];
_views = {
form: `
<form>
<group>
<field name="display_name"/>
</group>
</form>
`,
search: `<search></search>`,
};
}
defineModels([Partner]);
beforeEach(() => {
serverState.companies = [
{ id: 1, name: "Company 1", sequence: 1, parent_id: false, child_ids: [] },
{ id: 2, name: "Company 2", sequence: 2, parent_id: false, child_ids: [] },
{ id: 3, name: "Company 3", sequence: 3, parent_id: false, child_ids: [] },
];
patchWithCleanup(browser.location, {
reload() {
expect.step("reload");
},
});
patchWithCleanup(browser.location, {
origin: "http://example.com",
});
});
test("open record withtout the correct company (load state)", async () => {
cookie.set("cids", "1");
onRpc("web_read", () => {
throw makeServerError({
type: "AccessError",
message: "Wrong Company",
context: { suggested_company: { id: 2, display_name: "Company 2" } },
});
});
redirect("/odoo/res.partner/1");
await mountWebClient();
expect(cookie.get("cids")).toBe("1-2");
expect.verifySteps(["reload"]);
expect(browser.location.href).toBe("http://example.com/odoo/res.partner/1", {
message: "url did not change",
});
});
test("open record withtout the correct company (doAction)", async () => {
cookie.set("cids", "1");
onRpc("web_read", () => {
throw makeServerError({
type: "AccessError",
message: "Wrong Company",
context: { suggested_company: { id: 2, display_name: "Company 2" } },
});
});
await mountWebClient();
getService("action").doAction({
type: "ir.actions.act_window",
res_id: 1,
res_model: "res.partner",
views: [[false, "form"]],
});
await animationFrame();
expect(cookie.get("cids")).toBe("1-2");
expect.verifySteps(["reload"]);
expect(browser.location.href).toBe("http://example.com/odoo/res.partner/1", {
message: "url should contain the information of the doAction",
});
});