diff --git a/addons/web/static/src/js/views/kanban/kanban_record.js b/addons/web/static/src/js/views/kanban/kanban_record.js index 3bb0340d3fa..0bd38b44b02 100644 --- a/addons/web/static/src/js/views/kanban/kanban_record.js +++ b/addons/web/static/src/js/views/kanban/kanban_record.js @@ -179,8 +179,10 @@ var KanbanRecord = Widget.extend({ if ((r.type === 'date' || r.type === 'datetime') && value) { r.raw_value = value.toDate(); - } else if (r.type === 'one2many' || r.type === 'many2one' || r.type === 'many2many') { - r.raw_value = value ? value.res_ids : []; + } else if (r.type === 'one2many' || r.type === 'many2many') { + r.raw_value = value.count ? value.res_ids : false; + } else if (r.type === 'many2one' ) { + r.raw_value = value.res_id || false; } else { r.raw_value = value; } diff --git a/addons/web/static/test/views/kanban_tests.js b/addons/web/static/test/views/kanban_tests.js index 2a33cd3a9a8..5356fe42ffe 100644 --- a/addons/web/static/test/views/kanban_tests.js +++ b/addons/web/static/test/views/kanban_tests.js @@ -849,7 +849,38 @@ QUnit.module('Views', { kanban.destroy(); }); -}); + QUnit.test('evaluate conditions on relational fields', function (assert) { + assert.expect(3); + this.data.partner.records[0].product_id = false; + this.data.partner.records[0].category_ids = [6]; + + var kanban = createView({ + View: KanbanView, + model: 'partner', + data: this.data, + arch: '' + + '' + + '' + + '' + + '
' + + '' + + '' + + '
' + + '
' + + '
', + }); + + assert.strictEqual($('.o_kanban_record:not(.o_kanban_ghost)').length, 4, + "there should be 4 records"); + assert.strictEqual($('.o_kanban_record:not(.o_kanban_ghost) .btn_a').length, 1, + "only 1 of them should have the 'Action' button"); + assert.strictEqual($('.o_kanban_record:not(.o_kanban_ghost) .btn_b').length, 3, + "only 3 of them should have the 'Action' button"); + + kanban.destroy(); + }); + +}); });