diff --git a/app/soapbox/utils/__tests__/numbers-test.js b/app/soapbox/utils/__tests__/numbers-test.js deleted file mode 100644 index 86923a781f..0000000000 Binary files a/app/soapbox/utils/__tests__/numbers-test.js and /dev/null differ diff --git a/app/soapbox/utils/__tests__/numbers-test.tsx b/app/soapbox/utils/__tests__/numbers-test.tsx new file mode 100644 index 0000000000..63c45b26b0 --- /dev/null +++ b/app/soapbox/utils/__tests__/numbers-test.tsx @@ -0,0 +1,37 @@ +import React from 'react'; + +import { render, screen } from '../../jest/test-helpers'; +import { isIntegerId, shortNumberFormat } from '../numbers'; + +test('isIntegerId()', () => { + expect(isIntegerId('0')).toBe(true); + expect(isIntegerId('1')).toBe(true); + expect(isIntegerId('508107650')).toBe(true); + expect(isIntegerId('-1764036199')).toBe(true); + expect(isIntegerId('106801667066418367')).toBe(true); + expect(isIntegerId('9v5bmRalQvjOy0ECcC')).toBe(false); + expect(isIntegerId(null)).toBe(false); + expect(isIntegerId(undefined)).toBe(false); +}); + +describe('shortNumberFormat', () => { + test('handles non-numbers', () => { + render(
{shortNumberFormat('not-number')}
, null, null); + expect(screen.getByTestId('num')).toHaveTextContent('•'); + }); + + test('formats numbers under 1,000', () => { + render(
{shortNumberFormat(555)}
, null, null); + expect(screen.getByTestId('num')).toHaveTextContent('555'); + }); + + test('formats numbers under 1,000,000', () => { + render(
{shortNumberFormat(5555)}
, null, null); + expect(screen.getByTestId('num')).toHaveTextContent('5.6K'); + }); + + test('formats numbers over 1,000,000', () => { + render(
{shortNumberFormat(5555555)}
, null, null); + expect(screen.getByTestId('num')).toHaveTextContent('5.6M'); + }); +}); diff --git a/app/soapbox/utils/numbers.tsx b/app/soapbox/utils/numbers.tsx index 457b69f844..ba5e3cbe40 100644 --- a/app/soapbox/utils/numbers.tsx +++ b/app/soapbox/utils/numbers.tsx @@ -10,8 +10,10 @@ export const shortNumberFormat = (number: any): React.ReactNode => { if (number < 1000) { return ; - } else { + } else if (number < 1000000) { return K; + } else { + return M; } };