171 lines
6.6 KiB
JavaScript
171 lines
6.6 KiB
JavaScript
|
/** @odoo-module */
|
||
|
|
||
|
import { Model } from "@odoo/o-spreadsheet";
|
||
|
import { getBasicData } from "@spreadsheet/../tests/utils/data";
|
||
|
import { createBasicChart } from "@spreadsheet/../tests/utils/commands";
|
||
|
import { makeTestEnv } from "@web/../tests/helpers/mock_env";
|
||
|
import { registry } from "@web/core/registry";
|
||
|
import { menuService } from "@web/webclient/menus/menu_service";
|
||
|
import { actionService } from "@web/webclient/actions/action_service";
|
||
|
|
||
|
const chartId = "uuid1";
|
||
|
|
||
|
QUnit.module(
|
||
|
"spreadsheet > ir.ui.menu chart plugin",
|
||
|
{
|
||
|
beforeEach: function () {
|
||
|
this.serverData = {};
|
||
|
this.serverData.menus = {
|
||
|
root: {
|
||
|
id: "root",
|
||
|
children: [1, 2],
|
||
|
name: "root",
|
||
|
appID: "root",
|
||
|
},
|
||
|
1: {
|
||
|
id: 1,
|
||
|
children: [],
|
||
|
name: "test menu 1",
|
||
|
xmlid: "documents_spreadsheet.test.menu",
|
||
|
appID: 1,
|
||
|
actionID: "menuAction",
|
||
|
},
|
||
|
2: {
|
||
|
id: 2,
|
||
|
children: [],
|
||
|
name: "test menu 2",
|
||
|
xmlid: "documents_spreadsheet.test.menu2",
|
||
|
appID: 1,
|
||
|
actionID: "menuAction2",
|
||
|
},
|
||
|
};
|
||
|
this.serverData.actions = {
|
||
|
menuAction: {
|
||
|
id: 99,
|
||
|
xml_id: "ir.ui.menu",
|
||
|
name: "menuAction",
|
||
|
res_model: "ir.ui.menu",
|
||
|
type: "ir.actions.act_window",
|
||
|
views: [[false, "list"]],
|
||
|
},
|
||
|
menuAction2: {
|
||
|
id: 100,
|
||
|
xml_id: "ir.ui.menu",
|
||
|
name: "menuAction2",
|
||
|
res_model: "ir.ui.menu",
|
||
|
type: "ir.actions.act_window",
|
||
|
views: [[false, "list"]],
|
||
|
},
|
||
|
};
|
||
|
this.serverData.views = {};
|
||
|
this.serverData.views["ir.ui.menu,false,list"] = `<tree></tree>`;
|
||
|
this.serverData.views["ir.ui.menu,false,search"] = `<search></search>`;
|
||
|
this.serverData.models = {
|
||
|
...getBasicData(),
|
||
|
"ir.ui.menu": {
|
||
|
fields: {
|
||
|
name: { string: "Name", type: "char" },
|
||
|
action: { string: "Action", type: "char" },
|
||
|
groups_id: {
|
||
|
string: "Groups",
|
||
|
type: "many2many",
|
||
|
relation: "res.group",
|
||
|
},
|
||
|
},
|
||
|
records: [
|
||
|
{
|
||
|
id: 1,
|
||
|
name: "test menu 1",
|
||
|
action: "action1",
|
||
|
groups_id: [10],
|
||
|
},
|
||
|
{
|
||
|
id: 2,
|
||
|
name: "test menu 2",
|
||
|
action: "action2",
|
||
|
groups_id: [10],
|
||
|
},
|
||
|
],
|
||
|
},
|
||
|
"res.users": {
|
||
|
fields: {
|
||
|
name: { string: "Name", type: "char" },
|
||
|
groups_id: {
|
||
|
string: "Groups",
|
||
|
type: "many2many",
|
||
|
relation: "res.group",
|
||
|
},
|
||
|
},
|
||
|
records: [{ id: 1, name: "Raoul", groups_id: [10] }],
|
||
|
},
|
||
|
"ir.actions": {
|
||
|
fields: {
|
||
|
name: { string: "Name", type: "char" },
|
||
|
},
|
||
|
records: [{ id: 1 }],
|
||
|
},
|
||
|
"res.group": {
|
||
|
fields: { name: { string: "Name", type: "char" } },
|
||
|
records: [{ id: 10, name: "test group" }],
|
||
|
},
|
||
|
};
|
||
|
registry.category("services").add("menu", menuService).add("action", actionService);
|
||
|
},
|
||
|
},
|
||
|
|
||
|
() => {
|
||
|
QUnit.test(
|
||
|
"Links between charts and ir.menus are correctly imported/exported",
|
||
|
async function (assert) {
|
||
|
const env = await makeTestEnv({ serverData: this.serverData });
|
||
|
const model = new Model({}, { custom: { env } });
|
||
|
createBasicChart(model, chartId);
|
||
|
model.dispatch("LINK_ODOO_MENU_TO_CHART", {
|
||
|
chartId,
|
||
|
odooMenuId: 1,
|
||
|
});
|
||
|
const exportedData = model.exportData();
|
||
|
assert.equal(
|
||
|
exportedData.chartOdooMenusReferences[chartId],
|
||
|
1,
|
||
|
"Link to odoo menu is exported"
|
||
|
);
|
||
|
const importedModel = new Model(exportedData, { custom: { env } });
|
||
|
const chartMenu = importedModel.getters.getChartOdooMenu(chartId);
|
||
|
assert.equal(chartMenu.id, 1, "Link to odoo menu is imported");
|
||
|
}
|
||
|
);
|
||
|
|
||
|
QUnit.test("Can undo-redo a LINK_ODOO_MENU_TO_CHART", async function (assert) {
|
||
|
const env = await makeTestEnv({ serverData: this.serverData });
|
||
|
const model = new Model({}, { custom: { env } });
|
||
|
createBasicChart(model, chartId);
|
||
|
model.dispatch("LINK_ODOO_MENU_TO_CHART", {
|
||
|
chartId,
|
||
|
odooMenuId: 1,
|
||
|
});
|
||
|
assert.equal(model.getters.getChartOdooMenu(chartId).id, 1);
|
||
|
model.dispatch("REQUEST_UNDO");
|
||
|
assert.equal(model.getters.getChartOdooMenu(chartId), undefined);
|
||
|
model.dispatch("REQUEST_REDO");
|
||
|
assert.equal(model.getters.getChartOdooMenu(chartId).id, 1);
|
||
|
});
|
||
|
|
||
|
QUnit.test("link is removed when figure is deleted", async function (assert) {
|
||
|
const env = await makeTestEnv({ serverData: this.serverData });
|
||
|
const model = new Model({}, { custom: { env } });
|
||
|
createBasicChart(model, chartId);
|
||
|
model.dispatch("LINK_ODOO_MENU_TO_CHART", {
|
||
|
chartId,
|
||
|
odooMenuId: 1,
|
||
|
});
|
||
|
assert.equal(model.getters.getChartOdooMenu(chartId).id, 1);
|
||
|
model.dispatch("DELETE_FIGURE", {
|
||
|
sheetId: model.getters.getActiveSheetId(),
|
||
|
id: chartId,
|
||
|
});
|
||
|
assert.equal(model.getters.getChartOdooMenu(chartId), undefined);
|
||
|
});
|
||
|
}
|
||
|
);
|