@adtrackify/at-service-common 3.2.31 → 3.2.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/__tests__/libs/currency.spec.js +77 -19
- package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/cjs/__tests__/libs/numbers.spec.d.ts +1 -0
- package/dist/cjs/__tests__/libs/numbers.spec.js +262 -0
- package/dist/cjs/__tests__/libs/numbers.spec.js.map +1 -0
- package/dist/cjs/libs/currency.d.ts +1 -1
- package/dist/cjs/libs/currency.js +5 -4
- package/dist/cjs/libs/currency.js.map +1 -1
- package/dist/cjs/libs/index.d.ts +1 -0
- package/dist/cjs/libs/index.js +1 -0
- package/dist/cjs/libs/index.js.map +1 -1
- package/dist/cjs/libs/numbers.d.ts +1 -0
- package/dist/cjs/libs/numbers.js +16 -0
- package/dist/cjs/libs/numbers.js.map +1 -0
- package/dist/esm/__tests__/libs/currency.spec.js +77 -19
- package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/esm/__tests__/libs/numbers.spec.d.ts +1 -0
- package/dist/esm/__tests__/libs/numbers.spec.js +260 -0
- package/dist/esm/__tests__/libs/numbers.spec.js.map +1 -0
- package/dist/esm/libs/currency.d.ts +1 -1
- package/dist/esm/libs/currency.js +5 -4
- package/dist/esm/libs/currency.js.map +1 -1
- package/dist/esm/libs/index.d.ts +1 -0
- package/dist/esm/libs/index.js +1 -0
- package/dist/esm/libs/index.js.map +1 -1
- package/dist/esm/libs/numbers.d.ts +1 -0
- package/dist/esm/libs/numbers.js +12 -0
- package/dist/esm/libs/numbers.js.map +1 -0
- package/package.json +1 -1
|
@@ -15,7 +15,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
15
15
|
const fromCurrency = 'USD';
|
|
16
16
|
const toCurrency = 'EUR';
|
|
17
17
|
const exchangeRate = 0.85;
|
|
18
|
-
const result = convertAmountBetweenCurrencies(
|
|
18
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
19
19
|
expect(result).toBe(85.00);
|
|
20
20
|
});
|
|
21
21
|
it('should convert EUR to USD with exchange rate', () => {
|
|
@@ -23,7 +23,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
23
23
|
const fromCurrency = 'EUR';
|
|
24
24
|
const toCurrency = 'USD';
|
|
25
25
|
const exchangeRate = 1.18;
|
|
26
|
-
const result = convertAmountBetweenCurrencies(
|
|
26
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
27
27
|
expect(result).toBe(118.00);
|
|
28
28
|
});
|
|
29
29
|
it('should handle decimal amounts correctly', () => {
|
|
@@ -31,7 +31,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
31
31
|
const fromCurrency = 'USD';
|
|
32
32
|
const toCurrency = 'EUR';
|
|
33
33
|
const exchangeRate = 0.92;
|
|
34
|
-
const result = convertAmountBetweenCurrencies(
|
|
34
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
35
35
|
expect(result).toBe(113.57);
|
|
36
36
|
});
|
|
37
37
|
it('should round result to 2 decimal places', () => {
|
|
@@ -39,7 +39,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
39
39
|
const fromCurrency = 'USD';
|
|
40
40
|
const toCurrency = 'EUR';
|
|
41
41
|
const exchangeRate = 0.333333;
|
|
42
|
-
const result = convertAmountBetweenCurrencies(
|
|
42
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
43
43
|
expect(result).toBe(33.33);
|
|
44
44
|
});
|
|
45
45
|
it('should handle zero amount', () => {
|
|
@@ -47,7 +47,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
47
47
|
const fromCurrency = 'USD';
|
|
48
48
|
const toCurrency = 'EUR';
|
|
49
49
|
const exchangeRate = 0.85;
|
|
50
|
-
const result = convertAmountBetweenCurrencies(
|
|
50
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
51
51
|
expect(result).toBe(0.00);
|
|
52
52
|
});
|
|
53
53
|
it('should handle exchange rate of 1', () => {
|
|
@@ -55,7 +55,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
55
55
|
const fromCurrency = 'USD';
|
|
56
56
|
const toCurrency = 'USD';
|
|
57
57
|
const exchangeRate = 1.0;
|
|
58
|
-
const result = convertAmountBetweenCurrencies(
|
|
58
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
59
59
|
expect(result).toBe(100.00);
|
|
60
60
|
});
|
|
61
61
|
it('should handle very small amounts', () => {
|
|
@@ -63,7 +63,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
63
63
|
const fromCurrency = 'USD';
|
|
64
64
|
const toCurrency = 'EUR';
|
|
65
65
|
const exchangeRate = 0.85;
|
|
66
|
-
const result = convertAmountBetweenCurrencies(
|
|
66
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
67
67
|
expect(result).toBe(0.01);
|
|
68
68
|
});
|
|
69
69
|
it('should handle large amounts', () => {
|
|
@@ -71,7 +71,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
71
71
|
const fromCurrency = 'USD';
|
|
72
72
|
const toCurrency = 'EUR';
|
|
73
73
|
const exchangeRate = 0.85;
|
|
74
|
-
const result = convertAmountBetweenCurrencies(
|
|
74
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
75
75
|
expect(result).toBe(850000.00);
|
|
76
76
|
});
|
|
77
77
|
});
|
|
@@ -81,7 +81,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
81
81
|
const fromCurrency = 'USD';
|
|
82
82
|
const toCurrency = 'EUR';
|
|
83
83
|
const exchangeRate = NaN;
|
|
84
|
-
const result = convertAmountBetweenCurrencies(
|
|
84
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
85
85
|
expect(result).toBeUndefined();
|
|
86
86
|
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
87
87
|
amount,
|
|
@@ -95,7 +95,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
95
95
|
const fromCurrency = 'USD';
|
|
96
96
|
const toCurrency = 'EUR';
|
|
97
97
|
const exchangeRate = Infinity;
|
|
98
|
-
const result = convertAmountBetweenCurrencies(
|
|
98
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
99
99
|
expect(result).toBeUndefined();
|
|
100
100
|
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
101
101
|
amount,
|
|
@@ -104,6 +104,48 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
104
104
|
exchangeRate: Infinity,
|
|
105
105
|
});
|
|
106
106
|
});
|
|
107
|
+
it('should return undefined when amount is empty', () => {
|
|
108
|
+
const amount = '';
|
|
109
|
+
const fromCurrency = 'USD';
|
|
110
|
+
const toCurrency = 'EUR';
|
|
111
|
+
const exchangeRate = 0.85;
|
|
112
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
113
|
+
expect(result).toBeUndefined();
|
|
114
|
+
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
115
|
+
amount,
|
|
116
|
+
fromCurrency,
|
|
117
|
+
toCurrency,
|
|
118
|
+
exchangeRate: 0.85,
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
it('should return undefined when amount is null', () => {
|
|
122
|
+
const amount = null;
|
|
123
|
+
const fromCurrency = 'USD';
|
|
124
|
+
const toCurrency = 'EUR';
|
|
125
|
+
const exchangeRate = null;
|
|
126
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
127
|
+
expect(result).toBeUndefined();
|
|
128
|
+
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
129
|
+
amount,
|
|
130
|
+
fromCurrency,
|
|
131
|
+
toCurrency,
|
|
132
|
+
exchangeRate: null,
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
it('should return undefined when amount is undefined', () => {
|
|
136
|
+
const amount = undefined;
|
|
137
|
+
const fromCurrency = 'USD';
|
|
138
|
+
const toCurrency = 'EUR';
|
|
139
|
+
const exchangeRate = 0.85;
|
|
140
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
141
|
+
expect(result).toBeUndefined();
|
|
142
|
+
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
143
|
+
amount,
|
|
144
|
+
fromCurrency,
|
|
145
|
+
toCurrency,
|
|
146
|
+
exchangeRate: 0.85,
|
|
147
|
+
});
|
|
148
|
+
});
|
|
107
149
|
});
|
|
108
150
|
describe('edge cases', () => {
|
|
109
151
|
it('should handle very small exchange rates', () => {
|
|
@@ -111,7 +153,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
111
153
|
const fromCurrency = 'USD';
|
|
112
154
|
const toCurrency = 'JPY';
|
|
113
155
|
const exchangeRate = 0.001;
|
|
114
|
-
const result = convertAmountBetweenCurrencies(
|
|
156
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
115
157
|
expect(result).toBe(0.10);
|
|
116
158
|
});
|
|
117
159
|
it('should handle very large exchange rates', () => {
|
|
@@ -119,7 +161,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
119
161
|
const fromCurrency = 'JPY';
|
|
120
162
|
const toCurrency = 'USD';
|
|
121
163
|
const exchangeRate = 1000;
|
|
122
|
-
const result = convertAmountBetweenCurrencies(
|
|
164
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
123
165
|
expect(result).toBe(1000.00);
|
|
124
166
|
});
|
|
125
167
|
it('should handle zero exchange rate', () => {
|
|
@@ -127,7 +169,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
127
169
|
const fromCurrency = 'USD';
|
|
128
170
|
const toCurrency = 'EUR';
|
|
129
171
|
const exchangeRate = 0;
|
|
130
|
-
const result = convertAmountBetweenCurrencies(
|
|
172
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
131
173
|
expect(result).toBe(0.00);
|
|
132
174
|
});
|
|
133
175
|
it('should handle different currency codes', () => {
|
|
@@ -135,7 +177,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
135
177
|
const fromCurrency = 'GBP';
|
|
136
178
|
const toCurrency = 'CAD';
|
|
137
179
|
const exchangeRate = 1.75;
|
|
138
|
-
const result = convertAmountBetweenCurrencies(
|
|
180
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
139
181
|
expect(result).toBe(87.50);
|
|
140
182
|
});
|
|
141
183
|
});
|
|
@@ -145,16 +187,32 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
145
187
|
const fromCurrency = 'USD';
|
|
146
188
|
const toCurrency = 'EUR';
|
|
147
189
|
const exchangeRate = 0.85;
|
|
148
|
-
const result = convertAmountBetweenCurrencies(
|
|
190
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
149
191
|
expect(result).toBe(0.28);
|
|
150
192
|
});
|
|
151
193
|
it('should handle Big.js with high precision exchange rate', () => {
|
|
152
|
-
const amount =
|
|
194
|
+
const amount = '1931305.25';
|
|
153
195
|
const fromCurrency = 'USD';
|
|
154
196
|
const toCurrency = 'EUR';
|
|
155
|
-
const exchangeRate =
|
|
156
|
-
const result = convertAmountBetweenCurrencies(
|
|
157
|
-
expect(result).toBe(
|
|
197
|
+
const exchangeRate = 1.165772907437631;
|
|
198
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
199
|
+
expect(result).toBe(2251463.34);
|
|
200
|
+
});
|
|
201
|
+
it('should handle Big.js with high precision exchange rate', () => {
|
|
202
|
+
const amount = '6809633.24';
|
|
203
|
+
const fromCurrency = 'CAD';
|
|
204
|
+
const toCurrency = 'USD';
|
|
205
|
+
const exchangeRate = 0.7276431637924762;
|
|
206
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
207
|
+
expect(result).toBe(4954983.08);
|
|
208
|
+
});
|
|
209
|
+
it('should handle Big.js with high precision exchange rate', () => {
|
|
210
|
+
const amount = '81.1723990090352666861';
|
|
211
|
+
const fromCurrency = 'CAD';
|
|
212
|
+
const toCurrency = 'USD';
|
|
213
|
+
const exchangeRate = 0.6520179956966812;
|
|
214
|
+
const result = convertAmountBetweenCurrencies(fromCurrency, toCurrency, amount, exchangeRate);
|
|
215
|
+
expect(result).toBe(52.93);
|
|
158
216
|
});
|
|
159
217
|
});
|
|
160
218
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,8BAA8B,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAEvC,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAAC,CAAC;IAChC,MAAM,EAAE;QACN,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE;KACjB;CACF,CAAC,CAAC,CAAC;AAEJ,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,MAAM,GAAG,MAAM,CAAC;YACtB,MAAM,YAAY,GAAG,KAAK,CAAC;YAC3B,MAAM,UAAU,GAAG,KAAK,CAAC;YACzB,MAAM,YAAY,GAAG,IAAI,CAAC;YAE1B,MAAM,MAAM,GAAG,8BAA8B,CAAC,
|
|
1
|
+
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
import { isValidNumber } from '../../libs/numbers';
|
|
2
|
+
describe('isValidNumber', () => {
|
|
3
|
+
describe('should return true for valid numbers', () => {
|
|
4
|
+
it('should accept positive integers', () => {
|
|
5
|
+
expect(isValidNumber(0)).toBe(true);
|
|
6
|
+
expect(isValidNumber(1)).toBe(true);
|
|
7
|
+
expect(isValidNumber(42)).toBe(true);
|
|
8
|
+
expect(isValidNumber(1000000)).toBe(true);
|
|
9
|
+
});
|
|
10
|
+
it('should accept negative integers', () => {
|
|
11
|
+
expect(isValidNumber(-1)).toBe(true);
|
|
12
|
+
expect(isValidNumber(-42)).toBe(true);
|
|
13
|
+
expect(isValidNumber(-1000000)).toBe(true);
|
|
14
|
+
});
|
|
15
|
+
it('should accept positive floats', () => {
|
|
16
|
+
expect(isValidNumber(3.14)).toBe(true);
|
|
17
|
+
expect(isValidNumber(0.5)).toBe(true);
|
|
18
|
+
expect(isValidNumber(1.0)).toBe(true);
|
|
19
|
+
expect(isValidNumber(0.000001)).toBe(true);
|
|
20
|
+
});
|
|
21
|
+
it('should accept negative floats', () => {
|
|
22
|
+
expect(isValidNumber(-3.14)).toBe(true);
|
|
23
|
+
expect(isValidNumber(-0.5)).toBe(true);
|
|
24
|
+
expect(isValidNumber(-1.0)).toBe(true);
|
|
25
|
+
expect(isValidNumber(-0.000001)).toBe(true);
|
|
26
|
+
});
|
|
27
|
+
it('should accept numeric strings', () => {
|
|
28
|
+
expect(isValidNumber('0')).toBe(true);
|
|
29
|
+
expect(isValidNumber('42')).toBe(true);
|
|
30
|
+
expect(isValidNumber('-42')).toBe(true);
|
|
31
|
+
expect(isValidNumber('3.14')).toBe(true);
|
|
32
|
+
expect(isValidNumber('-3.14')).toBe(true);
|
|
33
|
+
expect(isValidNumber('1e5')).toBe(true);
|
|
34
|
+
expect(isValidNumber('-1e5')).toBe(true);
|
|
35
|
+
expect(isValidNumber('1.5e3')).toBe(true);
|
|
36
|
+
});
|
|
37
|
+
it('should accept scientific notation', () => {
|
|
38
|
+
expect(isValidNumber(1e5)).toBe(true);
|
|
39
|
+
expect(isValidNumber(-1e5)).toBe(true);
|
|
40
|
+
expect(isValidNumber(1.5e3)).toBe(true);
|
|
41
|
+
expect(isValidNumber('1e5')).toBe(true);
|
|
42
|
+
expect(isValidNumber('-1e5')).toBe(true);
|
|
43
|
+
});
|
|
44
|
+
it('should accept Number.MAX_SAFE_INTEGER and Number.MIN_SAFE_INTEGER', () => {
|
|
45
|
+
expect(isValidNumber(Number.MAX_SAFE_INTEGER)).toBe(true);
|
|
46
|
+
expect(isValidNumber(Number.MIN_SAFE_INTEGER)).toBe(true);
|
|
47
|
+
});
|
|
48
|
+
it('should accept Number.MAX_VALUE and Number.MIN_VALUE', () => {
|
|
49
|
+
expect(isValidNumber(Number.MAX_VALUE)).toBe(true);
|
|
50
|
+
expect(isValidNumber(Number.MIN_VALUE)).toBe(true);
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
describe('should return false for invalid inputs', () => {
|
|
54
|
+
it('should reject null', () => {
|
|
55
|
+
expect(isValidNumber(null)).toBe(false);
|
|
56
|
+
});
|
|
57
|
+
it('should reject undefined', () => {
|
|
58
|
+
expect(isValidNumber(undefined)).toBe(false);
|
|
59
|
+
});
|
|
60
|
+
it('should reject booleans', () => {
|
|
61
|
+
expect(isValidNumber(true)).toBe(false);
|
|
62
|
+
expect(isValidNumber(false)).toBe(false);
|
|
63
|
+
});
|
|
64
|
+
it('should reject empty strings', () => {
|
|
65
|
+
expect(isValidNumber('')).toBe(false);
|
|
66
|
+
});
|
|
67
|
+
it('should reject whitespace-only strings', () => {
|
|
68
|
+
expect(isValidNumber(' ')).toBe(false);
|
|
69
|
+
expect(isValidNumber('\t')).toBe(false);
|
|
70
|
+
expect(isValidNumber('\n')).toBe(false);
|
|
71
|
+
expect(isValidNumber('\r')).toBe(false);
|
|
72
|
+
expect(isValidNumber(' ')).toBe(false);
|
|
73
|
+
expect(isValidNumber('\t\n\r')).toBe(false);
|
|
74
|
+
});
|
|
75
|
+
it('should reject non-numeric strings', () => {
|
|
76
|
+
expect(isValidNumber('hello')).toBe(false);
|
|
77
|
+
expect(isValidNumber('abc123')).toBe(false);
|
|
78
|
+
expect(isValidNumber('123abc')).toBe(false);
|
|
79
|
+
expect(isValidNumber('12.34.56')).toBe(false);
|
|
80
|
+
expect(isValidNumber('12e')).toBe(false);
|
|
81
|
+
expect(isValidNumber('e12')).toBe(false);
|
|
82
|
+
expect(isValidNumber('12e.')).toBe(false);
|
|
83
|
+
expect(isValidNumber('.12e')).toBe(false);
|
|
84
|
+
});
|
|
85
|
+
it('should reject NaN', () => {
|
|
86
|
+
expect(isValidNumber(NaN)).toBe(false);
|
|
87
|
+
expect(isValidNumber('NaN')).toBe(false);
|
|
88
|
+
});
|
|
89
|
+
it('should reject Infinity', () => {
|
|
90
|
+
expect(isValidNumber(Infinity)).toBe(false);
|
|
91
|
+
expect(isValidNumber(-Infinity)).toBe(false);
|
|
92
|
+
expect(isValidNumber('Infinity')).toBe(false);
|
|
93
|
+
expect(isValidNumber('-Infinity')).toBe(false);
|
|
94
|
+
});
|
|
95
|
+
it('should reject objects', () => {
|
|
96
|
+
expect(isValidNumber({})).toBe(false);
|
|
97
|
+
expect(isValidNumber({ a: 1 })).toBe(false);
|
|
98
|
+
expect(isValidNumber([])).toBe(false);
|
|
99
|
+
expect(isValidNumber([1, 2, 3])).toBe(false);
|
|
100
|
+
expect(isValidNumber(new Date())).toBe(false);
|
|
101
|
+
expect(isValidNumber(new RegExp(''))).toBe(false);
|
|
102
|
+
});
|
|
103
|
+
it('should reject functions', () => {
|
|
104
|
+
expect(isValidNumber(() => { })).toBe(false);
|
|
105
|
+
expect(isValidNumber(function () { })).toBe(false);
|
|
106
|
+
expect(isValidNumber(() => 42)).toBe(false);
|
|
107
|
+
});
|
|
108
|
+
it('should reject symbols', () => {
|
|
109
|
+
expect(isValidNumber(Symbol())).toBe(false);
|
|
110
|
+
expect(isValidNumber(Symbol('test'))).toBe(false);
|
|
111
|
+
});
|
|
112
|
+
it('should reject complex numeric strings', () => {
|
|
113
|
+
expect(isValidNumber('12.34.56')).toBe(false);
|
|
114
|
+
expect(isValidNumber('12e.')).toBe(false);
|
|
115
|
+
expect(isValidNumber('.12e')).toBe(false);
|
|
116
|
+
expect(isValidNumber('12e.34')).toBe(false);
|
|
117
|
+
expect(isValidNumber('12.34e')).toBe(false);
|
|
118
|
+
expect(isValidNumber('12e34e')).toBe(false);
|
|
119
|
+
expect(isValidNumber('12e34.56')).toBe(false);
|
|
120
|
+
});
|
|
121
|
+
it('should reject strings with leading/trailing spaces', () => {
|
|
122
|
+
expect(isValidNumber(' 42')).toBe(false);
|
|
123
|
+
expect(isValidNumber('42 ')).toBe(false);
|
|
124
|
+
expect(isValidNumber(' 42 ')).toBe(false);
|
|
125
|
+
expect(isValidNumber('\t42')).toBe(false);
|
|
126
|
+
expect(isValidNumber('42\n')).toBe(false);
|
|
127
|
+
});
|
|
128
|
+
it('should reject strings with multiple decimal points', () => {
|
|
129
|
+
expect(isValidNumber('12.34.56')).toBe(false);
|
|
130
|
+
expect(isValidNumber('12..34')).toBe(false);
|
|
131
|
+
expect(isValidNumber('.12.34')).toBe(false);
|
|
132
|
+
expect(isValidNumber('12.34.')).toBe(false);
|
|
133
|
+
});
|
|
134
|
+
it('should reject strings with invalid scientific notation', () => {
|
|
135
|
+
expect(isValidNumber('12e')).toBe(false);
|
|
136
|
+
expect(isValidNumber('12e.')).toBe(false);
|
|
137
|
+
expect(isValidNumber('12e.34')).toBe(false);
|
|
138
|
+
expect(isValidNumber('12.34e')).toBe(false);
|
|
139
|
+
expect(isValidNumber('12e34e')).toBe(false);
|
|
140
|
+
expect(isValidNumber('12e34.56')).toBe(false);
|
|
141
|
+
expect(isValidNumber('e12')).toBe(false);
|
|
142
|
+
expect(isValidNumber('12e+')).toBe(false);
|
|
143
|
+
expect(isValidNumber('12e-')).toBe(false);
|
|
144
|
+
});
|
|
145
|
+
it('should reject strings with letters in wrong places', () => {
|
|
146
|
+
expect(isValidNumber('12a34')).toBe(false);
|
|
147
|
+
expect(isValidNumber('a1234')).toBe(false);
|
|
148
|
+
expect(isValidNumber('1234a')).toBe(false);
|
|
149
|
+
expect(isValidNumber('12.34a')).toBe(false);
|
|
150
|
+
expect(isValidNumber('a12.34')).toBe(false);
|
|
151
|
+
});
|
|
152
|
+
it('should reject special numeric values as strings', () => {
|
|
153
|
+
expect(isValidNumber('NaN')).toBe(false);
|
|
154
|
+
expect(isValidNumber('Infinity')).toBe(false);
|
|
155
|
+
expect(isValidNumber('-Infinity')).toBe(false);
|
|
156
|
+
expect(isValidNumber('undefined')).toBe(false);
|
|
157
|
+
expect(isValidNumber('null')).toBe(false);
|
|
158
|
+
});
|
|
159
|
+
it('should reject edge case strings', () => {
|
|
160
|
+
expect(isValidNumber('0x123')).toBe(false);
|
|
161
|
+
expect(isValidNumber('0b101')).toBe(false);
|
|
162
|
+
expect(isValidNumber('0o123')).toBe(false);
|
|
163
|
+
expect(isValidNumber('1,234')).toBe(false);
|
|
164
|
+
expect(isValidNumber('1 234')).toBe(false);
|
|
165
|
+
expect(isValidNumber('1_234')).toBe(false);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
describe('edge cases and potential breaking scenarios', () => {
|
|
169
|
+
it('should handle Number constructor edge cases', () => {
|
|
170
|
+
expect(isValidNumber('0x123')).toBe(false);
|
|
171
|
+
expect(isValidNumber('0b101')).toBe(false);
|
|
172
|
+
expect(isValidNumber('0o123')).toBe(false);
|
|
173
|
+
});
|
|
174
|
+
it('should handle very large numbers', () => {
|
|
175
|
+
expect(isValidNumber(Number.MAX_SAFE_INTEGER + 1)).toBe(true);
|
|
176
|
+
expect(isValidNumber(Number.MAX_SAFE_INTEGER - 1)).toBe(true);
|
|
177
|
+
});
|
|
178
|
+
it('should handle very small numbers', () => {
|
|
179
|
+
expect(isValidNumber(Number.MIN_VALUE / 2)).toBe(true);
|
|
180
|
+
expect(isValidNumber(Number.MIN_VALUE)).toBe(true);
|
|
181
|
+
});
|
|
182
|
+
it('should handle precision issues', () => {
|
|
183
|
+
expect(isValidNumber(0.1 + 0.2)).toBe(true);
|
|
184
|
+
expect(isValidNumber(0.1 + 0.2 === 0.3)).toBe(false);
|
|
185
|
+
});
|
|
186
|
+
it('should handle string coercion edge cases', () => {
|
|
187
|
+
expect(isValidNumber('0')).toBe(true);
|
|
188
|
+
expect(isValidNumber('000')).toBe(true);
|
|
189
|
+
expect(isValidNumber('00.00')).toBe(true);
|
|
190
|
+
expect(isValidNumber('+42')).toBe(false);
|
|
191
|
+
expect(isValidNumber('+3.14')).toBe(false);
|
|
192
|
+
});
|
|
193
|
+
it('should handle multiple decimal points', () => {
|
|
194
|
+
expect(isValidNumber('12.34.56')).toBe(false);
|
|
195
|
+
expect(isValidNumber('12..34')).toBe(false);
|
|
196
|
+
expect(isValidNumber('.12.34')).toBe(false);
|
|
197
|
+
});
|
|
198
|
+
it('should handle invalid scientific notation', () => {
|
|
199
|
+
expect(isValidNumber('12e')).toBe(false);
|
|
200
|
+
expect(isValidNumber('12e.')).toBe(false);
|
|
201
|
+
expect(isValidNumber('e12')).toBe(false);
|
|
202
|
+
expect(isValidNumber('12e+')).toBe(false);
|
|
203
|
+
expect(isValidNumber('12e-')).toBe(false);
|
|
204
|
+
});
|
|
205
|
+
it('should handle mixed content strings', () => {
|
|
206
|
+
expect(isValidNumber('12abc')).toBe(false);
|
|
207
|
+
expect(isValidNumber('abc12')).toBe(false);
|
|
208
|
+
expect(isValidNumber('12.34abc')).toBe(false);
|
|
209
|
+
expect(isValidNumber('abc12.34')).toBe(false);
|
|
210
|
+
});
|
|
211
|
+
it('should handle special characters in strings', () => {
|
|
212
|
+
expect(isValidNumber('12$34')).toBe(false);
|
|
213
|
+
expect(isValidNumber('12%34')).toBe(false);
|
|
214
|
+
expect(isValidNumber('12#34')).toBe(false);
|
|
215
|
+
expect(isValidNumber('12@34')).toBe(false);
|
|
216
|
+
});
|
|
217
|
+
it('should handle unicode characters', () => {
|
|
218
|
+
expect(isValidNumber('12\u00A034')).toBe(false);
|
|
219
|
+
expect(isValidNumber('12\u200034')).toBe(false);
|
|
220
|
+
expect(isValidNumber('12\u300034')).toBe(false);
|
|
221
|
+
});
|
|
222
|
+
it('should handle control characters', () => {
|
|
223
|
+
expect(isValidNumber('12\x0034')).toBe(false);
|
|
224
|
+
expect(isValidNumber('12\x0134')).toBe(false);
|
|
225
|
+
expect(isValidNumber('12\x1B34')).toBe(false);
|
|
226
|
+
});
|
|
227
|
+
it('should handle very long strings', () => {
|
|
228
|
+
const longString = '1'.repeat(1000);
|
|
229
|
+
expect(isValidNumber(longString)).toBe(true);
|
|
230
|
+
const longInvalidString = 'a'.repeat(1000);
|
|
231
|
+
expect(isValidNumber(longInvalidString)).toBe(false);
|
|
232
|
+
});
|
|
233
|
+
it('should handle strings with multiple signs', () => {
|
|
234
|
+
expect(isValidNumber('++42')).toBe(false);
|
|
235
|
+
expect(isValidNumber('--42')).toBe(false);
|
|
236
|
+
expect(isValidNumber('+-42')).toBe(false);
|
|
237
|
+
expect(isValidNumber('-+42')).toBe(false);
|
|
238
|
+
expect(isValidNumber('+42+')).toBe(false);
|
|
239
|
+
expect(isValidNumber('-42-')).toBe(false);
|
|
240
|
+
});
|
|
241
|
+
it('should handle decimal-only strings', () => {
|
|
242
|
+
expect(isValidNumber('.42')).toBe(true);
|
|
243
|
+
expect(isValidNumber('-.42')).toBe(true);
|
|
244
|
+
expect(isValidNumber('42.')).toBe(true);
|
|
245
|
+
expect(isValidNumber('-42.')).toBe(true);
|
|
246
|
+
expect(isValidNumber('.')).toBe(false);
|
|
247
|
+
expect(isValidNumber('..')).toBe(false);
|
|
248
|
+
});
|
|
249
|
+
it('should handle exponential notation edge cases', () => {
|
|
250
|
+
expect(isValidNumber('1e+5')).toBe(true);
|
|
251
|
+
expect(isValidNumber('1e-5')).toBe(true);
|
|
252
|
+
expect(isValidNumber('1E+5')).toBe(true);
|
|
253
|
+
expect(isValidNumber('1E-5')).toBe(true);
|
|
254
|
+
expect(isValidNumber('1e++5')).toBe(false);
|
|
255
|
+
expect(isValidNumber('1e--5')).toBe(false);
|
|
256
|
+
expect(isValidNumber('1e+-5')).toBe(false);
|
|
257
|
+
});
|
|
258
|
+
});
|
|
259
|
+
});
|
|
260
|
+
//# sourceMappingURL=numbers.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/numbers.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare const convertAmountBetweenCurrencies: (
|
|
1
|
+
export declare const convertAmountBetweenCurrencies: (fromCurrency: string, toCurrency: string, amount: number, exchangeRate: number) => number | undefined;
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import Big from 'big.js';
|
|
2
2
|
import { Logger } from '../helpers';
|
|
3
|
-
|
|
3
|
+
import { isValidNumber } from './numbers';
|
|
4
|
+
export const convertAmountBetweenCurrencies = (fromCurrency, toCurrency, amount, exchangeRate) => {
|
|
4
5
|
try {
|
|
5
|
-
if (
|
|
6
|
-
Logger.error('Amount and exchange rate must be valid numbers', {
|
|
6
|
+
if (!isValidNumber(amount) || !isValidNumber(exchangeRate)) {
|
|
7
|
+
Logger.error('Amount and exchange rate must be valid numbers', { fromCurrency, toCurrency, amount, exchangeRate });
|
|
7
8
|
return undefined;
|
|
8
9
|
}
|
|
9
10
|
const exchangeRateBig = Big(exchangeRate);
|
|
10
11
|
return Big(amount).times(exchangeRateBig).round(2).toNumber();
|
|
11
12
|
}
|
|
12
13
|
catch (error) {
|
|
13
|
-
Logger.error('Failed to convert currency', { error,
|
|
14
|
+
Logger.error('Failed to convert currency', { error, fromCurrency, toCurrency, amount, exchangeRate });
|
|
14
15
|
return undefined;
|
|
15
16
|
}
|
|
16
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/libs/currency.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/libs/currency.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,QAAQ,CAAC;AACzB,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,YAAoB,EAAE,UAAkB,EAAE,MAAc,EAAE,YAAoB,EAAsB,EAAE;IACnJ,IAAI;QACF,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,EAAE;YAC1D,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;YACnH,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,eAAe,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC/D;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;QACtG,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAA"}
|
package/dist/esm/libs/index.d.ts
CHANGED
package/dist/esm/libs/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/libs/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,aAAa,CAAC;AAC5B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC;AAChC,cAAc,wBAAwB,CAAC;AACvC,cAAc,UAAU,CAAC;AACzB,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,UAAU,CAAC;AACzB,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const isValidNumber: (num: any) => boolean;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Logger } from '../helpers';
|
|
2
|
+
export const isValidNumber = (num) => {
|
|
3
|
+
try {
|
|
4
|
+
const numericRegex = /^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;
|
|
5
|
+
return numericRegex.test(num);
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
Logger.error('Failed to validate number', { error, num });
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=numbers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"numbers.js","sourceRoot":"","sources":["../../../src/libs/numbers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAEpC,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,GAAQ,EAAW,EAAE;IACjD,IAAI;QAEF,MAAM,YAAY,GAAG,sCAAsC,CAAC;QAC5D,OAAO,YAAY,CAAC,IAAI,CAAC,GAAa,CAAC,CAAC;KACzC;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC1D,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAC"}
|