From 00fff80858d5b9839b7fe018ac7c19bbd4820143 Mon Sep 17 00:00:00 2001 From: Lucas Perais Date: Tue, 9 Aug 2022 09:38:19 +0000 Subject: [PATCH] [FIX] web: one2many in kanban can remove a new record Have a one2many in a form view. It displays its records with a kanban. Add a record, now click on that new record. Before this commit, there was not "Remove" button, preventing to effectively remove a new (virtual at this point) record from the one2many. Aftet this commit, there is a remove button that effectively removes the record from the one2many. closes odoo/odoo#97775 Signed-off-by: FrancoisGe --- .../src/views/fields/relational_utils.xml | 3 ++ .../views/fields/one2many_field_tests.js | 44 +++++++++++++++++++ 2 files changed, 47 insertions(+) diff --git a/addons/web/static/src/views/fields/relational_utils.xml b/addons/web/static/src/views/fields/relational_utils.xml index f0da470686d..6173ec4e9be 100644 --- a/addons/web/static/src/views/fields/relational_utils.xml +++ b/addons/web/static/src/views/fields/relational_utils.xml @@ -13,6 +13,9 @@ + + + diff --git a/addons/web/static/tests/views/fields/one2many_field_tests.js b/addons/web/static/tests/views/fields/one2many_field_tests.js index 300d051593f..fff8aab00e8 100644 --- a/addons/web/static/tests/views/fields/one2many_field_tests.js +++ b/addons/web/static/tests/views/fields/one2many_field_tests.js @@ -12325,4 +12325,48 @@ QUnit.module("Fields", (hooks) => { assert.containsN(target, ".o_list_renderer tbody tr", 4); } ); + + QUnit.test("one2many can delete a new record", async (assert) => { + await makeView({ + type: "form", + resModel: "partner", + serverData, + arch: ` +
+ + + + + +
+
+
+
+ + + + + `, + resId: 1, + mockRPC(route, args) { + if (args.method === "write") { + assert.step("write"); // should not happen + } + }, + }); + await clickEdit(target); + assert.containsNone(target, ".o_kanban_record:not(.o_kanban_ghost)"); + + await click(target, ".o-kanban-button-new"); + await clickSave(target.querySelector(".modal")); + assert.containsOnce(target, ".o_kanban_record:not(.o_kanban_ghost)"); + + await click(target, ".o_kanban_record:not(.o_kanban_ghost)"); + assert.containsOnce(target, ".modal .o_btn_remove"); + + await click(target, ".modal .o_btn_remove"); + assert.containsNone(target, ".o_kanban_record:not(.o_kanban_ghost)"); + + await clickSave(target); + }); });