合并企业版代码(未测试,先提交到测试分支)
This commit is contained in:
84
web_enterprise/static/tests/mobile/burger_menu_tests.js
Normal file
84
web_enterprise/static/tests/mobile/burger_menu_tests.js
Normal file
@@ -0,0 +1,84 @@
|
||||
/** @odoo-module **/
|
||||
import { click, legacyExtraNextTick } from "@web/../tests/helpers/utils";
|
||||
import { getActionManagerServerData } from "@web/../tests/webclient/helpers";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { createEnterpriseWebClient } from "@web_enterprise/../tests/helpers";
|
||||
import { EnterpriseBurgerMenu } from "@web_enterprise/webclient/burger_menu/burger_menu";
|
||||
import { homeMenuService } from "@web_enterprise/webclient/home_menu/home_menu_service";
|
||||
import { companyService } from "@web/webclient/company_service";
|
||||
import { ormService } from "@web/core/orm_service";
|
||||
import { enterpriseSubscriptionService } from "@web_enterprise/webclient/home_menu/enterprise_subscription_service";
|
||||
|
||||
/**
|
||||
* Note: The asserts are all based on document.body (instead of getFixture() by example) because
|
||||
* the burger menu is porteled into the dom and is not part of the qunit fixture.
|
||||
*/
|
||||
|
||||
let serverData;
|
||||
|
||||
const serviceRegistry = registry.category("services");
|
||||
|
||||
QUnit.module("Burger Menu Enterprise", {
|
||||
beforeEach() {
|
||||
serverData = getActionManagerServerData();
|
||||
|
||||
serviceRegistry.add("enterprise_subscription", enterpriseSubscriptionService);
|
||||
serviceRegistry.add("orm", ormService);
|
||||
serviceRegistry.add("company", companyService);
|
||||
serviceRegistry.add("home_menu", homeMenuService);
|
||||
|
||||
registry.category("systray").add("burger_menu", {
|
||||
Component: EnterpriseBurgerMenu,
|
||||
});
|
||||
},
|
||||
});
|
||||
|
||||
QUnit.test("Burger Menu on home menu", async (assert) => {
|
||||
assert.expect(5);
|
||||
|
||||
await createEnterpriseWebClient({ serverData });
|
||||
assert.containsNone(document.body, ".o_burger_menu");
|
||||
assert.isVisible(document.body.querySelector(".o_home_menu"));
|
||||
|
||||
await click(document.body, ".o_mobile_menu_toggle");
|
||||
assert.containsOnce(document.body, ".o_burger_menu");
|
||||
assert.containsOnce(document.body, ".o_user_menu_mobile");
|
||||
await click(document.body, ".o_burger_menu_close");
|
||||
assert.containsNone(document.body, ".o_burger_menu");
|
||||
});
|
||||
|
||||
QUnit.test("Burger Menu on home menu over an App", async (assert) => {
|
||||
assert.expect(5);
|
||||
|
||||
serverData.menus[1].children = [99];
|
||||
serverData.menus[99] = {
|
||||
id: 99,
|
||||
children: [],
|
||||
name: "SubMenu",
|
||||
appID: 1,
|
||||
actionID: 1002,
|
||||
xmlid: "",
|
||||
webIconData: undefined,
|
||||
webIcon: false,
|
||||
};
|
||||
|
||||
await createEnterpriseWebClient({ serverData });
|
||||
await click(document.body, ".o_app:first-of-type");
|
||||
await legacyExtraNextTick();
|
||||
await click(document.body, ".o_menu_toggle");
|
||||
await legacyExtraNextTick();
|
||||
|
||||
assert.containsNone(document.body, ".o_burger_menu");
|
||||
assert.isVisible(document.body.querySelector(".o_home_menu"));
|
||||
|
||||
await click(document.body, ".o_mobile_menu_toggle");
|
||||
assert.containsOnce(document.body, ".o_burger_menu");
|
||||
assert.containsNone(
|
||||
document.body,
|
||||
".o_burger_menu nav.o_burger_menu_content li"
|
||||
);
|
||||
assert.doesNotHaveClass(
|
||||
document.body.querySelector(".o_burger_menu_content"),
|
||||
"o_burger_menu_dark"
|
||||
);
|
||||
});
|
||||
185
web_enterprise/static/tests/mobile/pivot_view_tests.js
Normal file
185
web_enterprise/static/tests/mobile/pivot_view_tests.js
Normal file
@@ -0,0 +1,185 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { dialogService } from "@web/core/dialog/dialog_service";
|
||||
import { registry } from "@web/core/registry";
|
||||
import {
|
||||
makeFakeLocalizationService,
|
||||
makeFakeUserService,
|
||||
} from "@web/../tests/helpers/mock_services";
|
||||
import { getFixture, patchWithCleanup } from "@web/../tests/helpers/utils";
|
||||
import {
|
||||
setupControlPanelFavoriteMenuRegistry,
|
||||
setupControlPanelServiceRegistry,
|
||||
} from "@web/../tests/search/helpers";
|
||||
import { makeView } from "@web/../tests/views/helpers";
|
||||
import { browser } from "@web/core/browser/browser";
|
||||
|
||||
const serviceRegistry = registry.category("services");
|
||||
|
||||
let serverData;
|
||||
let target;
|
||||
QUnit.module("Views", (hooks) => {
|
||||
hooks.beforeEach(() => {
|
||||
target = getFixture();
|
||||
serverData = {
|
||||
models: {
|
||||
partner: {
|
||||
fields: {
|
||||
foo: {
|
||||
string: "Foo",
|
||||
type: "integer",
|
||||
searchable: true,
|
||||
group_operator: "sum",
|
||||
},
|
||||
bar: { string: "bar", type: "boolean", store: true, sortable: true },
|
||||
date: { string: "Date", type: "date", store: true, sortable: true },
|
||||
product_id: {
|
||||
string: "Product",
|
||||
type: "many2one",
|
||||
relation: "product",
|
||||
store: true,
|
||||
sortable: true,
|
||||
},
|
||||
other_product_id: {
|
||||
string: "Other Product",
|
||||
type: "many2one",
|
||||
relation: "product",
|
||||
store: true,
|
||||
sortable: true,
|
||||
},
|
||||
non_stored_m2o: {
|
||||
string: "Non Stored M2O",
|
||||
type: "many2one",
|
||||
relation: "product",
|
||||
},
|
||||
customer: {
|
||||
string: "Customer",
|
||||
type: "many2one",
|
||||
relation: "customer",
|
||||
store: true,
|
||||
sortable: true,
|
||||
},
|
||||
computed_field: {
|
||||
string: "Computed and not stored",
|
||||
type: "integer",
|
||||
compute: true,
|
||||
group_operator: "sum",
|
||||
},
|
||||
company_type: {
|
||||
string: "Company Type",
|
||||
type: "selection",
|
||||
selection: [
|
||||
["company", "Company"],
|
||||
["individual", "individual"],
|
||||
],
|
||||
searchable: true,
|
||||
sortable: true,
|
||||
store: true,
|
||||
},
|
||||
},
|
||||
records: [
|
||||
{
|
||||
id: 1,
|
||||
foo: 12,
|
||||
bar: true,
|
||||
date: "2016-12-14",
|
||||
product_id: 37,
|
||||
customer: 1,
|
||||
computed_field: 19,
|
||||
company_type: "company",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
foo: 1,
|
||||
bar: true,
|
||||
date: "2016-10-26",
|
||||
product_id: 41,
|
||||
customer: 2,
|
||||
computed_field: 23,
|
||||
company_type: "individual",
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
foo: 17,
|
||||
bar: true,
|
||||
date: "2016-12-15",
|
||||
product_id: 41,
|
||||
customer: 2,
|
||||
computed_field: 26,
|
||||
company_type: "company",
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
foo: 2,
|
||||
bar: false,
|
||||
date: "2016-04-11",
|
||||
product_id: 41,
|
||||
customer: 1,
|
||||
computed_field: 19,
|
||||
company_type: "individual",
|
||||
},
|
||||
],
|
||||
},
|
||||
product: {
|
||||
fields: {
|
||||
name: { string: "Product Name", type: "char" },
|
||||
},
|
||||
records: [
|
||||
{
|
||||
id: 37,
|
||||
display_name: "xphone",
|
||||
},
|
||||
{
|
||||
id: 41,
|
||||
display_name: "xpad",
|
||||
},
|
||||
],
|
||||
},
|
||||
customer: {
|
||||
fields: {
|
||||
name: { string: "Customer Name", type: "char" },
|
||||
},
|
||||
records: [
|
||||
{
|
||||
id: 1,
|
||||
display_name: "First",
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
display_name: "Second",
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
};
|
||||
setupControlPanelFavoriteMenuRegistry();
|
||||
setupControlPanelServiceRegistry();
|
||||
serviceRegistry.add("dialog", dialogService);
|
||||
serviceRegistry.add("localization", makeFakeLocalizationService());
|
||||
serviceRegistry.add("user", makeFakeUserService());
|
||||
patchWithCleanup(browser, { setTimeout: (fn) => fn() });
|
||||
});
|
||||
|
||||
QUnit.module("PivotView");
|
||||
|
||||
QUnit.test("simple pivot rendering", async function (assert) {
|
||||
assert.expect(2);
|
||||
|
||||
await makeView({
|
||||
type: "pivot",
|
||||
resModel: "partner",
|
||||
serverData,
|
||||
arch: `
|
||||
<pivot string="Partners">
|
||||
<field name="foo" type="measure"/>
|
||||
</pivot>`,
|
||||
});
|
||||
|
||||
assert.hasClass(target.querySelector(".o_pivot_view"), "o_view_controller");
|
||||
assert.containsOnce(
|
||||
target,
|
||||
"td.o_pivot_cell_value:contains(32)",
|
||||
"should contain a pivot cell with the sum of all records"
|
||||
);
|
||||
});
|
||||
});
|
||||
53
web_enterprise/static/tests/mobile/webclient_mobile_tests.js
Normal file
53
web_enterprise/static/tests/mobile/webclient_mobile_tests.js
Normal file
@@ -0,0 +1,53 @@
|
||||
/** @odoo-module **/
|
||||
|
||||
import { getActionManagerServerData, doAction } from "@web/../tests/webclient/helpers";
|
||||
import { homeMenuService } from "@web_enterprise/webclient/home_menu/home_menu_service";
|
||||
import { ormService } from "@web/core/orm_service";
|
||||
import { enterpriseSubscriptionService } from "@web_enterprise/webclient/home_menu/enterprise_subscription_service";
|
||||
import { registry } from "@web/core/registry";
|
||||
import { createEnterpriseWebClient } from "../helpers";
|
||||
import { click, getFixture } from "@web/../tests/helpers/utils";
|
||||
|
||||
const serviceRegistry = registry.category("services");
|
||||
|
||||
QUnit.module("WebClient Mobile", (hooks) => {
|
||||
let serverData;
|
||||
hooks.beforeEach(() => {
|
||||
serverData = getActionManagerServerData();
|
||||
serviceRegistry.add("home_menu", homeMenuService);
|
||||
serviceRegistry.add("orm", ormService);
|
||||
serviceRegistry.add("enterprise_subscription", enterpriseSubscriptionService);
|
||||
});
|
||||
|
||||
QUnit.test("scroll position is kept", async (assert) => {
|
||||
// This test relies on the fact that the scrollable element in mobile
|
||||
// is view's root node.
|
||||
const record = serverData.models.partner.records[0];
|
||||
serverData.models.partner.records = [];
|
||||
|
||||
for (let i = 0; i < 80; i++) {
|
||||
const rec = Object.assign({}, record);
|
||||
rec.id = i + 1;
|
||||
rec.display_name = `Record ${rec.id}`;
|
||||
serverData.models.partner.records.push(rec);
|
||||
}
|
||||
|
||||
// force the html node to be scrollable element
|
||||
const target = getFixture();
|
||||
const webClient = await createEnterpriseWebClient({ serverData });
|
||||
|
||||
await doAction(webClient, 3); // partners in list/kanban
|
||||
assert.containsOnce(target, ".o_kanban_view");
|
||||
|
||||
target.querySelector(".o_kanban_view").scrollTo(0, 123);
|
||||
await click(target.querySelectorAll(".o_kanban_record")[20]);
|
||||
assert.containsOnce(target, ".o_form_view");
|
||||
assert.containsNone(target, ".o_kanban_view");
|
||||
|
||||
await click(target.querySelector(".o_control_panel .o_back_button"));
|
||||
assert.containsNone(target, ".o_form_view");
|
||||
assert.containsOnce(target, ".o_kanban_view");
|
||||
|
||||
assert.strictEqual(target.querySelector(".o_kanban_view").scrollTop, 123);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user