pkg-components
Version:
301 lines (266 loc) • 6.12 kB
text/typescript
import { cleanValue } from '../cleanValue';
describe('cleanValue', () => {
it('should remove group separator in string', () => {
expect(
cleanValue({
value: '1,000,000',
})
).toEqual('1000000');
});
it('should handle period decimal separator in string', () => {
expect(
cleanValue({
value: '1.000.000,12',
decimalSeparator: ',',
groupSeparator: '.',
})
).toEqual('1000000,12');
});
it('should remove prefix', () => {
expect(
cleanValue({
value: '£1000000',
prefix: '£',
})
).toEqual('1000000');
expect(
cleanValue({
value: '$5.5',
prefix: '$',
})
).toEqual('5.5');
expect(
cleanValue({
value: '$ 1.5',
prefix: '$ ',
})
).toEqual('1.5');
expect(
cleanValue({
value: 'JMD5.5',
prefix: 'JMD',
})
).toEqual('5.5');
expect(
cleanValue({
value: 'Value: 1.5',
prefix: 'Value: ',
})
).toEqual('1.5');
});
it('should remove suffix', () => {
expect(
cleanValue({
value: '123 €',
})
).toEqual('123');
expect(
cleanValue({
groupSeparator: '.',
decimalSeparator: ',',
value: '123.456,99 €',
})
).toEqual('123456,99');
});
it('should remove extra decimals', () => {
expect(
cleanValue({
value: '100.0000',
})
).toEqual('100.00');
});
it('should remove decimals if not allowed', () => {
expect(
cleanValue({
value: '100.0000',
allowDecimals: false,
decimalsLimit: 0,
})
).toEqual('100');
});
it('should include decimals if allowed', () => {
expect(
cleanValue({
value: '100.123',
allowDecimals: true,
decimalsLimit: 0,
})
).toEqual('100.123');
});
it('should format value', () => {
expect(
cleanValue({
value: '£1,234,567.89',
prefix: '£',
})
).toEqual('1234567.89');
});
describe('negative values', () => {
it('should handle negative value', () => {
expect(
cleanValue({
value: '-£1,000',
decimalSeparator: '.',
groupSeparator: ',',
allowDecimals: true,
decimalsLimit: 2,
prefix: '£',
})
).toEqual('-1000');
});
it('should handle negative value with intl with prefix', () => {
expect(
cleanValue({
value: '€\xa0-123',
prefix: '€',
})
).toEqual('-123');
});
it('should handle negative value with decimal', () => {
expect(
cleanValue({
value: '-£99,999.99',
decimalSeparator: '.',
groupSeparator: ',',
allowDecimals: true,
decimalsLimit: 2,
prefix: '£',
})
).toEqual('-99999.99');
});
it('should handle negative value with group separator', () => {
expect(
cleanValue({
value: '-£99-999.99',
decimalSeparator: '.',
groupSeparator: '-',
allowDecimals: true,
decimalsLimit: 2,
prefix: '£',
})
).toEqual('-99999.99');
});
it('should handle not allow negative value if allowNegativeValue is false', () => {
expect(
cleanValue({
value: '-£1,000',
decimalSeparator: '.',
groupSeparator: ',',
allowDecimals: true,
decimalsLimit: 2,
allowNegativeValue: false,
prefix: '£',
})
).toEqual('1000');
});
});
it('should handle values placed before prefix', () => {
expect(
cleanValue({
value: '2£1',
prefix: '£',
})
).toEqual('12');
expect(
cleanValue({
value: '-2£1',
prefix: '£',
})
).toEqual('-12');
expect(
cleanValue({
value: '2-£1',
prefix: '£',
})
).toEqual('-12');
expect(
cleanValue({
value: '2-£1.99',
prefix: '£',
decimalsLimit: 5,
})
).toEqual('-1.992');
});
describe('abbreviations', () => {
it('should return empty string if abbreviation only', () => {
expect(
cleanValue({
value: 'k',
disableAbbreviations: false,
})
).toEqual('');
expect(
cleanValue({
value: 'm',
disableAbbreviations: false,
})
).toEqual('');
expect(
cleanValue({
value: 'b',
disableAbbreviations: false,
})
).toEqual('');
});
it('should return empty string if prefix and abbreviation only', () => {
expect(
cleanValue({
value: '$k',
prefix: '$',
disableAbbreviations: false,
})
).toEqual('');
expect(
cleanValue({
value: '£m',
prefix: '£',
disableAbbreviations: false,
})
).toEqual('');
});
it('should return empty string if decimal separator and abbreviation only', () => {
expect(
cleanValue({
value: '.k',
})
).toEqual('');
expect(
cleanValue({
value: '.m',
})
).toEqual('');
expect(
cleanValue({
value: '£.m',
prefix: '£',
})
).toEqual('');
});
it('should ignore abbreviations if disableAbbreviations is true', () => {
expect(
cleanValue({
value: '1k',
disableAbbreviations: true,
})
).toEqual('1');
expect(
cleanValue({
value: '-2k',
disableAbbreviations: true,
})
).toEqual('-2');
expect(
cleanValue({
value: '25.6m',
disableAbbreviations: true,
})
).toEqual('25.6');
expect(
cleanValue({
value: '9b',
disableAbbreviations: true,
})
).toEqual('9');
});
});
});