mirror of https://github.com/ghostfolio/ghostfolio
				
				
			
			You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							119 lines
						
					
					
						
							3.6 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							119 lines
						
					
					
						
							3.6 KiB
						
					
					
				
								import {
							 | 
						|
								  extractNumberFromString,
							 | 
						|
								  getNumberFormatGroup
							 | 
						|
								} from '@ghostfolio/common/helper';
							 | 
						|
								
							 | 
						|
								describe('Helper', () => {
							 | 
						|
								  describe('Extract number from string', () => {
							 | 
						|
								    it('Get decimal number', () => {
							 | 
						|
								      expect(extractNumberFromString({ value: '999.99' })).toEqual(999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number (with spaces)', () => {
							 | 
						|
								      expect(extractNumberFromString({ value: ' 999.99 ' })).toEqual(999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number (with currency)', () => {
							 | 
						|
								      expect(extractNumberFromString({ value: '999.99 CHF' })).toEqual(999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number (comma notation)', () => {
							 | 
						|
								      expect(
							 | 
						|
								        extractNumberFromString({ locale: 'de-DE', value: '999,99' })
							 | 
						|
								      ).toEqual(999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number with group (dot notation)', () => {
							 | 
						|
								      expect(
							 | 
						|
								        extractNumberFromString({ locale: 'de-CH', value: '99’999.99' })
							 | 
						|
								      ).toEqual(99999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number with group (comma notation)', () => {
							 | 
						|
								      expect(
							 | 
						|
								        extractNumberFromString({ locale: 'de-DE', value: '99.999,99' })
							 | 
						|
								      ).toEqual(99999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get decimal number (comma notation) for locale where currency is not grouped by default', () => {
							 | 
						|
								      expect(
							 | 
						|
								        extractNumberFromString({ locale: 'es-ES', value: '999,99' })
							 | 
						|
								      ).toEqual(999.99);
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Not a number', () => {
							 | 
						|
								      expect(extractNumberFromString({ value: 'X' })).toEqual(NaN);
							 | 
						|
								    });
							 | 
						|
								  });
							 | 
						|
								
							 | 
						|
								  describe('Get number format group', () => {
							 | 
						|
								    let languageGetter: jest.SpyInstance<string, [], any>;
							 | 
						|
								
							 | 
						|
								    beforeEach(() => {
							 | 
						|
								      languageGetter = jest.spyOn(window.navigator, 'language', 'get');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get de-CH number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('de-CH')).toEqual('’');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get de-CH number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('de-CH');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual('’');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get de-DE number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('de-DE')).toEqual('.');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get de-DE number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('de-DE');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual('.');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get en-GB number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('en-GB')).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get en-GB number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('en-GB');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get en-US number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('en-US')).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get en-US number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('en-US');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get es-ES number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('es-ES')).toEqual('.');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get es-ES number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('es-ES');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual('.');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get ru-RU number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('ru-RU')).toEqual(' ');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get ru-RU number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('ru-RU');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual(' ');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get zh-CN number format group', () => {
							 | 
						|
								      expect(getNumberFormatGroup('zh-CN')).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								
							 | 
						|
								    it('Get zh-CN number format group when it is default', () => {
							 | 
						|
								      languageGetter.mockReturnValue('zh-CN');
							 | 
						|
								      expect(getNumberFormatGroup()).toEqual(',');
							 | 
						|
								    });
							 | 
						|
								  });
							 | 
						|
								});
							 | 
						|
								
							 |