kopia lustrzana https://gitlab.com/soapbox-pub/soapbox
				
				
				
			Add support for formatting numbers in millions
							rodzic
							
								
									4363096e60
								
							
						
					
					
						commit
						49464ad4cc
					
				|  | @ -1,13 +0,0 @@ | ||||||
| import { isIntegerId } 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); |  | ||||||
|   expect(isIntegerId()).toBe(false); |  | ||||||
| }); |  | ||||||
|  | @ -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(<div data-testid='num'>{shortNumberFormat('not-number')}</div>, null, null); | ||||||
|  |     expect(screen.getByTestId('num')).toHaveTextContent('•'); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   test('formats numbers under 1,000', () => { | ||||||
|  |     render(<div data-testid='num'>{shortNumberFormat(555)}</div>, null, null); | ||||||
|  |     expect(screen.getByTestId('num')).toHaveTextContent('555'); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   test('formats numbers under 1,000,000', () => { | ||||||
|  |     render(<div data-testid='num'>{shortNumberFormat(5555)}</div>, null, null); | ||||||
|  |     expect(screen.getByTestId('num')).toHaveTextContent('5.6K'); | ||||||
|  |   }); | ||||||
|  | 
 | ||||||
|  |   test('formats numbers over 1,000,000', () => { | ||||||
|  |     render(<div data-testid='num'>{shortNumberFormat(5555555)}</div>, null, null); | ||||||
|  |     expect(screen.getByTestId('num')).toHaveTextContent('5.6M'); | ||||||
|  |   }); | ||||||
|  | }); | ||||||
|  | @ -10,8 +10,10 @@ export const shortNumberFormat = (number: any): React.ReactNode => { | ||||||
| 
 | 
 | ||||||
|   if (number < 1000) { |   if (number < 1000) { | ||||||
|     return <FormattedNumber value={number} />; |     return <FormattedNumber value={number} />; | ||||||
|   } else { |   } else if (number < 1000000) { | ||||||
|     return <span><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</span>; |     return <span><FormattedNumber value={number / 1000} maximumFractionDigits={1} />K</span>; | ||||||
|  |   } else { | ||||||
|  |     return <span><FormattedNumber value={number / 1000000} maximumFractionDigits={1} />M</span>; | ||||||
|   } |   } | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Ładowanie…
	
		Reference in New Issue
	
	 Justin
						Justin