Group same contributions without URL, make grouping more precise
CI / Lint (pull_request) Successful in 51s
CI / Test (pull_request) Successful in 1m33s

This commit is contained in:
2026-07-26 17:22:53 +02:00
parent f7ee864071
commit 33a429c448
6 changed files with 135 additions and 63 deletions
@@ -15,9 +15,9 @@ module('Integration | Component | contribution-list', function(hooks) {
this.set('fixtures', contributions);
await render(hbs`{{contribution-list contributions=fixtures}}`);
// 9 contributions: 2 groups (ids 1+3, 7+8) + 5 singletons = 7 top-level rows
assert.equal(this.element.querySelectorAll('li').length, 7, '7 top-level rows when collapsed');
assert.equal(this.element.querySelectorAll('li.grouped').length, 2, '2 grouped headers');
// 11 contributions: 3 groups ({1,3}, {7,8}, {10,11}) + 5 singletons = 8 rows
assert.equal(this.element.querySelectorAll('li').length, 8, '8 top-level rows when collapsed');
assert.equal(this.element.querySelectorAll('li.grouped').length, 3, '3 grouped headers');
assert.equal(this.element.querySelectorAll('li.group-item').length, 0, 'no expanded sub-items');
});
@@ -36,16 +36,15 @@ module('Integration | Component | contribution-list', function(hooks) {
await click('.filter-contribution-size input');
// Hide small (<=500): drops id 6 only. Grouped rows stay (matching items
// are 1500/1500). 4 top-level rows.
// are 1500/5000). 4 top-level rows.
assert.equal(this.element.querySelectorAll('li').length, 4, 'hide small contributions');
await fillIn('.filter-contribution-kind select', 'dev');
// Kind dev (still filtered to contributor 1, hide small on): only groups
// where a single item passes all three filters survive. Group {1,3}: id 1
// is contributor 1 + dev → included. Group {8,7}: id 8 is contributor 1 but
// community; id 7 is dev but contributor 3 → no item passes both → excluded.
// Singletons id 2 (ops), id 5 (design) → excluded. 1 top-level row.
assert.equal(this.element.querySelectorAll('li').length, 1, 'select kind');
// is contributor 1 + dev → included. Group {7,8}: id 8 is contributor 1 +
// dev → included. Singletons id 2 (ops), id 5 (design) → excluded. 2 rows.
assert.equal(this.element.querySelectorAll('li').length, 2, 'select kind');
});
test('filtering by contributor keeps grouped rows whole', async function(assert) {