From ab0bf5e46c76be1150f2ff7ab5ee047b54bfd6f5 Mon Sep 17 00:00:00 2001 From: "Laurent Stukkens (LTU)" Date: Tue, 20 Sep 2022 06:47:02 +0000 Subject: [PATCH] [FIX] project: prevent selecting 'Set Status' as project status Since odoo/odoo#98380, the `Set Status` can be selected in the `project.project` kanban view, which was not previously feasible as considered as not suitable. This commit prevents selecting that value. task-2989015 closes odoo/odoo#100561 Signed-off-by: Laurent Stukkens (ltu) --- addons/project/__manifest__.py | 4 +- .../project_state_selection.js | 12 +++- .../tests/project_state_selection_tests.js | 64 +++++++++++++++++++ 3 files changed, 76 insertions(+), 4 deletions(-) create mode 100644 addons/project/static/tests/project_state_selection_tests.js diff --git a/addons/project/__manifest__.py b/addons/project/__manifest__.py index c99a0eae16a..625c8907d3c 100644 --- a/addons/project/__manifest__.py +++ b/addons/project/__manifest__.py @@ -85,9 +85,7 @@ 'project/static/src/js/portal_rating.js', ], 'web.qunit_suite_tests': [ - 'project/static/tests/project_test_utils.js', - 'project/static/tests/burndown_chart_tests.js', - 'project/static/tests/project_form_tests.js', + 'project/static/tests/**/*.js', ], 'web.assets_tests': [ 'project/static/tests/tours/**/*', diff --git a/addons/project/static/src/components/project_state_selection/project_state_selection.js b/addons/project/static/src/components/project_state_selection/project_state_selection.js index 2fb5668e92b..8ce6f9d1a2f 100644 --- a/addons/project/static/src/components/project_state_selection/project_state_selection.js +++ b/addons/project/static/src/components/project_state_selection/project_state_selection.js @@ -12,9 +12,19 @@ export class ProjectStateSelectionField extends StateSelectionField { this.colors = STATUS_COLORS; } + /** + * @override + */ get showLabel() { return !this.props.hideLabel; } + + /** + * @override + */ + get options() { + return super.options.filter(o => o[0] !== 'to_define'); + } } -registry.category('fields').add('project_state_selection', ProjectStateSelectionField); +registry.category('fields').add('kanban.project_state_selection', ProjectStateSelectionField); diff --git a/addons/project/static/tests/project_state_selection_tests.js b/addons/project/static/tests/project_state_selection_tests.js new file mode 100644 index 00000000000..edfac0ee100 --- /dev/null +++ b/addons/project/static/tests/project_state_selection_tests.js @@ -0,0 +1,64 @@ +/** @odoo-module */ + +import { getFixture, click } from "@web/../tests/helpers/utils"; +import { makeView, setupViewRegistries } from "@web/../tests/views/helpers"; + +let makeViewParams, target; + +QUnit.module("Project", (hooks) => { + hooks.beforeEach(() => { + makeViewParams = { + type: "kanban", + resModel: "project.project", + serverData: { + models: { + "project.project": { + fields: { + id: {string: "Id", type: "integer"}, + last_update_status: { + string: "Status", + type: "selection", + selection: [ + ["on_track", "On Track"], + ["at_risk", "At Risk"], + ["off_track", "Off Track"], + ["on_hold", "On Hold"], + ["to_define", "Set Status"], + ], + }, + last_update_color: { + string: "Update State Color", + type: "integer", + }, + }, + records: [ + {id: 1, last_update_status: "on_track", last_update_color: 20}, + ], + }, + }, + }, + arch: ` + + + + + `, + }; + target = getFixture(); + setupViewRegistries(); + }); + QUnit.module("Components", (hooks) => { + QUnit.module("ProjectStateSelectionField"); + QUnit.test("Check that ProjectStateSelectionField does not propose `Set Status`", async function (assert) { + await makeView(makeViewParams); + await click(target, 'div[name="last_update_status"] button.dropdown-toggle'); + assert.containsNone(target, 'div[name="last_update_status"] .dropdown-menu .dropdown-item:contains("Set Status")'); + }); + }); + });