@adtrackify/at-service-common 3.2.29 → 3.2.31
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__/helpers/account-users-helper.spec.d.ts +1 -0
- package/dist/cjs/__tests__/helpers/account-users-helper.spec.js +201 -0
- package/dist/cjs/__tests__/helpers/account-users-helper.spec.js.map +1 -0
- package/dist/cjs/__tests__/libs/currency.spec.js +22 -28
- package/dist/cjs/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/cjs/clients/internal-api/accounts-client.d.ts +1 -1
- package/dist/cjs/clients/internal-api/accounts-client.js +2 -2
- package/dist/cjs/clients/internal-api/accounts-client.js.map +1 -1
- package/dist/cjs/helpers/account-users-helper.d.ts +2 -0
- package/dist/cjs/helpers/account-users-helper.js +23 -0
- package/dist/cjs/helpers/account-users-helper.js.map +1 -0
- package/dist/cjs/helpers/index.d.ts +1 -0
- package/dist/cjs/helpers/index.js +1 -0
- package/dist/cjs/helpers/index.js.map +1 -1
- package/dist/cjs/libs/currency.d.ts +1 -2
- package/dist/cjs/libs/currency.js +5 -5
- package/dist/cjs/libs/currency.js.map +1 -1
- package/dist/esm/__tests__/helpers/account-users-helper.spec.d.ts +1 -0
- package/dist/esm/__tests__/helpers/account-users-helper.spec.js +199 -0
- package/dist/esm/__tests__/helpers/account-users-helper.spec.js.map +1 -0
- package/dist/esm/__tests__/libs/currency.spec.js +22 -25
- package/dist/esm/__tests__/libs/currency.spec.js.map +1 -1
- package/dist/esm/clients/internal-api/accounts-client.d.ts +1 -1
- package/dist/esm/clients/internal-api/accounts-client.js +2 -2
- package/dist/esm/clients/internal-api/accounts-client.js.map +1 -1
- package/dist/esm/helpers/account-users-helper.d.ts +2 -0
- package/dist/esm/helpers/account-users-helper.js +19 -0
- package/dist/esm/helpers/account-users-helper.js.map +1 -0
- package/dist/esm/helpers/index.d.ts +1 -0
- package/dist/esm/helpers/index.js +1 -0
- package/dist/esm/helpers/index.js.map +1 -1
- package/dist/esm/libs/currency.d.ts +1 -2
- package/dist/esm/libs/currency.js +5 -5
- package/dist/esm/libs/currency.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const account_users_helper_1 = require("../../helpers/account-users-helper");
|
|
4
|
+
jest.mock('../../helpers/logging-helper', () => ({
|
|
5
|
+
Logger: {
|
|
6
|
+
error: jest.fn()
|
|
7
|
+
}
|
|
8
|
+
}));
|
|
9
|
+
const createUserRecord = (email) => ({
|
|
10
|
+
email,
|
|
11
|
+
accountId: 'test-account',
|
|
12
|
+
accountName: 'Test Account',
|
|
13
|
+
userId: 'test-user',
|
|
14
|
+
role: 'USER',
|
|
15
|
+
status: 'ACTIVE'
|
|
16
|
+
});
|
|
17
|
+
describe('excludeInternalUsers', () => {
|
|
18
|
+
beforeEach(() => {
|
|
19
|
+
jest.clearAllMocks();
|
|
20
|
+
});
|
|
21
|
+
describe('should exclude internal users', () => {
|
|
22
|
+
it('should exclude users with upstackified.com email', () => {
|
|
23
|
+
const users = [
|
|
24
|
+
createUserRecord('test@upstackified.com'),
|
|
25
|
+
createUserRecord('user@example.com')
|
|
26
|
+
];
|
|
27
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
28
|
+
expect(result).toHaveLength(1);
|
|
29
|
+
expect(result[0].email).toBe('user@example.com');
|
|
30
|
+
});
|
|
31
|
+
it('should exclude users with caspahcosmetics.com email', () => {
|
|
32
|
+
const users = [
|
|
33
|
+
createUserRecord('admin@caspahcosmetics.com'),
|
|
34
|
+
createUserRecord('user@example.com')
|
|
35
|
+
];
|
|
36
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
37
|
+
expect(result).toHaveLength(1);
|
|
38
|
+
expect(result[0].email).toBe('user@example.com');
|
|
39
|
+
});
|
|
40
|
+
it('should exclude users with upstackdata.com email', () => {
|
|
41
|
+
const users = [
|
|
42
|
+
createUserRecord('dev@upstackdata.com'),
|
|
43
|
+
createUserRecord('user@example.com')
|
|
44
|
+
];
|
|
45
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
46
|
+
expect(result).toHaveLength(1);
|
|
47
|
+
expect(result[0].email).toBe('user@example.com');
|
|
48
|
+
});
|
|
49
|
+
it('should exclude users with eacapgroup.com email', () => {
|
|
50
|
+
const users = [
|
|
51
|
+
createUserRecord('contact@eacapgroup.com'),
|
|
52
|
+
createUserRecord('user@example.com')
|
|
53
|
+
];
|
|
54
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
55
|
+
expect(result).toHaveLength(1);
|
|
56
|
+
expect(result[0].email).toBe('user@example.com');
|
|
57
|
+
});
|
|
58
|
+
it('should exclude michael.v.alt@gmail.com', () => {
|
|
59
|
+
const users = [
|
|
60
|
+
createUserRecord('michael.v.alt@gmail.com'),
|
|
61
|
+
createUserRecord('user@example.com')
|
|
62
|
+
];
|
|
63
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
64
|
+
expect(result).toHaveLength(1);
|
|
65
|
+
expect(result[0].email).toBe('user@example.com');
|
|
66
|
+
});
|
|
67
|
+
it('should exclude lemiguel.narciso14@gmail.com', () => {
|
|
68
|
+
const users = [
|
|
69
|
+
createUserRecord('lemiguel.narciso14@gmail.com'),
|
|
70
|
+
createUserRecord('user@example.com')
|
|
71
|
+
];
|
|
72
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
73
|
+
expect(result).toHaveLength(1);
|
|
74
|
+
expect(result[0].email).toBe('user@example.com');
|
|
75
|
+
});
|
|
76
|
+
it('should exclude multiple internal users', () => {
|
|
77
|
+
const users = [
|
|
78
|
+
createUserRecord('test@upstackified.com'),
|
|
79
|
+
createUserRecord('admin@caspahcosmetics.com'),
|
|
80
|
+
createUserRecord('dev@upstackdata.com'),
|
|
81
|
+
createUserRecord('user@example.com'),
|
|
82
|
+
createUserRecord('michael.v.alt@gmail.com')
|
|
83
|
+
];
|
|
84
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
85
|
+
expect(result).toHaveLength(1);
|
|
86
|
+
expect(result[0].email).toBe('user@example.com');
|
|
87
|
+
});
|
|
88
|
+
});
|
|
89
|
+
describe('should keep non-internal users', () => {
|
|
90
|
+
it('should keep users with different domains', () => {
|
|
91
|
+
const users = [
|
|
92
|
+
createUserRecord('user1@example.com'),
|
|
93
|
+
createUserRecord('user2@test.org'),
|
|
94
|
+
createUserRecord('user3@company.net')
|
|
95
|
+
];
|
|
96
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
97
|
+
expect(result).toHaveLength(3);
|
|
98
|
+
expect(result).toEqual(users);
|
|
99
|
+
});
|
|
100
|
+
it('should keep users with similar but different domains', () => {
|
|
101
|
+
const users = [
|
|
102
|
+
createUserRecord('user@upstackified-test.com'),
|
|
103
|
+
createUserRecord('user@caspahcosmetics.org'),
|
|
104
|
+
createUserRecord('user@upstackdata.net')
|
|
105
|
+
];
|
|
106
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
107
|
+
expect(result).toHaveLength(3);
|
|
108
|
+
expect(result).toEqual(users);
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe('case sensitivity', () => {
|
|
112
|
+
it('should handle uppercase emails', () => {
|
|
113
|
+
const users = [
|
|
114
|
+
createUserRecord('TEST@UPSTACKIFIED.COM'),
|
|
115
|
+
createUserRecord('ADMIN@CASPABCOSMETICS.COM'),
|
|
116
|
+
createUserRecord('USER@EXAMPLE.COM')
|
|
117
|
+
];
|
|
118
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
119
|
+
expect(result).toHaveLength(2);
|
|
120
|
+
expect(result[0].email).toBe('ADMIN@CASPABCOSMETICS.COM');
|
|
121
|
+
expect(result[1].email).toBe('USER@EXAMPLE.COM');
|
|
122
|
+
});
|
|
123
|
+
it('should handle mixed case emails', () => {
|
|
124
|
+
const users = [
|
|
125
|
+
createUserRecord('Test@Upstackified.com'),
|
|
126
|
+
createUserRecord('Admin@CaspahCosmetics.com'),
|
|
127
|
+
createUserRecord('User@Example.com')
|
|
128
|
+
];
|
|
129
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
130
|
+
expect(result).toHaveLength(1);
|
|
131
|
+
expect(result[0].email).toBe('User@Example.com');
|
|
132
|
+
});
|
|
133
|
+
});
|
|
134
|
+
describe('edge cases', () => {
|
|
135
|
+
it('should handle empty array', () => {
|
|
136
|
+
const users = [];
|
|
137
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
138
|
+
expect(result).toEqual([]);
|
|
139
|
+
});
|
|
140
|
+
it('should handle users without email property', () => {
|
|
141
|
+
const users = [
|
|
142
|
+
{ accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
143
|
+
createUserRecord('user@example.com')
|
|
144
|
+
];
|
|
145
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
146
|
+
expect(result).toHaveLength(2);
|
|
147
|
+
expect(result).toEqual(users);
|
|
148
|
+
});
|
|
149
|
+
it('should handle users with null email', () => {
|
|
150
|
+
const users = [
|
|
151
|
+
{ email: null, accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
152
|
+
createUserRecord('user@example.com')
|
|
153
|
+
];
|
|
154
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
155
|
+
expect(result).toHaveLength(2);
|
|
156
|
+
expect(result).toEqual(users);
|
|
157
|
+
});
|
|
158
|
+
it('should handle users with undefined email', () => {
|
|
159
|
+
const users = [
|
|
160
|
+
{ email: undefined, accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
161
|
+
createUserRecord('user@example.com')
|
|
162
|
+
];
|
|
163
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
164
|
+
expect(result).toHaveLength(2);
|
|
165
|
+
expect(result).toEqual(users);
|
|
166
|
+
});
|
|
167
|
+
it('should handle users with empty email string', () => {
|
|
168
|
+
const users = [
|
|
169
|
+
{ email: '', accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
170
|
+
createUserRecord('user@example.com')
|
|
171
|
+
];
|
|
172
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
173
|
+
expect(result).toHaveLength(2);
|
|
174
|
+
expect(result).toEqual(users);
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
describe('partial matches', () => {
|
|
178
|
+
it('should exclude users with partial domain matches', () => {
|
|
179
|
+
const users = [
|
|
180
|
+
createUserRecord('user@subdomain.upstackified.com'),
|
|
181
|
+
createUserRecord('admin@caspahcosmetics.com.subdomain'),
|
|
182
|
+
createUserRecord('dev@test.upstackdata.com'),
|
|
183
|
+
createUserRecord('user@example.com')
|
|
184
|
+
];
|
|
185
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
186
|
+
expect(result).toHaveLength(1);
|
|
187
|
+
expect(result[0].email).toBe('user@example.com');
|
|
188
|
+
});
|
|
189
|
+
it('should not exclude users with similar but different patterns', () => {
|
|
190
|
+
const users = [
|
|
191
|
+
createUserRecord('user@upstackified-test.com'),
|
|
192
|
+
createUserRecord('admin@caspahcosmetics.org'),
|
|
193
|
+
createUserRecord('dev@upstackdata.net')
|
|
194
|
+
];
|
|
195
|
+
const result = (0, account_users_helper_1.excludeInternalUsers)(users);
|
|
196
|
+
expect(result).toHaveLength(3);
|
|
197
|
+
expect(result).toEqual(users);
|
|
198
|
+
});
|
|
199
|
+
});
|
|
200
|
+
});
|
|
201
|
+
//# sourceMappingURL=account-users-helper.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-users-helper.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/helpers/account-users-helper.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
const big_js_1 = __importDefault(require("big.js"));
|
|
7
3
|
const currency_1 = require("../../libs/currency");
|
|
8
4
|
const helpers_1 = require("../../helpers");
|
|
9
5
|
jest.mock('../../helpers', () => ({
|
|
@@ -17,7 +13,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
17
13
|
});
|
|
18
14
|
describe('successful conversions', () => {
|
|
19
15
|
it('should convert USD to EUR with exchange rate', () => {
|
|
20
|
-
const amount =
|
|
16
|
+
const amount = 100.00;
|
|
21
17
|
const fromCurrency = 'USD';
|
|
22
18
|
const toCurrency = 'EUR';
|
|
23
19
|
const exchangeRate = 0.85;
|
|
@@ -25,7 +21,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
25
21
|
expect(result).toBe(85.00);
|
|
26
22
|
});
|
|
27
23
|
it('should convert EUR to USD with exchange rate', () => {
|
|
28
|
-
const amount =
|
|
24
|
+
const amount = 100.00;
|
|
29
25
|
const fromCurrency = 'EUR';
|
|
30
26
|
const toCurrency = 'USD';
|
|
31
27
|
const exchangeRate = 1.18;
|
|
@@ -33,7 +29,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
33
29
|
expect(result).toBe(118.00);
|
|
34
30
|
});
|
|
35
31
|
it('should handle decimal amounts correctly', () => {
|
|
36
|
-
const amount =
|
|
32
|
+
const amount = 123.45;
|
|
37
33
|
const fromCurrency = 'USD';
|
|
38
34
|
const toCurrency = 'EUR';
|
|
39
35
|
const exchangeRate = 0.92;
|
|
@@ -41,7 +37,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
41
37
|
expect(result).toBe(113.57);
|
|
42
38
|
});
|
|
43
39
|
it('should round result to 2 decimal places', () => {
|
|
44
|
-
const amount =
|
|
40
|
+
const amount = 100.00;
|
|
45
41
|
const fromCurrency = 'USD';
|
|
46
42
|
const toCurrency = 'EUR';
|
|
47
43
|
const exchangeRate = 0.333333;
|
|
@@ -49,7 +45,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
49
45
|
expect(result).toBe(33.33);
|
|
50
46
|
});
|
|
51
47
|
it('should handle zero amount', () => {
|
|
52
|
-
const amount =
|
|
48
|
+
const amount = 0.00;
|
|
53
49
|
const fromCurrency = 'USD';
|
|
54
50
|
const toCurrency = 'EUR';
|
|
55
51
|
const exchangeRate = 0.85;
|
|
@@ -57,7 +53,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
57
53
|
expect(result).toBe(0.00);
|
|
58
54
|
});
|
|
59
55
|
it('should handle exchange rate of 1', () => {
|
|
60
|
-
const amount =
|
|
56
|
+
const amount = 100.00;
|
|
61
57
|
const fromCurrency = 'USD';
|
|
62
58
|
const toCurrency = 'USD';
|
|
63
59
|
const exchangeRate = 1.0;
|
|
@@ -65,7 +61,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
65
61
|
expect(result).toBe(100.00);
|
|
66
62
|
});
|
|
67
63
|
it('should handle very small amounts', () => {
|
|
68
|
-
const amount =
|
|
64
|
+
const amount = 0.01;
|
|
69
65
|
const fromCurrency = 'USD';
|
|
70
66
|
const toCurrency = 'EUR';
|
|
71
67
|
const exchangeRate = 0.85;
|
|
@@ -73,7 +69,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
73
69
|
expect(result).toBe(0.01);
|
|
74
70
|
});
|
|
75
71
|
it('should handle large amounts', () => {
|
|
76
|
-
const amount =
|
|
72
|
+
const amount = 1000000.00;
|
|
77
73
|
const fromCurrency = 'USD';
|
|
78
74
|
const toCurrency = 'EUR';
|
|
79
75
|
const exchangeRate = 0.85;
|
|
@@ -82,30 +78,28 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
82
78
|
});
|
|
83
79
|
});
|
|
84
80
|
describe('error handling', () => {
|
|
85
|
-
it('should return
|
|
86
|
-
const amount =
|
|
81
|
+
it('should return undefined when exchange rate is invalid', () => {
|
|
82
|
+
const amount = 100.00;
|
|
87
83
|
const fromCurrency = 'USD';
|
|
88
84
|
const toCurrency = 'EUR';
|
|
89
85
|
const exchangeRate = NaN;
|
|
90
86
|
const result = (0, currency_1.convertAmountBetweenCurrencies)(amount, fromCurrency, toCurrency, exchangeRate);
|
|
91
|
-
expect(result).
|
|
92
|
-
expect(helpers_1.Logger.error).toHaveBeenCalledWith('
|
|
93
|
-
error: expect.any(Error),
|
|
87
|
+
expect(result).toBeUndefined();
|
|
88
|
+
expect(helpers_1.Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
94
89
|
amount,
|
|
95
90
|
fromCurrency,
|
|
96
91
|
toCurrency,
|
|
97
92
|
exchangeRate: NaN,
|
|
98
93
|
});
|
|
99
94
|
});
|
|
100
|
-
it('should return
|
|
101
|
-
const amount =
|
|
95
|
+
it('should return undefined when exchange rate is Infinity', () => {
|
|
96
|
+
const amount = 100.00;
|
|
102
97
|
const fromCurrency = 'USD';
|
|
103
98
|
const toCurrency = 'EUR';
|
|
104
99
|
const exchangeRate = Infinity;
|
|
105
100
|
const result = (0, currency_1.convertAmountBetweenCurrencies)(amount, fromCurrency, toCurrency, exchangeRate);
|
|
106
|
-
expect(result).
|
|
107
|
-
expect(helpers_1.Logger.error).toHaveBeenCalledWith('
|
|
108
|
-
error: expect.any(Error),
|
|
101
|
+
expect(result).toBeUndefined();
|
|
102
|
+
expect(helpers_1.Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
109
103
|
amount,
|
|
110
104
|
fromCurrency,
|
|
111
105
|
toCurrency,
|
|
@@ -115,7 +109,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
115
109
|
});
|
|
116
110
|
describe('edge cases', () => {
|
|
117
111
|
it('should handle very small exchange rates', () => {
|
|
118
|
-
const amount =
|
|
112
|
+
const amount = 100.00;
|
|
119
113
|
const fromCurrency = 'USD';
|
|
120
114
|
const toCurrency = 'JPY';
|
|
121
115
|
const exchangeRate = 0.001;
|
|
@@ -123,7 +117,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
123
117
|
expect(result).toBe(0.10);
|
|
124
118
|
});
|
|
125
119
|
it('should handle very large exchange rates', () => {
|
|
126
|
-
const amount =
|
|
120
|
+
const amount = 1.00;
|
|
127
121
|
const fromCurrency = 'JPY';
|
|
128
122
|
const toCurrency = 'USD';
|
|
129
123
|
const exchangeRate = 1000;
|
|
@@ -131,7 +125,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
131
125
|
expect(result).toBe(1000.00);
|
|
132
126
|
});
|
|
133
127
|
it('should handle zero exchange rate', () => {
|
|
134
|
-
const amount =
|
|
128
|
+
const amount = 100.00;
|
|
135
129
|
const fromCurrency = 'USD';
|
|
136
130
|
const toCurrency = 'EUR';
|
|
137
131
|
const exchangeRate = 0;
|
|
@@ -139,7 +133,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
139
133
|
expect(result).toBe(0.00);
|
|
140
134
|
});
|
|
141
135
|
it('should handle different currency codes', () => {
|
|
142
|
-
const amount =
|
|
136
|
+
const amount = 50.00;
|
|
143
137
|
const fromCurrency = 'GBP';
|
|
144
138
|
const toCurrency = 'CAD';
|
|
145
139
|
const exchangeRate = 1.75;
|
|
@@ -149,7 +143,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
149
143
|
});
|
|
150
144
|
describe('Big.js precision handling', () => {
|
|
151
145
|
it('should handle Big.js precision correctly', () => {
|
|
152
|
-
const amount =
|
|
146
|
+
const amount = '0.333333333333333333';
|
|
153
147
|
const fromCurrency = 'USD';
|
|
154
148
|
const toCurrency = 'EUR';
|
|
155
149
|
const exchangeRate = 0.85;
|
|
@@ -157,7 +151,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
157
151
|
expect(result).toBe(0.28);
|
|
158
152
|
});
|
|
159
153
|
it('should handle Big.js with high precision exchange rate', () => {
|
|
160
|
-
const amount =
|
|
154
|
+
const amount = 100.00;
|
|
161
155
|
const fromCurrency = 'USD';
|
|
162
156
|
const toCurrency = 'EUR';
|
|
163
157
|
const exchangeRate = 0.123456789;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export declare class AccountsClient {
|
|
|
77
77
|
getAccount: (accountId: string) => Promise<ApiResponse<AccountResponseData>>;
|
|
78
78
|
getAccountPrivate: (accountId: string) => Promise<ApiResponse<AccountResponseData>>;
|
|
79
79
|
addUserToAccount: (accountId: string, userId: string, role: USER_ROLES, status: USER_ACCOUNT_STATUS) => Promise<ApiResponse<AddUserToAccountResponseData>>;
|
|
80
|
-
getAccountUsers: (accountId: string) => Promise<ApiResponse<AccountUsersResponseData>>;
|
|
80
|
+
getAccountUsers: (accountId: string, excludeInternalUsers?: boolean) => Promise<ApiResponse<AccountUsersResponseData>>;
|
|
81
81
|
cancelAccount: (accountId: string, body: AdminCancelAccountRequest) => Promise<ApiResponse<AccountResponseData>>;
|
|
82
82
|
adminDisableAccount: (accountId: string, body: AdminDisableAccountRequest) => Promise<ApiResponse<AccountResponseData>>;
|
|
83
83
|
}
|
|
@@ -88,8 +88,8 @@ class AccountsClient {
|
|
|
88
88
|
index_js_1.Logger.debug('add user account response', { response });
|
|
89
89
|
return response;
|
|
90
90
|
};
|
|
91
|
-
getAccountUsers = async (accountId) => {
|
|
92
|
-
const response = await client.get(`${this.SERVICE_API_ROOT_URL}/admin/${accountId}/users`, { headers: this.getHeaders() });
|
|
91
|
+
getAccountUsers = async (accountId, excludeInternalUsers) => {
|
|
92
|
+
const response = await client.get(`${this.SERVICE_API_ROOT_URL}/admin/${accountId}/users`, { headers: this.getHeaders(), params: { excludeInternalUsers } });
|
|
93
93
|
index_js_1.Logger.debug('get account users response', { response });
|
|
94
94
|
return response;
|
|
95
95
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/accounts-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"accounts-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/accounts-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.excludeInternalUsers = void 0;
|
|
4
|
+
const logging_helper_1 = require("./logging-helper");
|
|
5
|
+
const EXCLUDED_USERS = [
|
|
6
|
+
'upstackified.com',
|
|
7
|
+
'caspahcosmetics.com',
|
|
8
|
+
'upstackdata.com',
|
|
9
|
+
'eacapgroup.com',
|
|
10
|
+
'michael.v.alt@gmail.com',
|
|
11
|
+
'lemiguel.narciso14@gmail.com'
|
|
12
|
+
];
|
|
13
|
+
const excludeInternalUsers = (users) => {
|
|
14
|
+
try {
|
|
15
|
+
return users.filter(user => !EXCLUDED_USERS.some(excludedPattern => user?.email?.toLowerCase().includes(excludedPattern.toLowerCase())));
|
|
16
|
+
}
|
|
17
|
+
catch (error) {
|
|
18
|
+
logging_helper_1.Logger.error('Failed to filter internal users', { error });
|
|
19
|
+
return users;
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
exports.excludeInternalUsers = excludeInternalUsers;
|
|
23
|
+
//# sourceMappingURL=account-users-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-users-helper.js","sourceRoot":"","sources":["../../../src/helpers/account-users-helper.ts"],"names":[],"mappings":";;;AACA,qDAA0C;AAE1C,MAAM,cAAc,GAAG;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,yBAAyB;IACzB,8BAA8B;CAC/B,CAAC;AAEK,MAAM,oBAAoB,GAAG,CAAC,KAA0B,EAAuB,EAAE;IACtF,IAAI;QACF,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1I;IAAC,OAAO,KAAK,EAAE;QACd,uBAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAA;AAPY,QAAA,oBAAoB,wBAOhC"}
|
|
@@ -19,4 +19,5 @@ __exportStar(require("./logging-helper.js"), exports);
|
|
|
19
19
|
__exportStar(require("./response-helper.js"), exports);
|
|
20
20
|
__exportStar(require("./shopify-helper.js"), exports);
|
|
21
21
|
__exportStar(require("./identity-cache-helper.js"), exports);
|
|
22
|
+
__exportStar(require("./account-users-helper.js"), exports);
|
|
22
23
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,6DAA2C"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,+DAA6C;AAC7C,sDAAoC;AACpC,uDAAqC;AACrC,sDAAoC;AACpC,6DAA2C;AAC3C,4DAA0C"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const convertAmountBetweenCurrencies: (amount: Big, fromCurrency: string, toCurrency: string, exchangeRate: number) => number | null;
|
|
1
|
+
export declare const convertAmountBetweenCurrencies: (amount: number, fromCurrency: string, toCurrency: string, exchangeRate: number) => number | undefined;
|
|
@@ -8,16 +8,16 @@ const big_js_1 = __importDefault(require("big.js"));
|
|
|
8
8
|
const helpers_1 = require("../helpers");
|
|
9
9
|
const convertAmountBetweenCurrencies = (amount, fromCurrency, toCurrency, exchangeRate) => {
|
|
10
10
|
try {
|
|
11
|
-
if (
|
|
12
|
-
helpers_1.Logger.error('Amount and exchange rate must be numbers', { amount, fromCurrency, toCurrency, exchangeRate });
|
|
13
|
-
return
|
|
11
|
+
if (isNaN(amount) || isNaN(exchangeRate) || !isFinite(amount) || !isFinite(exchangeRate)) {
|
|
12
|
+
helpers_1.Logger.error('Amount and exchange rate must be valid numbers', { amount, fromCurrency, toCurrency, exchangeRate });
|
|
13
|
+
return undefined;
|
|
14
14
|
}
|
|
15
15
|
const exchangeRateBig = (0, big_js_1.default)(exchangeRate);
|
|
16
|
-
return amount.times(exchangeRateBig).round(2).toNumber();
|
|
16
|
+
return (0, big_js_1.default)(amount).times(exchangeRateBig).round(2).toNumber();
|
|
17
17
|
}
|
|
18
18
|
catch (error) {
|
|
19
19
|
helpers_1.Logger.error('Failed to convert currency', { error, amount, fromCurrency, toCurrency, exchangeRate });
|
|
20
|
-
return
|
|
20
|
+
return undefined;
|
|
21
21
|
}
|
|
22
22
|
};
|
|
23
23
|
exports.convertAmountBetweenCurrencies = convertAmountBetweenCurrencies;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/libs/currency.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAyB;AACzB,wCAAoC;AAE7B,MAAM,8BAA8B,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"currency.js","sourceRoot":"","sources":["../../../src/libs/currency.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAyB;AACzB,wCAAoC;AAE7B,MAAM,8BAA8B,GAAG,CAAC,MAAc,EAAE,YAAoB,EAAE,UAAkB,EAAE,YAAoB,EAAsB,EAAE;IACnJ,IAAI;QACF,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACxF,gBAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;YACnH,OAAO,SAAS,CAAC;SAClB;QACD,MAAM,eAAe,GAAG,IAAA,gBAAG,EAAC,YAAY,CAAC,CAAC;QAC1C,OAAO,IAAA,gBAAG,EAAC,MAAM,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;KAC/D;IAAC,OAAO,KAAK,EAAE;QACd,gBAAM,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACtG,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAA;AAZY,QAAA,8BAA8B,kCAY1C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
import { excludeInternalUsers } from '../../helpers/account-users-helper';
|
|
2
|
+
jest.mock('../../helpers/logging-helper', () => ({
|
|
3
|
+
Logger: {
|
|
4
|
+
error: jest.fn()
|
|
5
|
+
}
|
|
6
|
+
}));
|
|
7
|
+
const createUserRecord = (email) => ({
|
|
8
|
+
email,
|
|
9
|
+
accountId: 'test-account',
|
|
10
|
+
accountName: 'Test Account',
|
|
11
|
+
userId: 'test-user',
|
|
12
|
+
role: 'USER',
|
|
13
|
+
status: 'ACTIVE'
|
|
14
|
+
});
|
|
15
|
+
describe('excludeInternalUsers', () => {
|
|
16
|
+
beforeEach(() => {
|
|
17
|
+
jest.clearAllMocks();
|
|
18
|
+
});
|
|
19
|
+
describe('should exclude internal users', () => {
|
|
20
|
+
it('should exclude users with upstackified.com email', () => {
|
|
21
|
+
const users = [
|
|
22
|
+
createUserRecord('test@upstackified.com'),
|
|
23
|
+
createUserRecord('user@example.com')
|
|
24
|
+
];
|
|
25
|
+
const result = excludeInternalUsers(users);
|
|
26
|
+
expect(result).toHaveLength(1);
|
|
27
|
+
expect(result[0].email).toBe('user@example.com');
|
|
28
|
+
});
|
|
29
|
+
it('should exclude users with caspahcosmetics.com email', () => {
|
|
30
|
+
const users = [
|
|
31
|
+
createUserRecord('admin@caspahcosmetics.com'),
|
|
32
|
+
createUserRecord('user@example.com')
|
|
33
|
+
];
|
|
34
|
+
const result = excludeInternalUsers(users);
|
|
35
|
+
expect(result).toHaveLength(1);
|
|
36
|
+
expect(result[0].email).toBe('user@example.com');
|
|
37
|
+
});
|
|
38
|
+
it('should exclude users with upstackdata.com email', () => {
|
|
39
|
+
const users = [
|
|
40
|
+
createUserRecord('dev@upstackdata.com'),
|
|
41
|
+
createUserRecord('user@example.com')
|
|
42
|
+
];
|
|
43
|
+
const result = excludeInternalUsers(users);
|
|
44
|
+
expect(result).toHaveLength(1);
|
|
45
|
+
expect(result[0].email).toBe('user@example.com');
|
|
46
|
+
});
|
|
47
|
+
it('should exclude users with eacapgroup.com email', () => {
|
|
48
|
+
const users = [
|
|
49
|
+
createUserRecord('contact@eacapgroup.com'),
|
|
50
|
+
createUserRecord('user@example.com')
|
|
51
|
+
];
|
|
52
|
+
const result = excludeInternalUsers(users);
|
|
53
|
+
expect(result).toHaveLength(1);
|
|
54
|
+
expect(result[0].email).toBe('user@example.com');
|
|
55
|
+
});
|
|
56
|
+
it('should exclude michael.v.alt@gmail.com', () => {
|
|
57
|
+
const users = [
|
|
58
|
+
createUserRecord('michael.v.alt@gmail.com'),
|
|
59
|
+
createUserRecord('user@example.com')
|
|
60
|
+
];
|
|
61
|
+
const result = excludeInternalUsers(users);
|
|
62
|
+
expect(result).toHaveLength(1);
|
|
63
|
+
expect(result[0].email).toBe('user@example.com');
|
|
64
|
+
});
|
|
65
|
+
it('should exclude lemiguel.narciso14@gmail.com', () => {
|
|
66
|
+
const users = [
|
|
67
|
+
createUserRecord('lemiguel.narciso14@gmail.com'),
|
|
68
|
+
createUserRecord('user@example.com')
|
|
69
|
+
];
|
|
70
|
+
const result = excludeInternalUsers(users);
|
|
71
|
+
expect(result).toHaveLength(1);
|
|
72
|
+
expect(result[0].email).toBe('user@example.com');
|
|
73
|
+
});
|
|
74
|
+
it('should exclude multiple internal users', () => {
|
|
75
|
+
const users = [
|
|
76
|
+
createUserRecord('test@upstackified.com'),
|
|
77
|
+
createUserRecord('admin@caspahcosmetics.com'),
|
|
78
|
+
createUserRecord('dev@upstackdata.com'),
|
|
79
|
+
createUserRecord('user@example.com'),
|
|
80
|
+
createUserRecord('michael.v.alt@gmail.com')
|
|
81
|
+
];
|
|
82
|
+
const result = excludeInternalUsers(users);
|
|
83
|
+
expect(result).toHaveLength(1);
|
|
84
|
+
expect(result[0].email).toBe('user@example.com');
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('should keep non-internal users', () => {
|
|
88
|
+
it('should keep users with different domains', () => {
|
|
89
|
+
const users = [
|
|
90
|
+
createUserRecord('user1@example.com'),
|
|
91
|
+
createUserRecord('user2@test.org'),
|
|
92
|
+
createUserRecord('user3@company.net')
|
|
93
|
+
];
|
|
94
|
+
const result = excludeInternalUsers(users);
|
|
95
|
+
expect(result).toHaveLength(3);
|
|
96
|
+
expect(result).toEqual(users);
|
|
97
|
+
});
|
|
98
|
+
it('should keep users with similar but different domains', () => {
|
|
99
|
+
const users = [
|
|
100
|
+
createUserRecord('user@upstackified-test.com'),
|
|
101
|
+
createUserRecord('user@caspahcosmetics.org'),
|
|
102
|
+
createUserRecord('user@upstackdata.net')
|
|
103
|
+
];
|
|
104
|
+
const result = excludeInternalUsers(users);
|
|
105
|
+
expect(result).toHaveLength(3);
|
|
106
|
+
expect(result).toEqual(users);
|
|
107
|
+
});
|
|
108
|
+
});
|
|
109
|
+
describe('case sensitivity', () => {
|
|
110
|
+
it('should handle uppercase emails', () => {
|
|
111
|
+
const users = [
|
|
112
|
+
createUserRecord('TEST@UPSTACKIFIED.COM'),
|
|
113
|
+
createUserRecord('ADMIN@CASPABCOSMETICS.COM'),
|
|
114
|
+
createUserRecord('USER@EXAMPLE.COM')
|
|
115
|
+
];
|
|
116
|
+
const result = excludeInternalUsers(users);
|
|
117
|
+
expect(result).toHaveLength(2);
|
|
118
|
+
expect(result[0].email).toBe('ADMIN@CASPABCOSMETICS.COM');
|
|
119
|
+
expect(result[1].email).toBe('USER@EXAMPLE.COM');
|
|
120
|
+
});
|
|
121
|
+
it('should handle mixed case emails', () => {
|
|
122
|
+
const users = [
|
|
123
|
+
createUserRecord('Test@Upstackified.com'),
|
|
124
|
+
createUserRecord('Admin@CaspahCosmetics.com'),
|
|
125
|
+
createUserRecord('User@Example.com')
|
|
126
|
+
];
|
|
127
|
+
const result = excludeInternalUsers(users);
|
|
128
|
+
expect(result).toHaveLength(1);
|
|
129
|
+
expect(result[0].email).toBe('User@Example.com');
|
|
130
|
+
});
|
|
131
|
+
});
|
|
132
|
+
describe('edge cases', () => {
|
|
133
|
+
it('should handle empty array', () => {
|
|
134
|
+
const users = [];
|
|
135
|
+
const result = excludeInternalUsers(users);
|
|
136
|
+
expect(result).toEqual([]);
|
|
137
|
+
});
|
|
138
|
+
it('should handle users without email property', () => {
|
|
139
|
+
const users = [
|
|
140
|
+
{ accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
141
|
+
createUserRecord('user@example.com')
|
|
142
|
+
];
|
|
143
|
+
const result = excludeInternalUsers(users);
|
|
144
|
+
expect(result).toHaveLength(2);
|
|
145
|
+
expect(result).toEqual(users);
|
|
146
|
+
});
|
|
147
|
+
it('should handle users with null email', () => {
|
|
148
|
+
const users = [
|
|
149
|
+
{ email: null, accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
150
|
+
createUserRecord('user@example.com')
|
|
151
|
+
];
|
|
152
|
+
const result = excludeInternalUsers(users);
|
|
153
|
+
expect(result).toHaveLength(2);
|
|
154
|
+
expect(result).toEqual(users);
|
|
155
|
+
});
|
|
156
|
+
it('should handle users with undefined email', () => {
|
|
157
|
+
const users = [
|
|
158
|
+
{ email: undefined, accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
159
|
+
createUserRecord('user@example.com')
|
|
160
|
+
];
|
|
161
|
+
const result = excludeInternalUsers(users);
|
|
162
|
+
expect(result).toHaveLength(2);
|
|
163
|
+
expect(result).toEqual(users);
|
|
164
|
+
});
|
|
165
|
+
it('should handle users with empty email string', () => {
|
|
166
|
+
const users = [
|
|
167
|
+
{ email: '', accountId: '1', accountName: 'Test', userId: '1', role: 'USER', status: 'ACTIVE' },
|
|
168
|
+
createUserRecord('user@example.com')
|
|
169
|
+
];
|
|
170
|
+
const result = excludeInternalUsers(users);
|
|
171
|
+
expect(result).toHaveLength(2);
|
|
172
|
+
expect(result).toEqual(users);
|
|
173
|
+
});
|
|
174
|
+
});
|
|
175
|
+
describe('partial matches', () => {
|
|
176
|
+
it('should exclude users with partial domain matches', () => {
|
|
177
|
+
const users = [
|
|
178
|
+
createUserRecord('user@subdomain.upstackified.com'),
|
|
179
|
+
createUserRecord('admin@caspahcosmetics.com.subdomain'),
|
|
180
|
+
createUserRecord('dev@test.upstackdata.com'),
|
|
181
|
+
createUserRecord('user@example.com')
|
|
182
|
+
];
|
|
183
|
+
const result = excludeInternalUsers(users);
|
|
184
|
+
expect(result).toHaveLength(1);
|
|
185
|
+
expect(result[0].email).toBe('user@example.com');
|
|
186
|
+
});
|
|
187
|
+
it('should not exclude users with similar but different patterns', () => {
|
|
188
|
+
const users = [
|
|
189
|
+
createUserRecord('user@upstackified-test.com'),
|
|
190
|
+
createUserRecord('admin@caspahcosmetics.org'),
|
|
191
|
+
createUserRecord('dev@upstackdata.net')
|
|
192
|
+
];
|
|
193
|
+
const result = excludeInternalUsers(users);
|
|
194
|
+
expect(result).toHaveLength(3);
|
|
195
|
+
expect(result).toEqual(users);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
//# sourceMappingURL=account-users-helper.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-users-helper.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/helpers/account-users-helper.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import Big from 'big.js';
|
|
2
1
|
import { convertAmountBetweenCurrencies } from '../../libs/currency';
|
|
3
2
|
import { Logger } from '../../helpers';
|
|
4
3
|
jest.mock('../../helpers', () => ({
|
|
@@ -12,7 +11,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
12
11
|
});
|
|
13
12
|
describe('successful conversions', () => {
|
|
14
13
|
it('should convert USD to EUR with exchange rate', () => {
|
|
15
|
-
const amount =
|
|
14
|
+
const amount = 100.00;
|
|
16
15
|
const fromCurrency = 'USD';
|
|
17
16
|
const toCurrency = 'EUR';
|
|
18
17
|
const exchangeRate = 0.85;
|
|
@@ -20,7 +19,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
20
19
|
expect(result).toBe(85.00);
|
|
21
20
|
});
|
|
22
21
|
it('should convert EUR to USD with exchange rate', () => {
|
|
23
|
-
const amount =
|
|
22
|
+
const amount = 100.00;
|
|
24
23
|
const fromCurrency = 'EUR';
|
|
25
24
|
const toCurrency = 'USD';
|
|
26
25
|
const exchangeRate = 1.18;
|
|
@@ -28,7 +27,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
28
27
|
expect(result).toBe(118.00);
|
|
29
28
|
});
|
|
30
29
|
it('should handle decimal amounts correctly', () => {
|
|
31
|
-
const amount =
|
|
30
|
+
const amount = 123.45;
|
|
32
31
|
const fromCurrency = 'USD';
|
|
33
32
|
const toCurrency = 'EUR';
|
|
34
33
|
const exchangeRate = 0.92;
|
|
@@ -36,7 +35,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
36
35
|
expect(result).toBe(113.57);
|
|
37
36
|
});
|
|
38
37
|
it('should round result to 2 decimal places', () => {
|
|
39
|
-
const amount =
|
|
38
|
+
const amount = 100.00;
|
|
40
39
|
const fromCurrency = 'USD';
|
|
41
40
|
const toCurrency = 'EUR';
|
|
42
41
|
const exchangeRate = 0.333333;
|
|
@@ -44,7 +43,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
44
43
|
expect(result).toBe(33.33);
|
|
45
44
|
});
|
|
46
45
|
it('should handle zero amount', () => {
|
|
47
|
-
const amount =
|
|
46
|
+
const amount = 0.00;
|
|
48
47
|
const fromCurrency = 'USD';
|
|
49
48
|
const toCurrency = 'EUR';
|
|
50
49
|
const exchangeRate = 0.85;
|
|
@@ -52,7 +51,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
52
51
|
expect(result).toBe(0.00);
|
|
53
52
|
});
|
|
54
53
|
it('should handle exchange rate of 1', () => {
|
|
55
|
-
const amount =
|
|
54
|
+
const amount = 100.00;
|
|
56
55
|
const fromCurrency = 'USD';
|
|
57
56
|
const toCurrency = 'USD';
|
|
58
57
|
const exchangeRate = 1.0;
|
|
@@ -60,7 +59,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
60
59
|
expect(result).toBe(100.00);
|
|
61
60
|
});
|
|
62
61
|
it('should handle very small amounts', () => {
|
|
63
|
-
const amount =
|
|
62
|
+
const amount = 0.01;
|
|
64
63
|
const fromCurrency = 'USD';
|
|
65
64
|
const toCurrency = 'EUR';
|
|
66
65
|
const exchangeRate = 0.85;
|
|
@@ -68,7 +67,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
68
67
|
expect(result).toBe(0.01);
|
|
69
68
|
});
|
|
70
69
|
it('should handle large amounts', () => {
|
|
71
|
-
const amount =
|
|
70
|
+
const amount = 1000000.00;
|
|
72
71
|
const fromCurrency = 'USD';
|
|
73
72
|
const toCurrency = 'EUR';
|
|
74
73
|
const exchangeRate = 0.85;
|
|
@@ -77,30 +76,28 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
77
76
|
});
|
|
78
77
|
});
|
|
79
78
|
describe('error handling', () => {
|
|
80
|
-
it('should return
|
|
81
|
-
const amount =
|
|
79
|
+
it('should return undefined when exchange rate is invalid', () => {
|
|
80
|
+
const amount = 100.00;
|
|
82
81
|
const fromCurrency = 'USD';
|
|
83
82
|
const toCurrency = 'EUR';
|
|
84
83
|
const exchangeRate = NaN;
|
|
85
84
|
const result = convertAmountBetweenCurrencies(amount, fromCurrency, toCurrency, exchangeRate);
|
|
86
|
-
expect(result).
|
|
87
|
-
expect(Logger.error).toHaveBeenCalledWith('
|
|
88
|
-
error: expect.any(Error),
|
|
85
|
+
expect(result).toBeUndefined();
|
|
86
|
+
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
89
87
|
amount,
|
|
90
88
|
fromCurrency,
|
|
91
89
|
toCurrency,
|
|
92
90
|
exchangeRate: NaN,
|
|
93
91
|
});
|
|
94
92
|
});
|
|
95
|
-
it('should return
|
|
96
|
-
const amount =
|
|
93
|
+
it('should return undefined when exchange rate is Infinity', () => {
|
|
94
|
+
const amount = 100.00;
|
|
97
95
|
const fromCurrency = 'USD';
|
|
98
96
|
const toCurrency = 'EUR';
|
|
99
97
|
const exchangeRate = Infinity;
|
|
100
98
|
const result = convertAmountBetweenCurrencies(amount, fromCurrency, toCurrency, exchangeRate);
|
|
101
|
-
expect(result).
|
|
102
|
-
expect(Logger.error).toHaveBeenCalledWith('
|
|
103
|
-
error: expect.any(Error),
|
|
99
|
+
expect(result).toBeUndefined();
|
|
100
|
+
expect(Logger.error).toHaveBeenCalledWith('Amount and exchange rate must be valid numbers', {
|
|
104
101
|
amount,
|
|
105
102
|
fromCurrency,
|
|
106
103
|
toCurrency,
|
|
@@ -110,7 +107,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
110
107
|
});
|
|
111
108
|
describe('edge cases', () => {
|
|
112
109
|
it('should handle very small exchange rates', () => {
|
|
113
|
-
const amount =
|
|
110
|
+
const amount = 100.00;
|
|
114
111
|
const fromCurrency = 'USD';
|
|
115
112
|
const toCurrency = 'JPY';
|
|
116
113
|
const exchangeRate = 0.001;
|
|
@@ -118,7 +115,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
118
115
|
expect(result).toBe(0.10);
|
|
119
116
|
});
|
|
120
117
|
it('should handle very large exchange rates', () => {
|
|
121
|
-
const amount =
|
|
118
|
+
const amount = 1.00;
|
|
122
119
|
const fromCurrency = 'JPY';
|
|
123
120
|
const toCurrency = 'USD';
|
|
124
121
|
const exchangeRate = 1000;
|
|
@@ -126,7 +123,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
126
123
|
expect(result).toBe(1000.00);
|
|
127
124
|
});
|
|
128
125
|
it('should handle zero exchange rate', () => {
|
|
129
|
-
const amount =
|
|
126
|
+
const amount = 100.00;
|
|
130
127
|
const fromCurrency = 'USD';
|
|
131
128
|
const toCurrency = 'EUR';
|
|
132
129
|
const exchangeRate = 0;
|
|
@@ -134,7 +131,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
134
131
|
expect(result).toBe(0.00);
|
|
135
132
|
});
|
|
136
133
|
it('should handle different currency codes', () => {
|
|
137
|
-
const amount =
|
|
134
|
+
const amount = 50.00;
|
|
138
135
|
const fromCurrency = 'GBP';
|
|
139
136
|
const toCurrency = 'CAD';
|
|
140
137
|
const exchangeRate = 1.75;
|
|
@@ -144,7 +141,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
144
141
|
});
|
|
145
142
|
describe('Big.js precision handling', () => {
|
|
146
143
|
it('should handle Big.js precision correctly', () => {
|
|
147
|
-
const amount =
|
|
144
|
+
const amount = '0.333333333333333333';
|
|
148
145
|
const fromCurrency = 'USD';
|
|
149
146
|
const toCurrency = 'EUR';
|
|
150
147
|
const exchangeRate = 0.85;
|
|
@@ -152,7 +149,7 @@ describe('convertAmountBetweenCurrencies', () => {
|
|
|
152
149
|
expect(result).toBe(0.28);
|
|
153
150
|
});
|
|
154
151
|
it('should handle Big.js with high precision exchange rate', () => {
|
|
155
|
-
const amount =
|
|
152
|
+
const amount = 100.00;
|
|
156
153
|
const fromCurrency = 'USD';
|
|
157
154
|
const toCurrency = 'EUR';
|
|
158
155
|
const exchangeRate = 0.123456789;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"AAKA,OAAO,
|
|
1
|
+
{"version":3,"file":"currency.spec.js","sourceRoot":"","sources":["../../../../src/__tests__/libs/currency.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -77,7 +77,7 @@ export declare class AccountsClient {
|
|
|
77
77
|
getAccount: (accountId: string) => Promise<ApiResponse<AccountResponseData>>;
|
|
78
78
|
getAccountPrivate: (accountId: string) => Promise<ApiResponse<AccountResponseData>>;
|
|
79
79
|
addUserToAccount: (accountId: string, userId: string, role: USER_ROLES, status: USER_ACCOUNT_STATUS) => Promise<ApiResponse<AddUserToAccountResponseData>>;
|
|
80
|
-
getAccountUsers: (accountId: string) => Promise<ApiResponse<AccountUsersResponseData>>;
|
|
80
|
+
getAccountUsers: (accountId: string, excludeInternalUsers?: boolean) => Promise<ApiResponse<AccountUsersResponseData>>;
|
|
81
81
|
cancelAccount: (accountId: string, body: AdminCancelAccountRequest) => Promise<ApiResponse<AccountResponseData>>;
|
|
82
82
|
adminDisableAccount: (accountId: string, body: AdminDisableAccountRequest) => Promise<ApiResponse<AccountResponseData>>;
|
|
83
83
|
}
|
|
@@ -85,8 +85,8 @@ export class AccountsClient {
|
|
|
85
85
|
Logger.debug('add user account response', { response });
|
|
86
86
|
return response;
|
|
87
87
|
};
|
|
88
|
-
getAccountUsers = async (accountId) => {
|
|
89
|
-
const response = await client.get(`${this.SERVICE_API_ROOT_URL}/admin/${accountId}/users`, { headers: this.getHeaders() });
|
|
88
|
+
getAccountUsers = async (accountId, excludeInternalUsers) => {
|
|
89
|
+
const response = await client.get(`${this.SERVICE_API_ROOT_URL}/admin/${accountId}/users`, { headers: this.getHeaders(), params: { excludeInternalUsers } });
|
|
90
90
|
Logger.debug('get account users response', { response });
|
|
91
91
|
return response;
|
|
92
92
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"accounts-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/accounts-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAGxC,OAAO,EAAE,gBAAgB,EAAqB,MAAM,2BAA2B,CAAC;AAmEhF,MAAM,MAAM,GAAG,gBAAgB,CAAC;IAE9B,OAAO,EAAE;QACP,cAAc,EAAE,kBAAkB;KACnC;CACF,CAAC,CAAC;AAGH,MAAM,OAAO,cAAc;IAClB,YAAY,CAAS;IACrB,gBAAgB,CAAU;IAC1B,MAAM,CAAoB;IAC1B,oBAAoB,CAAS;IAEpC,YAAY,UAAkB,EAAE,cAAuB;QACrD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,cAAc,CAAC;QACvC,IAAI,CAAC,oBAAoB,GAAG,GAAG,IAAI,CAAC,YAAY,WAAW,CAAC;QAC5D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;IAID,UAAU,GAAG,GAAG,EAAE;QAChB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,OAAO;gBACL,WAAW,EAAE,IAAI,CAAC,gBAAgB;aACnC,CAAC;SACH;QACD,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;IAGF,aAAa,GAAG,KAAK,EAAE,oBAAyB,EAAE,EAAE;QAClD,MAAM,qBAAqB,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,EAAE,EAAE,oBAAoB,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtI,MAAM,CAAC,KAAK,CAAC,uBAAuB,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;QACjE,OAAO,qBAAqB,CAAC;IAC/B,CAAC,CAAC;IACF,aAAa,GAAG,KAAK,EAAE,SAAiB,EAAE,IAAS,EAA6C,EAAE;QAChG,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACxH,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACtD,OAAO,QAA4C,CAAC;IACtD,CAAC,CAAC;IACF,QAAQ,GAAG,KAAK,EAAE,SAAiB,EAAE,MAAc,EAAE,EAAE;QACrD,MAAM,gBAAgB,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3I,MAAM,CAAC,KAAK,CAAC,kBAAkB,EAAE,EAAE,gBAAgB,EAAE,CAAC,CAAC;QACvD,OAAO,gBAAgB,CAAC;IAC1B,CAAC,CAAC;IACF,gBAAgB,GAAG,KAAK,EACtB,MAAc,EACd,SAAiB,EACjB,OAAgB,EACoC,EAAE;QACtD,MAAM,IAAI,GAAG;YACX,MAAM;YACN,SAAS;YACT,OAAO;SACR,CAAC;QACF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,yBAAyB,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChI,MAAM,CAAC,KAAK,CAAC,wBAAwB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACrD,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;IACF,kBAAkB,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;QAC/C,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACjH,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACjB,CAAC,CAAC;IACF,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAE,eAAkC,EAAwD,EAAE;QACvI,IAAI,aAAa,CAAC;QAClB,IAAI,eAAe,EAAE;YACnB,aAAa,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,OAAO,OAAO,SAAS,EAAE,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACpJ;aACI;YACH,aAAa,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,OAAO,OAAO,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACvH;QACD,MAAM,CAAC,KAAK,CAAC,mBAAmB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QACrD,OAAO,aAA4D,CAAC;IACtE,CAAC,CAAC;IACF,QAAQ,GAAG,KAAK,EAAE,OAAe,EAAuC,EAAE;QACxE,MAAM,aAAa,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,aAAa,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAC3H,MAAM,CAAC,KAAK,CAAC,yBAAyB,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;QAC3D,OAAO,aAA2C,CAAA;IACpD,CAAC,CAAC;IACF,UAAU,GAAG,KAAK,EAAE,SAAiB,EAA6C,EAAE;QAClF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChH,MAAM,CAAC,KAAK,CAAC,sBAAsB,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACnD,OAAO,QAA4C,CAAC;IACtD,CAAC,CAAC;IACF,iBAAiB,GAAG,KAAK,EAAE,SAAiB,EAA6C,EAAE;QACzF,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,oBAAoB,IAAI,SAAS,UAAU,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACvH,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC3D,OAAO,QAA4C,CAAC;IACtD,CAAC,CAAC;IACF,gBAAgB,GAAG,KAAK,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAgB,EAAE,MAA2B,EAAsD,EAAE;QAChK,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,oBAAoB,UAAU,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QAChJ,MAAM,CAAC,KAAK,CAAC,2BAA2B,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC;QACxD,OAAO,QAAqD,CAAC;IAC/D,CAAC,CAAC;IACF,eAAe,GAAG,KAAK,EAAE,SAAiB,EAAE,EAAE;
|
|
1
|
+
{"version":3,"file":"accounts-client.js","sourceRoot":"","sources":["../../../../src/clients/internal-api/accounts-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Logger } from './logging-helper';
|
|
2
|
+
const EXCLUDED_USERS = [
|
|
3
|
+
'upstackified.com',
|
|
4
|
+
'caspahcosmetics.com',
|
|
5
|
+
'upstackdata.com',
|
|
6
|
+
'eacapgroup.com',
|
|
7
|
+
'michael.v.alt@gmail.com',
|
|
8
|
+
'lemiguel.narciso14@gmail.com'
|
|
9
|
+
];
|
|
10
|
+
export const excludeInternalUsers = (users) => {
|
|
11
|
+
try {
|
|
12
|
+
return users.filter(user => !EXCLUDED_USERS.some(excludedPattern => user?.email?.toLowerCase().includes(excludedPattern.toLowerCase())));
|
|
13
|
+
}
|
|
14
|
+
catch (error) {
|
|
15
|
+
Logger.error('Failed to filter internal users', { error });
|
|
16
|
+
return users;
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
//# sourceMappingURL=account-users-helper.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"account-users-helper.js","sourceRoot":"","sources":["../../../src/helpers/account-users-helper.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAE1C,MAAM,cAAc,GAAG;IACrB,kBAAkB;IAClB,qBAAqB;IACrB,iBAAiB;IACjB,gBAAgB;IAChB,yBAAyB;IACzB,8BAA8B;CAC/B,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAA0B,EAAuB,EAAE;IACtF,IAAI;QACF,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;KAC1I;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,KAAK,CAAC,iCAAiC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,OAAO,KAAK,CAAC;KACd;AACH,CAAC,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/helpers/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC"}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
|
|
2
|
-
export declare const convertAmountBetweenCurrencies: (amount: Big, fromCurrency: string, toCurrency: string, exchangeRate: number) => number | null;
|
|
1
|
+
export declare const convertAmountBetweenCurrencies: (amount: number, fromCurrency: string, toCurrency: string, exchangeRate: number) => number | undefined;
|
|
@@ -2,16 +2,16 @@ import Big from 'big.js';
|
|
|
2
2
|
import { Logger } from '../helpers';
|
|
3
3
|
export const convertAmountBetweenCurrencies = (amount, fromCurrency, toCurrency, exchangeRate) => {
|
|
4
4
|
try {
|
|
5
|
-
if (
|
|
6
|
-
Logger.error('Amount and exchange rate must be numbers', { amount, fromCurrency, toCurrency, exchangeRate });
|
|
7
|
-
return
|
|
5
|
+
if (isNaN(amount) || isNaN(exchangeRate) || !isFinite(amount) || !isFinite(exchangeRate)) {
|
|
6
|
+
Logger.error('Amount and exchange rate must be valid numbers', { amount, fromCurrency, toCurrency, exchangeRate });
|
|
7
|
+
return undefined;
|
|
8
8
|
}
|
|
9
9
|
const exchangeRateBig = Big(exchangeRate);
|
|
10
|
-
return amount.times(exchangeRateBig).round(2).toNumber();
|
|
10
|
+
return Big(amount).times(exchangeRateBig).round(2).toNumber();
|
|
11
11
|
}
|
|
12
12
|
catch (error) {
|
|
13
13
|
Logger.error('Failed to convert currency', { error, amount, fromCurrency, toCurrency, exchangeRate });
|
|
14
|
-
return
|
|
14
|
+
return undefined;
|
|
15
15
|
}
|
|
16
16
|
};
|
|
17
17
|
//# sourceMappingURL=currency.js.map
|
|
@@ -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;AAEpC,MAAM,CAAC,MAAM,8BAA8B,GAAG,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;AAEpC,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,MAAc,EAAE,YAAoB,EAAE,UAAkB,EAAE,YAAoB,EAAsB,EAAE;IACnJ,IAAI;QACF,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;YACxF,MAAM,CAAC,KAAK,CAAC,gDAAgD,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,UAAU,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,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,CAAC,CAAC;QACtG,OAAO,SAAS,CAAC;KAClB;AACH,CAAC,CAAA"}
|