Files
enterprise-addons/spreadsheet_edition/static/tests/pivot/new_pivot_side_panel.test.js
T

74 lines
2.8 KiB
JavaScript

import { defineSpreadsheetModels } from "@spreadsheet/../tests/helpers/data";
import { describe, expect, test } from "@odoo/hoot";
import { stores } from "@odoo/o-spreadsheet";
import { createSpreadsheetWithPivot } from "@spreadsheet/../tests/helpers/pivot";
import { contains, mountWithCleanup } from "@web/../tests/web_test_helpers";
import { Component, onMounted, onWillUnmount, xml } from "@odoo/owl";
import { NewPivotSidePanel } from "@spreadsheet_edition/bundle/pivot/side_panels/new_pivot_side_panel/new_pivot_side_panel";
const { useStoreProvider, ModelStore } = stores;
defineSpreadsheetModels();
describe.current.tags("desktop");
class Parent extends Component {
static template = xml/* xml */ `
<NewPivotSidePanel onCloseSidePanel="() => {}"/>
`;
static components = { NewPivotSidePanel };
static props = {
model: Object,
};
setup() {
const stores = useStoreProvider();
stores.inject(ModelStore, this.props.model);
onMounted(() => {
this.props.model.on("update", this, () => this.render(true));
stores.on("store-updated", this, this.render.bind(this, true));
});
onWillUnmount(() => {
this.props.model.off("update", this);
stores.off("store-updated", this);
});
}
}
async function openSidePanel(model, env) {
env.notifyUser = env.notifyUser || (() => {});
env.openSidePanel = env.openSidePanel || (() => {});
await mountWithCleanup(Parent, { env, props: { model } });
}
test("Open new pivot side panel", async function () {
const { env, model } = await createSpreadsheetWithPivot();
await openSidePanel(model, env);
expect(".o_new_pivot_side_panel").toHaveCount(1);
});
test("Cannot save without model", async function () {
const { env, model } = await createSpreadsheetWithPivot();
await openSidePanel(model, env);
expect(".primary").toHaveAttribute("disabled");
});
test("Save button is enabled when a model is selected", async function () {
const { env, model } = await createSpreadsheetWithPivot();
await openSidePanel(model, env);
await contains(".o_model_selector input").click();
await contains(".o_model_selector_partner").click();
expect(".primary").not.toHaveAttribute("disabled");
});
test("Create a new pivot", async function () {
const { env, model } = await createSpreadsheetWithPivot();
const sheetId = model.getters.getActiveSheetId();
expect(model.getters.getPivotIds()).toHaveLength(1);
await openSidePanel(model, env);
await contains(".o_model_selector input").click();
await contains(".o_model_selector_partner").click();
await contains(".o_new_pivot_side_panel .primary").click();
expect(model.getters.getPivotIds()).toHaveLength(2);
expect(model.getters.getActiveSheetId()).not.toBe(sheetId);
});