67 lines
2.3 KiB
JavaScript
67 lines
2.3 KiB
JavaScript
import { describe, before, expect, test } from "@odoo/hoot";
|
|
import { registries } from "@odoo/o-spreadsheet";
|
|
import { mailModels } from "@mail/../tests/mail_test_helpers";
|
|
import { defineModels } from "@web/../tests/web_test_helpers";
|
|
|
|
import { addFieldSync, createSaleOrderSpreadsheetModel } from "./helpers/commands";
|
|
import { addSpreadsheetFieldSyncExtensionWithCleanUp } from "../src/bundle/field_sync/field_sync_extension_hook";
|
|
import { getFieldSync } from "./helpers/getters";
|
|
import { defineSpreadsheetSaleModels } from "./helpers/data";
|
|
|
|
import { doMenuAction, getActionMenu } from "@spreadsheet/../tests/helpers/ui";
|
|
import { selectCell } from "@spreadsheet/../tests/helpers/commands";
|
|
|
|
const { cellMenuRegistry } = registries;
|
|
|
|
describe.current.tags("headless");
|
|
|
|
defineModels(mailModels);
|
|
defineSpreadsheetSaleModels();
|
|
|
|
before(() => {
|
|
addSpreadsheetFieldSyncExtensionWithCleanUp();
|
|
});
|
|
|
|
test("add a field sync at the selected cell", async () => {
|
|
const { model } = await createSaleOrderSpreadsheetModel();
|
|
const env = {
|
|
...model.config.custom.env,
|
|
model,
|
|
openSidePanel(tag) {
|
|
expect.step(tag);
|
|
},
|
|
};
|
|
selectCell(model, "B2");
|
|
await doMenuAction(cellMenuRegistry, ["add_field_sync"], env);
|
|
const fieldSync = getFieldSync(model, "B2");
|
|
expect(fieldSync).toEqual({
|
|
listId: model.getters.getMainSaleOrderLineList().id,
|
|
indexInList: 0,
|
|
fieldName: "product_uom_qty",
|
|
});
|
|
expect.verifySteps(["FieldSyncSidePanel"]);
|
|
});
|
|
|
|
test("delete a field sync at the selected cell", async () => {
|
|
const { model } = await createSaleOrderSpreadsheetModel();
|
|
addFieldSync(model, "B2", "product_uom_qty", 0);
|
|
const env = {
|
|
...model.config.custom.env,
|
|
model,
|
|
};
|
|
selectCell(model, "B2");
|
|
await doMenuAction(cellMenuRegistry, ["delete_field_syncs"], env);
|
|
expect(getFieldSync(model, "B2")).toBe(undefined);
|
|
});
|
|
|
|
test("delete is not visible if there's nothing to delete", async () => {
|
|
const { model } = await createSaleOrderSpreadsheetModel();
|
|
const env = {
|
|
...model.config.custom.env,
|
|
model,
|
|
};
|
|
selectCell(model, "B2");
|
|
const menu = getActionMenu(cellMenuRegistry, ["delete_field_syncs"], env);
|
|
expect(await menu.isVisible(env)).toBe(false);
|
|
});
|