Skip to content

Commit baaef4d

Browse files
asizikovCopilot
andcommitted
fix: address seat count review feedback
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 4764c74 commit baaef4d

3 files changed

Lines changed: 11 additions & 5 deletions

File tree

src/utils/seatCounts.test.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,9 @@ describe('seat count helpers', () => {
88
expect(parseSeatCountInput('')).toBeNull()
99
expect(parseSeatCountInput(' ')).toBeNull()
1010
expect(parseSeatCountInput('12.9')).toBeNull()
11+
expect(parseSeatCountInput('1e3')).toBeNull()
12+
expect(parseSeatCountInput('0x10')).toBeNull()
13+
expect(parseSeatCountInput('+12')).toBeNull()
1114
expect(parseSeatCountInput('not-a-number')).toBeNull()
1215
})
1316

@@ -17,6 +20,9 @@ describe('seat count helpers', () => {
1720
expect(getSeatCountInputError('', 10)).toBe(invalidInputError)
1821
expect(getSeatCountInputError(' ', 10)).toBe(invalidInputError)
1922
expect(getSeatCountInputError('12.9', 10)).toBe(invalidInputError)
23+
expect(getSeatCountInputError('1e3', 10)).toBe(invalidInputError)
24+
expect(getSeatCountInputError('0x10', 10)).toBe(invalidInputError)
25+
expect(getSeatCountInputError('+12', 10)).toBe(invalidInputError)
2026
expect(getSeatCountInputError('not-a-number', 10)).toBe(invalidInputError)
2127
expect(getSeatCountInputError('10', 10)).toBeNull()
2228
expect(getSeatCountInputError(' 12 ', 10)).toBeNull()

src/utils/seatCounts.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ export function normalizeSeatCount(value: number, minimum: number): number {
88

99
export function parseSeatCountInput(raw: string): number | null {
1010
const trimmed = raw.trim()
11-
if (trimmed === '') return null
11+
if (!/^\d+$/.test(trimmed)) return null
1212

1313
const parsed = Number(trimmed)
14-
if (!Number.isFinite(parsed) || !Number.isInteger(parsed)) return null
14+
if (!Number.isSafeInteger(parsed)) return null
1515

1616
return parsed
1717
}

src/views/UsersView.tsx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
import { calculateSavingsDifference } from '../utils/billingComparison'
1212
import { InfoTip, ValidationPopover } from '../components/InfoTip'
1313
import { formatAic, formatDifference } from '../utils/format'
14-
import { getSeatCountInputError, parseSeatCountInput } from '../utils/seatCounts'
14+
import { getSeatCountInputError, normalizeSeatCount, parseSeatCountInput } from '../utils/seatCounts'
1515
import { Trie } from '../utils/trie'
1616
import { th, thBase, thNum, td, tdNum, sortBtn } from '../components/ui/tableStyles'
1717

@@ -77,8 +77,8 @@ export function UsersView({ users, seatOverrides = {}, onSeatOverridesChange, on
7777

7878
const parsedDraftBusiness = parseSeatCountInput(draftBusiness)
7979
const parsedDraftEnterprise = parseSeatCountInput(draftEnterprise)
80-
const displayBusiness = isEditing ? (parsedDraftBusiness ?? savedBusiness) : savedBusiness
81-
const displayEnterprise = isEditing ? (parsedDraftEnterprise ?? savedEnterprise) : savedEnterprise
80+
const displayBusiness = isEditing ? normalizeSeatCount(parsedDraftBusiness ?? savedBusiness, defaultBusiness) : savedBusiness
81+
const displayEnterprise = isEditing ? normalizeSeatCount(parsedDraftEnterprise ?? savedEnterprise, defaultEnterprise) : savedEnterprise
8282
const businessSeatError = isEditing
8383
? getSeatCountInputError(draftBusiness, defaultBusiness)
8484
: null

0 commit comments

Comments
 (0)