diff --git a/cypress/component/TableCellNumber.cy.js b/cypress/component/TableCellNumber.cy.js new file mode 100644 index 0000000000..5102f3a856 --- /dev/null +++ b/cypress/component/TableCellNumber.cy.js @@ -0,0 +1,51 @@ +/** + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { setLocale } from '@nextcloud/l10n' + +import TableCellNumber from '../../src/shared/components/ncTable/partials/TableCellNumber.vue' + +describe('TableCellNumber', () => { + beforeEach(() => { + setLocale('en_US') + }) + + it('displays decimals with the current locale separator', () => { + setLocale('de_DE') + + mountNumberCell(1.234, { numberDecimals: 3 }) + + cy.get('.number-display').should('contain.text', '1,234') + }) + + it('keeps the configured amount of decimal places', () => { + mountNumberCell(1.2, { numberDecimals: 2 }) + + cy.get('.number-display').should('contain.text', '1.20') + }) + + it('clamps out-of-range decimal counts for Intl.NumberFormat', () => { + mountNumberCell(1.234567, { numberDecimals: 50 }) + + cy.get('.number-display').should('contain.text', '1.234567') + }) +}) + +function mountNumberCell(value, columnOverrides = {}) { + cy.mount(TableCellNumber, { + props: { + column: { + id: 1, + numberDecimals: 0, + numberMax: null, + numberMin: null, + numberPrefix: '', + numberSuffix: '', + ...columnOverrides, + }, + rowId: 1, + value, + }, + }) +} diff --git a/src/shared/components/ncTable/partials/TableCellNumber.vue b/src/shared/components/ncTable/partials/TableCellNumber.vue index 9755eef02a..6ba83e2ca2 100644 --- a/src/shared/components/ncTable/partials/TableCellNumber.vue +++ b/src/shared/components/ncTable/partials/TableCellNumber.vue @@ -23,6 +23,7 @@