123 lines
5.6 KiB
JavaScript
123 lines
5.6 KiB
JavaScript
/** @odoo-module */
|
|
import { spreadsheetLinkMenuCellService } from "@spreadsheet/ir_ui_menu/index";
|
|
import { Model } from "@odoo/o-spreadsheet";
|
|
import { registry } from "@web/core/registry";
|
|
import { actionService } from "@web/webclient/actions/action_service";
|
|
import { menuService } from "@web/webclient/menus/menu_service";
|
|
import { makeTestEnv } from "@web/../tests/helpers/mock_env";
|
|
import { setCellContent } from "@spreadsheet/../tests/utils/commands";
|
|
import { getCell, getEvaluatedCell } from "@spreadsheet/../tests/utils/getters";
|
|
import { getMenuServerData } from "../menu_data_utils";
|
|
|
|
function beforeEach() {
|
|
registry
|
|
.category("services")
|
|
.add("menu", menuService)
|
|
.add("action", actionService)
|
|
.add("spreadsheetLinkMenuCell", spreadsheetLinkMenuCellService);
|
|
}
|
|
|
|
QUnit.module("spreadsheet > menu link cells", { beforeEach }, () => {
|
|
QUnit.test("ir.menu linked based on xml id", async function (assert) {
|
|
const env = await makeTestEnv({ serverData: getMenuServerData() });
|
|
const model = new Model({}, { custom: { env } });
|
|
setCellContent(model, "A1", "[label](odoo://ir_menu_xml_id/test_menu)");
|
|
const cell = getCell(model, "A1");
|
|
const evaluatedCell = getEvaluatedCell(model, "A1");
|
|
assert.equal(evaluatedCell.value, "label", "The value should be the menu name");
|
|
assert.equal(
|
|
cell.content,
|
|
"[label](odoo://ir_menu_xml_id/test_menu)",
|
|
"The content should be the complete markdown link"
|
|
);
|
|
assert.equal(evaluatedCell.link.label, "label", "The link label should be the menu name");
|
|
assert.equal(
|
|
evaluatedCell.link.url,
|
|
"odoo://ir_menu_xml_id/test_menu",
|
|
"The link url should reference the correct menu"
|
|
);
|
|
});
|
|
|
|
QUnit.test("ir.menu linked based on record id", async function (assert) {
|
|
const env = await makeTestEnv({ serverData: getMenuServerData() });
|
|
const model = new Model({}, { custom: { env } });
|
|
setCellContent(model, "A1", "[label](odoo://ir_menu_id/12)");
|
|
const cell = getCell(model, "A1");
|
|
const evaluatedCell = getEvaluatedCell(model, "A1");
|
|
assert.equal(evaluatedCell.value, "label", "The value should be the menu name");
|
|
assert.equal(
|
|
cell.content,
|
|
"[label](odoo://ir_menu_id/12)",
|
|
"The content should be the complete markdown link"
|
|
);
|
|
assert.equal(evaluatedCell.link.label, "label", "The link label should be the menu name");
|
|
assert.equal(
|
|
evaluatedCell.link.url,
|
|
"odoo://ir_menu_id/12",
|
|
"The link url should reference the correct menu"
|
|
);
|
|
});
|
|
|
|
QUnit.test("ir.menu linked based on xml id which does not exists", async function (assert) {
|
|
const env = await makeTestEnv({ serverData: getMenuServerData() });
|
|
const model = new Model({}, { custom: { env } });
|
|
setCellContent(model, "A1", "[label](odoo://ir_menu_xml_id/does_not_exists)");
|
|
assert.equal(
|
|
getCell(model, "A1").content,
|
|
"[label](odoo://ir_menu_xml_id/does_not_exists)"
|
|
);
|
|
assert.equal(getEvaluatedCell(model, "A1").value, "#LINK");
|
|
assert.equal(
|
|
getEvaluatedCell(model, "A1").error.message,
|
|
"Menu does_not_exists not found. You may not have the required access rights."
|
|
);
|
|
});
|
|
|
|
QUnit.test("ir.menu linked based on record id which does not exists", async function (assert) {
|
|
const env = await makeTestEnv({ serverData: getMenuServerData() });
|
|
const model = new Model({}, { custom: { env } });
|
|
setCellContent(model, "A1", "[label](odoo://ir_menu_id/9999)");
|
|
assert.equal(getCell(model, "A1").content, "[label](odoo://ir_menu_id/9999)");
|
|
assert.equal(getEvaluatedCell(model, "A1").value, "#LINK");
|
|
assert.equal(
|
|
getEvaluatedCell(model, "A1").error.message,
|
|
"Menu 9999 not found. You may not have the required access rights."
|
|
);
|
|
});
|
|
|
|
QUnit.test("Odoo link cells can be imported/exported", async function (assert) {
|
|
const env = await makeTestEnv({ serverData: getMenuServerData() });
|
|
const model = new Model({}, { custom: { env } });
|
|
setCellContent(model, "A1", "[label](odoo://ir_menu_id/12)");
|
|
let cell = getCell(model, "A1");
|
|
let evaluatedCell = getEvaluatedCell(model, "A1");
|
|
assert.equal(evaluatedCell.value, "label", "The value should be the menu name");
|
|
assert.equal(
|
|
cell.content,
|
|
"[label](odoo://ir_menu_id/12)",
|
|
"The content should be the complete markdown link"
|
|
);
|
|
assert.equal(evaluatedCell.link.label, "label", "The link label should be the menu name");
|
|
assert.equal(
|
|
evaluatedCell.link.url,
|
|
"odoo://ir_menu_id/12",
|
|
"The link url should reference the correct menu"
|
|
);
|
|
const model2 = new Model(model.exportData(), { custom: { env } });
|
|
cell = getCell(model2, "A1");
|
|
evaluatedCell = getEvaluatedCell(model, "A1");
|
|
assert.equal(evaluatedCell.value, "label", "The value should be the menu name");
|
|
assert.equal(
|
|
cell.content,
|
|
"[label](odoo://ir_menu_id/12)",
|
|
"The content should be the complete markdown link"
|
|
);
|
|
assert.equal(evaluatedCell.link.label, "label", "The link label should be the menu name");
|
|
assert.equal(
|
|
evaluatedCell.link.url,
|
|
"odoo://ir_menu_id/12",
|
|
"The link url should reference the correct menu"
|
|
);
|
|
});
|
|
});
|