From ee83365c98ec0fdd2a45f329820d9edc97750bd8 Mon Sep 17 00:00:00 2001 From: Marc Bernard Date: Wed, 18 Mar 2026 21:29:09 +0100 Subject: [PATCH] fix: upper bound of array groups --- src/js/components/ArrayGroup.js | 6 ++-- test/tests/js/components/ArrayGroup-test.js | 37 +++++++++++++++++++++ 2 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/js/components/ArrayGroup.js b/src/js/components/ArrayGroup.js index c834fd1..49a5954 100644 --- a/src/js/components/ArrayGroup.js +++ b/src/js/components/ArrayGroup.js @@ -155,9 +155,9 @@ export default class extends React.PureComponent { > {i * size} {' - '} - {i * size + size > src.length - ? src.length - : i * size + size} + {i * size + size - 1 > src.length + ? src.length - 1 + : i * size + size - 1} ] diff --git a/test/tests/js/components/ArrayGroup-test.js b/test/tests/js/components/ArrayGroup-test.js index 3e756a3..4753717 100644 --- a/test/tests/js/components/ArrayGroup-test.js +++ b/test/tests/js/components/ArrayGroup-test.js @@ -138,4 +138,41 @@ describe('', function () { namespace: [] }) }) + + it('ArrayGroup shows object-size ranges for collapsed groups', function () { + const groupSize = 100 + const cases = [ + { length: 222, expected: ['0 - 99', '100 - 199', '200 - 221'] }, + { length: 199, expected: ['0 - 99', '100 - 199'] }, + { length: 101, expected: ['0 - 99', '100 - 100'] } + ] + + cases.forEach(({ length, expected }) => { + const src = new Array(length).fill('test') + const wrapper = render( + + ) + + const labels = wrapper.find('.object-size') + expect(labels).to.have.length(expected.length) + + expected.forEach((range, i) => { + const actual = labels + .eq(i) + .text() + .replace(/\s+/g, ' ') + .trim() + + expect(actual).to.equal(range) + }) + }) + }) })