Files
enterprise-addons/web_studio/static/tests/studio_tests_context.js
T

364 lines
9.6 KiB
JavaScript

import { mailModels } from "@mail/../tests/mail_test_helpers";
import {
defineActions,
defineMenus,
defineModels,
fields,
models,
} from "@web/../tests/web_test_helpers";
import { handleDefaultStudioRoutes } from "./view_editor_tests_utils";
export function defineStudioEnvironment() {
class IrMenu extends models.Model {
_name = "ir.ui.menu";
name = fields.Char();
_records = [
{
id: 1,
name: "Partner 1",
},
{
id: 11,
name: "Partner 11",
},
{
id: 12,
name: "Partner 12",
},
];
_views = {
form: `
<form>
<field name="name"/>
</form>`,
};
}
class Partner extends models.Model {
_name = "partner";
name = fields.Char();
date = fields.Date();
pony_id = fields.Many2one({ relation: "pony" });
dog_id = fields.Many2one({ relation: "dog" });
unit_amount = fields.Float({
string: "Unit Amount",
aggregator: "sum",
});
_records = [
{
name: "Yop",
date: "2024-12-12",
pony_id: 1,
unit_amount: 2,
},
];
_views = {
form: `
<form>
<field name="name"/>
<field name="date"/>
<field name="pony_id"/>
</form>`,
"kanban,1": `
<kanban>
<field name="name"/>
<field name="date"/>
<field name="pony_id"/>
<templates>
<t t-name="card">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>`,
"list,2": `
<list>
<field name="name"/>
</list>`,
grid: `
<grid>
<field name="pony_id" type="row"/>
<field name="unit_amount" type="measure"/>
<field name="date" type="col">
<range name="week" string="Week" span="week" step="day"/>
</field>
<field name="unit_amount" type="measure" widget="float_time"/>
</grid>`,
pivot: `<pivot/>`,
search: `
<search>
<field name="name"/>
<field name="date"/>
</search>`,
};
}
class Pony extends models.Model {
_name = "pony";
name = fields.Char();
partner_ids = fields.One2many({ relation: "partner" });
size = fields.Selection({
selection: [["little", "Little"]],
});
_records = [
{ name: "Rainbow Dash", size: "little" },
{ name: "Applejack", size: "little" },
];
_views = {
form: `
<form>
<field name="name"/>
<field name="size"/>
<field name='partner_ids'>
<form>
<sheet>
<field name='display_name'/>
</sheet>
</form>
</field>
</form>`,
search: `
<search>
<filter name="apple" string="apple" domain="[('name', 'ilike', 'Apple')]" />
</search>`,
list: `
<list>
<field name="name"/>
</list>`,
};
}
class Dog extends models.Model {
_name = "dog";
name = fields.Char();
partner_ids = fields.One2many({ relation: "partner" });
_views = {
form: `
<form>
<field name="name"/>
<field name='partner_ids'>
<form>
<sheet>
<field name='display_name'/>
</sheet>
</form>
</field>
</form>`,
search: `
<search>
<field name="name"/>
</search>`,
list: `
<list sample="1">
<field name="name"/>
<field name="partner_ids" optional="hide"/>
</list>`,
kanban: `
<kanban sample="1">
<field name="name"/>
<templates>
<t t-name="card">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>`,
};
}
class Settings extends models.Model {
_name = "settings";
_views = {
list: `
<list sample="1">
<field name="display_name"/>
</list>`,
};
}
class BaseAutomation extends models.Model {
_name = "base.automation";
name = fields.Char();
_views = {
list: `
<list>
<field name="name"/>
</list>`,
form: `
<form>
<field name="name"/>
</form>`,
kanban: `
<kanban>
<field name="name"/>
<templates>
<t t-name="card">
<div>
<field name="name"/>
</div>
</t>
</templates>
</kanban>`,
};
}
defineModels({ ...mailModels, Pony, Partner, Dog, Settings, BaseAutomation, IrMenu });
defineActions([
{
id: 1,
name: "partner Action",
res_model: "partner",
type: "ir.actions.act_window",
xml_id: "partner_action_1",
view_mode: "kanban",
views: [
[1, "kanban"],
[2, "list"],
[false, "grid"],
[false, "pivot"],
[false, "form"],
[false, "search"],
],
group_ids: [],
},
{
id: 11,
name: "partner Action (list first)",
res_model: "partner",
type: "ir.actions.act_window",
xml_id: "partner_action_11",
views: [
[2, "list"],
[1, "kanban"],
[false, "grid"],
[false, "search"],
[false, "form"],
],
group_ids: [],
context: {
active_id: 1,
},
},
{
id: 2,
name: "Pony Action",
res_model: "pony",
type: "ir.actions.act_window",
xml_id: "pony_action_1",
context: "{'default_name': 'foo'}",
views: [
[false, "list"],
[false, "search"],
[false, "form"],
],
group_ids: [],
},
{
id: 3,
name: "Dog Action",
res_model: "dog",
type: "ir.actions.act_window",
xml_id: "dog_action_1",
views: [
[false, "list"],
[false, "kanban"],
[false, "search"],
[false, "form"],
],
group_ids: [],
},
{
id: 4,
name: "Settings",
res_model: "settings",
type: "ir.actions.act_window",
xml_id: "settings_action_1",
views: [
[false, "list"],
[false, "search"],
],
group_ids: [],
},
]);
defineMenus(
[
{
id: 1,
children: [
{
id: 11,
name: "Partners 11",
appID: 1,
actionID: 1,
xmlid: "menu_11",
},
{
id: 12,
name: "Partners 12",
appID: 1,
actionID: 11,
xmlid: "menu_12",
},
],
name: "Partners 1",
appID: 1,
actionID: 1,
xmlid: "app_1",
},
{
id: 2,
name: "Ponies",
appID: 2,
actionID: 2,
xmlid: "app_2",
webIcon: "fa fa-diamond,#FFFFFF,#C6572A",
},
{
id: 3,
name: "Dogs",
appID: 3,
actionID: 3,
xmlid: "app_3",
},
{
id: 4,
name: "Settings",
appID: 4,
actionID: 4,
xmlid: "app_4",
},
],
{ mode: "replace" }
);
handleDefaultStudioRoutes();
}