diff --git a/addons/web/static/src/legacy/js/views/list/list_renderer.js b/addons/web/static/src/legacy/js/views/list/list_renderer.js index d9a26e0d48d..d1b23b58869 100644 --- a/addons/web/static/src/legacy/js/views/list/list_renderer.js +++ b/addons/web/static/src/legacy/js/views/list/list_renderer.js @@ -714,11 +714,12 @@ var ListRenderer = BasicRenderer.extend({ _renderGroupRow: function (group, groupLevel) { var cells = []; - var name = group.value === undefined ? _t('Undefined') : group.value; - var groupBy = this.state.groupedBy[groupLevel]; - if (group.fields[groupBy.split(':')[0]].type !== 'boolean') { - name = name || _t('Undefined'); - } + const groupBy = this.state.groupedBy[groupLevel]; + const groupByFieldName = groupBy.split(':')[0]; + const groupByField = group.fields[groupByFieldName]; + const name = groupByField.type === "boolean" + ? (group.value === undefined ? _t('Undefined') : group.value) + : (group.value === undefined || group.value === false ? _t('Undefined') : group.value); var $th = $('') .addClass('o_group_name') .attr('tabindex', -1) diff --git a/addons/web/static/tests/legacy/views/list_tests.js b/addons/web/static/tests/legacy/views/list_tests.js index 6c6ac4871fa..2f14980d58d 100644 --- a/addons/web/static/tests/legacy/views/list_tests.js +++ b/addons/web/static/tests/legacy/views/list_tests.js @@ -9895,7 +9895,7 @@ QUnit.module('Views', { }); QUnit.test('grouped lists with expand attribute and a lot of groups', async function (assert) { - assert.expect(8); + assert.expect(10); for (var i = 0; i < 15; i++) { this.data.foo.records.push({foo: 'record ' + i, int_field: i}); @@ -9916,14 +9916,43 @@ QUnit.module('Views', { }); assert.containsN(list, '.o_group_header', 10); // page 1 - assert.containsN(list, '.o_data_row', 11); // one group contains two records + assert.containsN(list, '.o_data_row', 12); // two groups contains two records assert.containsOnce(list, '.o_pager'); // has a pager + assert.deepEqual( + [...list.el.querySelectorAll(".o_group_name")].map((el) => el.innerText), + [ + "10 (2)", + "9 (2)", + "17 (1)", + "-4 (1)", + "0 (1)", + "1 (1)", + "2 (1)", + "3 (1)", + "4 (1)", + "5 (1)", + ] + ); + await cpHelpers.pagerNext(list); // switch to page 2 assert.containsN(list, '.o_group_header', 7); // page 2 assert.containsN(list, '.o_data_row', 7); + assert.deepEqual( + [...list.el.querySelectorAll(".o_group_name")].map((el) => el.innerText), + [ + "6 (1)", + "7 (1)", + "8 (1)", + "11 (1)", + "12 (1)", + "13 (1)", + "14 (1)", + ] + ); + assert.verifySteps([ 'web_read_group', // read_group page 1 'web_read_group', // read_group page 2