From 5063e2a1e5b4a06079ff338743cc96e6d12c81ec Mon Sep 17 00:00:00 2001 From: "Adrien Minne (adrm)" Date: Mon, 18 Sep 2023 15:43:38 +0200 Subject: [PATCH] [REF] spreadsheet: de-duplicate filter id in cmds The commands `ADD_GLOBAL_FILTER` and `EDIT_GLOBAL_FILTER` had the filter id once in cmd.id, and once in cmd.filter.id. This made it possible to send a command with 2 different ids, which can have arbitrary behaviour depending on the implementation details of the command. Changed it so we only use cmd.filter.id, and removed the cmd.id field. Also simplified the commands helpers for the tests. Task: 3502684 Part-of: odoo/odoo#135869 --- .../static/src/global_filters/index.js | 3 +- .../plugins/global_filters_core_plugin.js | 12 +- .../plugins/global_filters_ui_plugin.js | 12 +- .../global_filters_chart_test.js | 14 +- .../global_filters_model_test.js | 495 +++++++----------- .../static/tests/lists/list_plugin_test.js | 14 +- .../tests/pivots/model/pivot_plugin_test.js | 14 +- .../static/tests/utils/commands.js | 4 +- .../static/tests/utils/global_filter.js | 12 +- 9 files changed, 228 insertions(+), 352 deletions(-) diff --git a/addons/spreadsheet/static/src/global_filters/index.js b/addons/spreadsheet/static/src/global_filters/index.js index 940a44f6c2b..ca82a74ebe7 100644 --- a/addons/spreadsheet/static/src/global_filters/index.js +++ b/addons/spreadsheet/static/src/global_filters/index.js @@ -51,7 +51,7 @@ inverseCommandRegistry return [ { type: "REMOVE_GLOBAL_FILTER", - id: cmd.id, + id: cmd.filter.id, }, ]; }) @@ -59,7 +59,6 @@ inverseCommandRegistry return [ { type: "ADD_GLOBAL_FILTER", - id: cmd.id, filter: {}, }, ]; diff --git a/addons/spreadsheet/static/src/global_filters/plugins/global_filters_core_plugin.js b/addons/spreadsheet/static/src/global_filters/plugins/global_filters_core_plugin.js index cf799cdf1de..9ae7420312f 100644 --- a/addons/spreadsheet/static/src/global_filters/plugins/global_filters_core_plugin.js +++ b/addons/spreadsheet/static/src/global_filters/plugins/global_filters_core_plugin.js @@ -44,9 +44,9 @@ export class GlobalFiltersCorePlugin extends spreadsheet.CorePlugin { allowDispatch(cmd) { switch (cmd.type) { case "EDIT_GLOBAL_FILTER": - if (!this.getGlobalFilter(cmd.id)) { + if (!this.getGlobalFilter(cmd.filter.id)) { return CommandResult.FilterNotFound; - } else if (this._isDuplicatedLabel(cmd.id, cmd.filter.label)) { + } else if (this._isDuplicatedLabel(cmd.filter.id, cmd.filter.label)) { return CommandResult.DuplicatedFilterLabel; } return checkFiltersTypeValueCombination(cmd.filter.type, cmd.filter.defaultValue); @@ -56,7 +56,7 @@ export class GlobalFiltersCorePlugin extends spreadsheet.CorePlugin { } break; case "ADD_GLOBAL_FILTER": - if (this._isDuplicatedLabel(cmd.id, cmd.filter.label)) { + if (this._isDuplicatedLabel(cmd.filter.id, cmd.filter.label)) { return CommandResult.DuplicatedFilterLabel; } return checkFiltersTypeValueCombination(cmd.filter.type, cmd.filter.defaultValue); @@ -75,7 +75,7 @@ export class GlobalFiltersCorePlugin extends spreadsheet.CorePlugin { this.history.update("globalFilters", cmd.filter.id, cmd.filter); break; case "EDIT_GLOBAL_FILTER": - this._editGlobalFilter(cmd.id, cmd.filter); + this._editGlobalFilter(cmd.filter); break; case "REMOVE_GLOBAL_FILTER": this.history.update("globalFilters", cmd.id, undefined); @@ -169,10 +169,10 @@ export class GlobalFiltersCorePlugin extends spreadsheet.CorePlugin { * @param {string} id Id of the filter to update * @param {GlobalFilter} newFilter */ - _editGlobalFilter(id, newFilter) { + _editGlobalFilter(newFilter) { + const id = newFilter.id; const currentLabel = this.getGlobalFilter(id).label; const globalFilters = { ...this.globalFilters }; - newFilter.id = id; globalFilters[id] = newFilter; this.history.update("globalFilters", globalFilters); const newLabel = this.getGlobalFilter(id).label; diff --git a/addons/spreadsheet/static/src/global_filters/plugins/global_filters_ui_plugin.js b/addons/spreadsheet/static/src/global_filters/plugins/global_filters_ui_plugin.js index fac9218ade3..ba0cfea2be8 100644 --- a/addons/spreadsheet/static/src/global_filters/plugins/global_filters_ui_plugin.js +++ b/addons/spreadsheet/static/src/global_filters/plugins/global_filters_ui_plugin.js @@ -4,7 +4,7 @@ * @typedef {import("@spreadsheet/data_sources/metadata_repository").Field} Field * @typedef {import("./global_filters_core_plugin").GlobalFilter} GlobalFilter * @typedef {import("./global_filters_core_plugin").FieldMatching} FieldMatching - + */ import { _t } from "@web/core/l10n/translation"; @@ -86,12 +86,14 @@ export default class GlobalFiltersUIPlugin extends spreadsheet.UIPlugin { case "ADD_GLOBAL_FILTER": this.recordsDisplayName[cmd.filter.id] = cmd.filter.defaultValueDisplayNames; break; - case "EDIT_GLOBAL_FILTER": - if (this.values[cmd.id] && this.values[cmd.id].rangeType !== cmd.filter.rangeType) { - delete this.values[cmd.id]; + case "EDIT_GLOBAL_FILTER": { + const id = cmd.filter.id; + if (this.values[id] && this.values[id].rangeType !== cmd.filter.rangeType) { + delete this.values[id]; } - this.recordsDisplayName[cmd.filter.id] = cmd.filter.defaultValueDisplayNames; + this.recordsDisplayName[id] = cmd.filter.defaultValueDisplayNames; break; + } case "SET_GLOBAL_FILTER_VALUE": this.recordsDisplayName[cmd.id] = cmd.displayNames; if (!cmd.value) { diff --git a/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js b/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js index afe73a7f8a6..4eaf5c45842 100644 --- a/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js +++ b/addons/spreadsheet/static/tests/global_filters/global_filters_chart_test.js @@ -14,11 +14,7 @@ async function addChartGlobalFilter(model) { rangeType: "fixedPeriod", defaultValue: { yearOffset: -1 }, }; - await addGlobalFilter( - model, - { filter }, - { chart: { [chartId]: { chain: "date", type: "date" } } } - ); + await addGlobalFilter(model, filter, { chart: { [chartId]: { chain: "date", type: "date" } } }); } QUnit.module("spreadsheet > Global filters chart", {}, () => { @@ -56,11 +52,9 @@ QUnit.module("spreadsheet > Global filters chart", {}, () => { label: "Last Year", rangeType: "fixedPeriod", }; - await addGlobalFilter( - model, - { filter }, - { chart: { [chartId]: { chain: "date", type: "date" } } } - ); + await addGlobalFilter(model, filter, { + chart: { [chartId]: { chain: "date", type: "date" } }, + }); model.updateMode("dashboard"); let computedDomain = model.getters.getChartDataSource(chartId).getComputedDomain(); assert.deepEqual(computedDomain, []); diff --git a/addons/spreadsheet/static/tests/global_filters/global_filters_model_test.js b/addons/spreadsheet/static/tests/global_filters/global_filters_model_test.js index c383fa012af..d06822634e6 100644 --- a/addons/spreadsheet/static/tests/global_filters/global_filters_model_test.js +++ b/addons/spreadsheet/static/tests/global_filters/global_filters_model_test.js @@ -44,29 +44,23 @@ const { DateTime } = luxon; /** * @typedef {import("@spreadsheet/global_filters/plugins/global_filters_core_plugin").GlobalFilter} GlobalFilter * - * @typedef {Object} FilterPayload - * @property {GlobalFilter} filter */ -/** @type FilterPayload */ +/** @type GlobalFilter */ const LAST_YEAR_FILTER = { - filter: { - id: "42", - type: "date", - label: "Last Year", - rangeType: "fixedPeriod", - defaultValue: { yearOffset: -1 }, - }, + id: "42", + type: "date", + label: "Last Year", + rangeType: "fixedPeriod", + defaultValue: {yearOffset: -1}, }; /** @type FilterPayload */ const LAST_YEAR_LEGACY_FILTER = { - filter: { - id: "41", - type: "date", - rangeType: "fixedPeriod", - label: "Legacy Last Year", - defaultValue: { year: "last_year" }, - }, + id: "41", + type: "date", + rangeType: "fixedPeriod", + label: "Legacy Last Year", + defaultValue: { year: "last_year" }, }; const DEFAULT_FIELD_MATCHINGS = { @@ -119,13 +113,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { assert.expect(4); const { model } = await createSpreadsheetWithPivotAndList(); - const gfDef = { ...THIS_YEAR_GLOBAL_FILTER, id: 1 }; - let result = await editGlobalFilter(model, gfDef); + let result = await editGlobalFilter(model, { ...THIS_YEAR_GLOBAL_FILTER, id: 1 }); assert.deepEqual(result.reasons, [CommandResult.FilterNotFound]); - await addGlobalFilter(model, LAST_YEAR_FILTER); - const gf = model.getters.getGlobalFilters()[0]; - gfDef.id = gf.id; - result = await editGlobalFilter(model, gfDef); + await addGlobalFilter(model, { ...LAST_YEAR_FILTER, id: 1 }); + result = await editGlobalFilter(model, { ...THIS_YEAR_GLOBAL_FILTER, id: 1 }); assert.deepEqual(result, DispatchResult.Success); assert.equal(model.getters.getGlobalFilters().length, 1); assert.deepEqual(model.getters.getGlobalFilters()[0].defaultValue.yearOffset, 0); @@ -142,30 +133,28 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { assert.expect(6); const { model } = await createSpreadsheetWithPivotAndList(); - const filter = { ...THIS_YEAR_GLOBAL_FILTER.filter, label: "Hello" }; - await addGlobalFilter(model, { filter }); + const filter = { ...THIS_YEAR_GLOBAL_FILTER, label: "Hello" }; + await addGlobalFilter(model, filter); assert.equal(model.getters.getGlobalFilters().length, 1); // Add filter with same name - let result = await addGlobalFilter(model, { filter: { ...filter, id: "456" } }); + let result = await addGlobalFilter(model, { ...filter, id: "456" }); assert.deepEqual(result.reasons, [CommandResult.DuplicatedFilterLabel]); assert.equal(model.getters.getGlobalFilters().length, 1); // Edit to set same name as other filter - await addGlobalFilter(model, { - filter: { ...filter, id: "789", label: "Other name" }, - }); + await addGlobalFilter(model, { ...filter, id: "789", label: "Other name" }); assert.equal(model.getters.getGlobalFilters().length, 2); result = await editGlobalFilter(model, { - id: "789", - filter: { ...filter, label: "Hello" }, + ...filter, + label: "Other name", }); assert.deepEqual(result.reasons, [CommandResult.DuplicatedFilterLabel]); // Edit to set same name result = await editGlobalFilter(model, { - id: "789", - filter: { ...filter, label: "Other name" }, + ...filter, + label: "Hello", }); assert.deepEqual(result, DispatchResult.Success); }); @@ -173,31 +162,22 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { QUnit.test("Can name/rename filters with special characters", async function (assert) { assert.expect(5); const { model } = await createSpreadsheetWithPivot(); - const filter = Object.assign({}, THIS_YEAR_GLOBAL_FILTER.filter, { - label: "{my} We)ird. |*ab(el []", - }); - let result = model.dispatch("ADD_GLOBAL_FILTER", { filter }); + const filter = { ...THIS_YEAR_GLOBAL_FILTER, label: "{my} We)ird. |*ab(el []" }; + let result = await addGlobalFilter(model, filter); assert.deepEqual(result, DispatchResult.Success); assert.equal(model.getters.getGlobalFilters().length, 1); - const filterId = model.getters.getGlobalFilters()[0].id; - // Edit to set another name with special characters - result = model.dispatch("EDIT_PIVOT_FILTER", { - id: filterId, - filter: Object.assign({}, filter, { label: "+Othe^ we?rd name+$" }), - }); + result = await editGlobalFilter(model, { ...filter, label: "+Othe^ we?rd name+$" }); + assert.deepEqual(result, DispatchResult.Success); - result = model.dispatch("EDIT_PIVOT_FILTER", { - id: filterId, - filter: Object.assign({}, filter, { label: "normal name" }), - }); + result = await editGlobalFilter(model, { ...filter, label: "normal name" }); assert.deepEqual(result, DispatchResult.Success); - result = model.dispatch("EDIT_PIVOT_FILTER", { - id: filterId, - filter: Object.assign({}, filter, { label: "?ack +.* to {my} We)ird. |*ab(el []" }), + result = await editGlobalFilter(model, { + ...filter, + label: "?ack +.* to {my} We)ird. |*ab(el []", }); assert.deepEqual(result, DispatchResult.Success); }); @@ -211,7 +191,7 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { 1: { chain: "created_on", type: "date", offset: 1 }, }, }); - const filterId = THIS_YEAR_GLOBAL_FILTER.filter.id; + const filterId = THIS_YEAR_GLOBAL_FILTER.id; let fieldMatching = model.getters.getPivotFieldMatching("1", filterId); assert.equal(fieldMatching.chain, "created_on"); @@ -248,7 +228,7 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { 1: { chain: "created_on", type: "date", offset: 1 }, }, }); - const filterId = THIS_YEAR_GLOBAL_FILTER.filter.id; + const filterId = THIS_YEAR_GLOBAL_FILTER.id; insertListInSpreadsheet(model, { model: "product", columns: ["name"] }); const fieldMatching = model.getters.getListFieldMatching("1", filterId); @@ -256,12 +236,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { } ); QUnit.test("Can save a value to an existing global filter", async function (assert) { - assert.expect(8); - const { model } = await createSpreadsheetWithPivotAndList(); await addGlobalFilter( model, - { filter: LAST_YEAR_FILTER.filter }, + LAST_YEAR_FILTER, { pivot: DEFAULT_FIELD_MATCHINGS, list: DEFAULT_FIELD_MATCHINGS } ); const gf = model.getters.getGlobalFilters()[0]; @@ -290,19 +268,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const { model } = await createSpreadsheetWithPivotAndList(); insertChartInSpreadsheet(model); const chartId = model.getters.getOdooChartIds()[0]; - await addGlobalFilter( - model, - { - filter: { - ...LAST_YEAR_FILTER.filter, - }, - }, - { - pivot: { 1: { chain: "date", type: "date" } }, - list: { 1: { chain: "date", type: "date" } }, - chart: { [chartId]: { chain: "date", type: "date" } }, - } - ); + await addGlobalFilter(model, LAST_YEAR_FILTER, { + pivot: { 1: { chain: "date", type: "date" } }, + list: { 1: { chain: "date", type: "date" } }, + chart: { [chartId]: { chain: "date", type: "date" } }, + }); const pivotDomain = model.getters.getPivotComputedDomain("1"); assert.deepEqual(pivotDomain[0], "&"); assert.deepEqual(pivotDomain[1], ["date", ">=", "2021-01-01"]); @@ -334,16 +304,12 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const { model } = await createSpreadsheetWithList(); /** @type GlobalFilter */ const filter = { - ...THIS_YEAR_GLOBAL_FILTER.filter, + ...THIS_YEAR_GLOBAL_FILTER, defaultValue: { yearOffset: 0, period: "third_quarter" }, }; - await addGlobalFilter( - model, - { filter }, - { - list: { 1: { chain: "date", type: "date", offset: 2 } }, - } - ); + await addGlobalFilter(model, filter, { + list: { 1: { chain: "date", type: "date", offset: 2 } }, + }); const listDomain = model.getters.getListComputedDomain("1"); assert.deepEqual(listDomain[0], "&"); assert.deepEqual(listDomain[1], ["date", ">=", "2023-01-01"]); @@ -356,16 +322,12 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const chartId = model.getters.getOdooChartIds()[0]; /** @type GlobalFilter */ const filter = { - ...THIS_YEAR_GLOBAL_FILTER.filter, + ...THIS_YEAR_GLOBAL_FILTER, defaultValue: { yearOffset: 0, period: "july" }, }; - await addGlobalFilter( - model, - { filter }, - { - chart: { [chartId]: { chain: "date", type: "date", offset: -2 } }, - } - ); + await addGlobalFilter(model, filter, { + chart: { [chartId]: { chain: "date", type: "date", offset: -2 } }, + }); const chartDomain = model.getters.getChartDataSource(chartId).getComputedDomain(); assert.deepEqual(chartDomain[0], "&"); assert.deepEqual(chartDomain[1], ["date", ">=", "2022-05-01"]); @@ -411,7 +373,7 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { }, }, }, - globalFilters: [LAST_YEAR_LEGACY_FILTER.filter, LAST_YEAR_FILTER.filter], + globalFilters: [LAST_YEAR_LEGACY_FILTER, LAST_YEAR_FILTER], }); const model = await createModelWithDataSource({ spreadsheetData }); @@ -467,11 +429,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "Relation Filter", - }, + id: "42", + type: "relation", + label: "Relation Filter", }, { pivot: { @@ -494,13 +454,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { QUnit.test("Relational filter default to current user", async function (assert) { const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - label: "User Filter", - modelName: "res.users", - defaultValue: "current_user", - }, + id: "42", + type: "relation", + label: "User Filter", + modelName: "res.users", + defaultValue: "current_user", }); const [filter] = model.getters.getGlobalFilters(); assert.deepEqual(model.getters.getGlobalFilterValue(filter.id), [7]); @@ -518,26 +476,20 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Text Filter", - }, + id: "42", + type: "text", + label: "Text Filter", }); await addGlobalFilter(model, { - filter: { - id: "43", - type: "date", - label: "Date Filter", - rangeType: "fixedPeriod", - }, + id: "43", + type: "date", + label: "Date Filter", + rangeType: "fixedPeriod", }); await addGlobalFilter(model, { - filter: { - id: "44", - type: "relation", - label: "Relation Filter", - }, + id: "44", + type: "relation", + label: "Relation Filter", }); const [text] = model.getters.getGlobalFilters(); assert.equal(model.getters.getActiveFilterCount(), false); @@ -553,11 +505,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Text Filter", - }, + id: "42", + type: "text", + label: "Text Filter", }); const [filter] = model.getters.getGlobalFilters(); assert.equal(model.getters.getActiveFilterCount(), false); @@ -573,11 +523,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - label: "Relation Filter", - }, + id: "42", + type: "relation", + label: "Relation Filter", }); const [filter] = model.getters.getGlobalFilters(); assert.equal(model.getters.getActiveFilterCount(), false); @@ -593,12 +541,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "date", - label: "Date Filter", - rangeType: "fixedPeriod", - }, + id: "42", + type: "date", + label: "Date Filter", + rangeType: "fixedPeriod", }); const [filter] = model.getters.getGlobalFilters(); assert.equal(model.getters.getActiveFilterCount(), false); @@ -635,11 +581,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await nextTick(); assert.equal(getCellValue(model, "A10"), "#ERROR"); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Text Filter", - }, + id: "42", + type: "text", + label: "Text Filter", }); await nextTick(); assert.equal(getCellValue(model, "A10"), ""); @@ -659,11 +603,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { setCellContent(model, "A10", `=ODOO.FILTER.VALUE("Date Filter")`); await nextTick(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "date", - label: "Date Filter", - }, + id: "42", + type: "date", + label: "Date Filter", }); await nextTick(); const [filter] = model.getters.getGlobalFilters(); @@ -723,12 +665,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { setCellContent(model, "A10", `=ODOO.FILTER.VALUE("Relation Filter")`); await nextTick(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - label: "Relation Filter", - modelName: "partner", - }, + id: "42", + type: "relation", + label: "Relation Filter", + modelName: "partner", }); await nextTick(); const [filter] = model.getters.getGlobalFilters(); @@ -767,11 +707,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "date", - label: "Cuillère", - }, + id: "42", + type: "date", + label: "Cuillère", }); setCellContent( model, @@ -780,10 +718,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { ); const [filter] = model.getters.getGlobalFilters(); const newFilter = { + ...filter, type: "date", label: "Interprete", }; - await editGlobalFilter(model, { id: filter.id, filter: newFilter }); + await editGlobalFilter(model, newFilter); assert.equal( getCellFormula(model, "A10"), `=ODOO.FILTER.VALUE("Interprete") & ODOO.FILTER.VALUE("Interprete")` @@ -796,11 +735,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Cuillère", - }, + id: "42", + type: "text", + label: "Cuillère", }); await setGlobalFilterValue(model, { id: "42", @@ -817,11 +754,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Cuillère", - }, + id: "42", + type: "text", + label: "Cuillère", }); assert.equal(model.getters.getGlobalFilters().length, 1); model.dispatch("REQUEST_UNDO"); @@ -835,11 +770,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Cuillère", - }, + id: "42", + type: "text", + label: "Cuillère", }); await removeGlobalFilter(model, "42"); assert.equal(model.getters.getGlobalFilters().length, 0); @@ -854,19 +787,14 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const model = await createModelWithDataSource(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "text", - label: "Cuillère", - }, + id: "42", + type: "text", + label: "Cuillère", }); await editGlobalFilter(model, { id: "42", - filter: { - id: "42", - type: "text", - label: "Arthouuuuuur", - }, + type: "text", + label: "Arthouuuuuur", }); assert.equal(model.getters.getGlobalFilters()[0].label, "Arthouuuuuur"); model.dispatch("REQUEST_UNDO"); @@ -889,13 +817,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "Relation Filter", - modelName: "product", - defaultValue: [41], - }, + id: "42", + type: "relation", + label: "Relation Filter", + modelName: "product", + defaultValue: [41], }, { pivot: { 1: { chain: "product_id", type: "many2one" } } } ); @@ -1043,14 +969,12 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { "partner/read_group", ]); assert.strictEqual(getCellValue(model, "A1"), 131); - model.dispatch("ADD_GLOBAL_FILTER", { - filter: { - id: "42", - type: "date", - rangeType: "fixedPeriod", - label: "This month", - defaultValue: {}, // no default value! - }, + addGlobalFilter(model, { + id: "42", + type: "date", + rangeType: "fixedPeriod", + label: "This month", + defaultValue: {}, // no default value! }); assert.strictEqual(getCellValue(model, "A1"), 131); assert.verifySteps([]); @@ -1158,9 +1082,7 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const { model } = await createSpreadsheetWithPivot(); const label = "This year"; const defaultValue = "value"; - await addGlobalFilter(model, { - filter: { id: "42", type: "text", label, defaultValue }, - }); + await addGlobalFilter(model, { id: "42", type: "text", label, defaultValue }); const [filter] = model.getters.getGlobalFilters(); assert.equal(model.getters.getGlobalFilterValue(filter.id), defaultValue); }); @@ -1211,13 +1133,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const label = "This year"; const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "1", - type: "date", - label, - defaultValue: "this_year", - rangeType: "fixedPeriod", - }, + id: "1", + type: "date", + label, + defaultValue: "this_year", + rangeType: "fixedPeriod", }); assert.deepEqual(model.getters.getGlobalFilterValue("1"), { yearOffset: 0, @@ -1229,13 +1149,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const label = "This month"; const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "1", - type: "date", - label, - defaultValue: "this_month", - rangeType: "fixedPeriod", - }, + id: "1", + type: "date", + label, + defaultValue: "this_month", + rangeType: "fixedPeriod", }); assert.deepEqual(model.getters.getGlobalFilterValue("1"), { yearOffset: 0, @@ -1248,13 +1166,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const label = "This quarter"; const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "1", - type: "date", - label, - defaultValue: "this_quarter", - rangeType: "fixedPeriod", - }, + id: "1", + type: "date", + label, + defaultValue: "this_quarter", + rangeType: "fixedPeriod", }); assert.deepEqual(model.getters.getGlobalFilterValue("1"), { yearOffset: 0, @@ -1298,13 +1214,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const defaultValue = RELATIVE_DATE_RANGE_TYPES[1].type; const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "date", - label, - defaultValue, - rangeType: "relative", - }, + id: "42", + type: "date", + label, + defaultValue, + rangeType: "relative", }); assert.equal( model.getters.getFilterDisplayValue(label), @@ -1324,7 +1238,7 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { defaultValue: "last_week", rangeType: "relative", }; - await addGlobalFilter(model, { filter }, { pivot: { 1: { chain: "date", type: "date" } } }); + await addGlobalFilter(model, filter, { pivot: { 1: { chain: "date", type: "date" } } }); let computedDomain = model.getters.getPivotComputedDomain("1"); assert.equal(getDateDomainDurationInDays(computedDomain), 7); assertDateDomainEqual(assert, "date", "2022-05-10", "2022-05-16", computedDomain); @@ -1371,11 +1285,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { defaultValue: "last_week", rangeType: "relative", }; - await addGlobalFilter( - model, - { filter }, - { pivot: { 1: { chain: "date", type: "date", offset: -1 } } } - ); + await addGlobalFilter(model, filter, { + pivot: { 1: { chain: "date", type: "date", offset: -1 } }, + }); let computedDomain = model.getters.getPivotComputedDomain("1"); assert.equal(getDateDomainDurationInDays(computedDomain), 7); assertDateDomainEqual(assert, "date", "2022-05-03", "2022-05-09", computedDomain); @@ -1421,10 +1333,8 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { `, }); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - }, + id: "42", + type: "relation", }); model.dispatch("SET_MANY_GLOBAL_FILTER_VALUE", { filters: [{ filterId: "42", value: [31] }], @@ -1441,11 +1351,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { patchDate(2022, 6, 14, 0, 0, 0); const { model } = await createSpreadsheetWithPivot(); await addGlobalFilter(model, { - filter: { - id: "42", - type: "date", - rangeType: "fixedPeriod", - }, + id: "42", + type: "date", + defaultValue: "this_month", + rangeType: "fixedPeriod", }); const newValue = { yearOffset: -6, period: "may" }; model.dispatch("SET_MANY_GLOBAL_FILTER_VALUE", { @@ -1472,11 +1381,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "relational filter", - }, + id: "42", + type: "relation", + label: "relational filter", }, { pivot: { 1: { chain: "product_id", type: "many2one" } }, @@ -1485,12 +1392,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "43", - type: "date", - label: "date filter 1", - rangeType: "fixedPeriod", - }, + id: "43", + type: "date", + label: "date filter 1", + rangeType: "fixedPeriod", + defaultValue: "this_month" }, { pivot: { 1: { chain: "date", type: "date" } }, @@ -1540,11 +1446,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "relational filter", - }, + id: "42", + type: "relation", + label: "relational filter", }, { pivot: { 1: { chain: "product_id", type: "many2one" } }, @@ -1553,12 +1457,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "43", - type: "date", - label: "date filter 1", - rangeType: "fixedPeriod", - }, + id: "43", + type: "date", + label: "date filter 1", + dateValue: "this_month", + rangeType: "fixedPeriod", }, { pivot: { 1: { chain: "product_id", type: "many2one" } }, @@ -1585,11 +1488,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - defaultValue: [], - }, + id: "42", + type: "relation", + defaultValue: [], }, { pivot: { 1: { chain: "product_id", type: "many2one" } } } ); @@ -1617,11 +1518,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - defaultValue: [], - }, + id: "42", + type: "relation", + defaultValue: [], }, { pivot: { 1: { chain: "product_id", type: "many2one" } } } ); @@ -1646,11 +1545,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { `, }); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - defaultValue: [], - }, + id: "42", + type: "relation", + defaultValue: [], }); const filters = model.getters.getFiltersMatchingPivot(getCellFormula(model, "B3")); assert.deepEqual(filters, []); @@ -1671,11 +1568,9 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - defaultValue: [], - }, + id: "42", + type: "relation", + defaultValue: [], }, { pivot: { 1: { chain: "product_id", type: "many2one" } } } ); @@ -1696,12 +1591,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { }); setCellContent(model, "B3", '=ODOO.PIVOT(1, "probability", "#product_id", 1)'); await addGlobalFilter(model, { - filter: { - id: "42", - type: "relation", - defaultValue: [1], - pivotFields: { 1: { field: "product_id", type: "many2one" } }, - }, + id: "42", + type: "relation", + defaultValue: [1], + pivotFields: { 1: { field: "product_id", type: "many2one" } }, }); const filters = model.getters.getFiltersMatchingPivot(getCellFormula(model, "B3")); assert.deepEqual(filters, []); @@ -1794,12 +1687,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { `, }); await addGlobalFilter(model, { - filter: { - id: "42", - label: "fake", - type: "relation", - defaultValue: [], - }, + id: "42", + label: "fake", + type: "relation", + defaultValue: [], }); const filters = model.getters.getFiltersMatchingPivot(getCellFormula(model, "B2")); assert.deepEqual(filters, []); @@ -1812,12 +1703,10 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { const chartId = model.getters.getOdooChartIds()[0]; const filter = (label) => ({ - filter: { - id: "42", - label, - type: "date", - defaultValue: {}, - }, + id: "42", + label, + type: "date", + defaultValue: {}, }); const resultPivot = await addGlobalFilter(model, filter("fake1"), { pivot: { 1: { offset: -2 } }, @@ -1836,13 +1725,11 @@ QUnit.module("spreadsheet > Global filters model", {}, () => { QUnit.test("Can create a relative date filter with an empty default value", async (assert) => { const { model } = await createSpreadsheetWithPivot(); const filter = { - filter: { - id: "42", - label: "test", - type: "date", - defaultValue: {}, - rangeType: "relative", - }, + id: "42", + label: "test", + type: "date", + defaultValue: {}, + rangeType: "relative", }; const result = await addGlobalFilter(model, filter); assert.ok(result.isSuccessful); diff --git a/addons/spreadsheet/static/tests/lists/list_plugin_test.js b/addons/spreadsheet/static/tests/lists/list_plugin_test.js index a7a3623c590..2730c0ddb44 100644 --- a/addons/spreadsheet/static/tests/lists/list_plugin_test.js +++ b/addons/spreadsheet/static/tests/lists/list_plugin_test.js @@ -493,14 +493,12 @@ QUnit.module("spreadsheet > list plugin", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "test", - defaultValue: [41], - modelName: undefined, - rangeType: undefined, - }, + id: "42", + type: "relation", + label: "test", + defaultValue: [41], + modelName: undefined, + rangeType: undefined, }, { list: { 1: { chain: "product_id", type: "many2one" } }, diff --git a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js index 9b2815ede1d..7a3147c14dd 100644 --- a/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js +++ b/addons/spreadsheet/static/tests/pivots/model/pivot_plugin_test.js @@ -778,14 +778,12 @@ QUnit.module("spreadsheet > pivot plugin", {}, () => { await addGlobalFilter( model, { - filter: { - id: "42", - type: "relation", - label: "test", - defaultValue: [41], - modelName: undefined, - rangeType: undefined, - }, + id: "42", + type: "relation", + label: "test", + defaultValue: [41], + modelName: undefined, + rangeType: undefined, }, { pivot: { 1: { chain: "product_id", type: "many2one" } }, diff --git a/addons/spreadsheet/static/tests/utils/commands.js b/addons/spreadsheet/static/tests/utils/commands.js index ece70b5d0e7..f9e565daa88 100644 --- a/addons/spreadsheet/static/tests/utils/commands.js +++ b/addons/spreadsheet/static/tests/utils/commands.js @@ -23,7 +23,7 @@ export function selectCell(model, xc) { * @param {{filter: GlobalFilter}} filter */ export async function addGlobalFilter(model, filter, fieldMatchings = {}) { - const result = model.dispatch("ADD_GLOBAL_FILTER", { ...filter, ...fieldMatchings }); + const result = model.dispatch("ADD_GLOBAL_FILTER", { filter, ...fieldMatchings }); await waitForDataSourcesLoaded(model); return result; } @@ -41,7 +41,7 @@ export async function removeGlobalFilter(model, id) { * Edit a global filter and ensure the data sources are completely reloaded */ export async function editGlobalFilter(model, filter) { - const result = model.dispatch("EDIT_GLOBAL_FILTER", filter); + const result = model.dispatch("EDIT_GLOBAL_FILTER", { filter }); await waitForDataSourcesLoaded(model); return result; } diff --git a/addons/spreadsheet/static/tests/utils/global_filter.js b/addons/spreadsheet/static/tests/utils/global_filter.js index 5f455a40ed9..c921d4aac1c 100644 --- a/addons/spreadsheet/static/tests/utils/global_filter.js +++ b/addons/spreadsheet/static/tests/utils/global_filter.js @@ -1,10 +1,8 @@ /** @odoo-module */ export const THIS_YEAR_GLOBAL_FILTER = { - filter: { - id: "43", - type: "date", - label: "This Year", - rangeType: "fixedPeriod", - defaultValue: { yearOffset: 0 }, - }, + id: "43", + type: "date", + label: "This Year", + rangeType: "fixedPeriod", + defaultValue: { yearOffset: 0 }, };