diff --git a/addons/web/static/src/js/views/kanban/kanban_model.js b/addons/web/static/src/js/views/kanban/kanban_model.js index cd69889bda9..adae3d9fd51 100644 --- a/addons/web/static/src/js/views/kanban/kanban_model.js +++ b/addons/web/static/src/js/views/kanban/kanban_model.js @@ -153,7 +153,7 @@ var KanbanModel = BasicModel.extend({ }).then(function () { // Remove record from its current group var old_group; - for (var i = 0; i < parent.count; i++) { + for (var i = 0; i < parent.data.length; i++) { old_group = self.localData[parent.data[i]]; var index = _.indexOf(old_group.data, recordID); if (index >= 0) { diff --git a/addons/web/static/tests/views/kanban_tests.js b/addons/web/static/tests/views/kanban_tests.js index 89fc72691f0..e81604afe56 100644 --- a/addons/web/static/tests/views/kanban_tests.js +++ b/addons/web/static/tests/views/kanban_tests.js @@ -1528,6 +1528,62 @@ QUnit.module('Views', { kanban.destroy(); }); + + QUnit.test('move a record then put it again in the same column', function (assert) { + assert.expect(6); + + this.data.partner.records = []; + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '' + + '' + + '
' + + '
', + groupBy: ['product_id'], + }); + + kanban.$('.o_column_quick_create').click(); + kanban.$('.o_column_quick_create input').val('column1'); + kanban.$('.o_column_quick_create button.o_kanban_add').click(); + + kanban.$('.o_column_quick_create').click(); + kanban.$('.o_column_quick_create input').val('column2'); + kanban.$('.o_column_quick_create button.o_kanban_add').click(); + + kanban.$('.o_kanban_group:eq(1) .o_kanban_quick_add i').click(); + var $quickCreate = kanban.$('.o_kanban_group:eq(1) .o_kanban_quick_create'); + $quickCreate.find('input').val('new partner'); + $quickCreate.find('button.o_kanban_add').click(); + + assert.strictEqual(kanban.$('.o_kanban_group:eq(0) .o_kanban_record').length, 0, + "column should contain 0 record"); + assert.strictEqual(kanban.$('.o_kanban_group:eq(1) .o_kanban_record').length, 1, + "column should contain 1 records"); + + var $record = kanban.$('.o_kanban_group:eq(1) .o_kanban_record:eq(0)'); + var $group = kanban.$('.o_kanban_group:eq(0)'); + testUtils.dragAndDrop($record, $group); + + assert.strictEqual(kanban.$('.o_kanban_group:eq(0) .o_kanban_record').length, 1, + "column should contain 1 records"); + assert.strictEqual(kanban.$('.o_kanban_group:eq(1) .o_kanban_record').length, 0, + "column should contain 0 records"); + + $record = kanban.$('.o_kanban_group:eq(0) .o_kanban_record:eq(0)'); + $group = kanban.$('.o_kanban_group:eq(1)'); + + testUtils.dragAndDrop($record, $group); + + assert.strictEqual(kanban.$('.o_kanban_group:eq(0) .o_kanban_record').length, 0, + "column should contain 0 records"); + assert.strictEqual(kanban.$('.o_kanban_group:eq(1) .o_kanban_record').length, 1, + "column should contain 1 records"); + kanban.destroy(); + }); }); });