globalpayments-api 3.11.4 → 3.13.0
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/CHANGELOG.md +15 -1
- package/lib/src/Builders/AuthorizationBuilder.d.ts +0 -1
- package/lib/src/Builders/AuthorizationBuilder.js +0 -4
- package/lib/src/Builders/AuthorizationBuilder.js.map +1 -1
- package/lib/src/Builders/RecurringBuilder.js +12 -1
- package/lib/src/Builders/RecurringBuilder.js.map +1 -1
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +17 -4
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +38 -5
- package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
- package/lib/src/Terminals/Builders/TerminalBuilder.d.ts +0 -1
- package/lib/src/Terminals/Builders/TerminalBuilder.js +0 -1
- package/lib/src/Terminals/Builders/TerminalBuilder.js.map +1 -1
- package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +5 -0
- package/lib/src/Terminals/Builders/TerminalManageBuilder.js +16 -0
- package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
- package/lib/src/Terminals/TerminalResponse.d.ts +4 -0
- package/lib/src/Terminals/TerminalResponse.js +4 -0
- package/lib/src/Terminals/TerminalResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +7 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +38 -0
- package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
- package/lib/src/Terminals/UPA/UpaController.js +116 -17
- package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
- package/lib/test/Integration/Gateways/GpApiConnector/GpApiMMAAccount.test.d.ts +1 -0
- package/lib/test/Integration/Gateways/GpApiConnector/GpApiMMAAccount.test.js +177 -0
- package/lib/test/Integration/Gateways/GpApiConnector/GpApiMMAAccount.test.js.map +1 -0
- package/lib/test/Unit/Gateways/GpApiConnector/GpApiMMAAccount.test.d.ts +1 -0
- package/lib/test/Unit/Gateways/GpApiConnector/GpApiMMAAccount.test.js +29 -0
- package/lib/test/Unit/Gateways/GpApiConnector/GpApiMMAAccount.test.js.map +1 -0
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.test.d.ts +17 -0
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.test.js +325 -0
- package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.test.js.map +1 -0
- package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js +2246 -446
- package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js.map +1 -1
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +703 -26
- package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Unit tests for TerminalAuthBuilder and TerminalManageBuilder
|
|
4
|
+
* Testing newly added properties and builder methods for UPA parity with .NET SDK
|
|
5
|
+
*
|
|
6
|
+
* Properties added to TerminalAuthBuilder:
|
|
7
|
+
* - clerkId
|
|
8
|
+
* - prescriptionAmount
|
|
9
|
+
* - clinicAmount
|
|
10
|
+
* - dentalAmount
|
|
11
|
+
* - visionOpticalAmount
|
|
12
|
+
* - confirmAmount
|
|
13
|
+
* - surchargeAmount
|
|
14
|
+
*
|
|
15
|
+
* Properties added to TerminalManageBuilder:
|
|
16
|
+
* - clerkId
|
|
17
|
+
*/
|
|
18
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
+
const src_1 = require("../../../../src");
|
|
20
|
+
describe("TerminalAuthBuilder Parity Tests", () => {
|
|
21
|
+
describe("Medical Amount Properties", () => {
|
|
22
|
+
let builder;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
25
|
+
});
|
|
26
|
+
test("withPrescriptionAmount() should set prescriptionAmount property", () => {
|
|
27
|
+
const prescriptionAmt = 25.5;
|
|
28
|
+
const result = builder.withPrescriptionAmount(prescriptionAmt);
|
|
29
|
+
expect(builder.prescriptionAmount).toBe(prescriptionAmt);
|
|
30
|
+
expect(result).toBe(builder); // Fluent API returns this
|
|
31
|
+
});
|
|
32
|
+
test("withClinicAmount() should set clinicAmount property", () => {
|
|
33
|
+
const clinicAmt = 45.75;
|
|
34
|
+
const result = builder.withClinicAmount(clinicAmt);
|
|
35
|
+
expect(builder.clinicAmount).toBe(clinicAmt);
|
|
36
|
+
expect(result).toBe(builder);
|
|
37
|
+
});
|
|
38
|
+
test("withDentalAmount() should set dentalAmount property", () => {
|
|
39
|
+
const dentalAmt = 100.0;
|
|
40
|
+
const result = builder.withDentalAmount(dentalAmt);
|
|
41
|
+
expect(builder.dentalAmount).toBe(dentalAmt);
|
|
42
|
+
expect(result).toBe(builder);
|
|
43
|
+
});
|
|
44
|
+
test("withVisionOpticalAmount() should set visionOpticalAmount property", () => {
|
|
45
|
+
const visionAmt = 200.5;
|
|
46
|
+
const result = builder.withVisionOpticalAmount(visionAmt);
|
|
47
|
+
expect(builder.visionOpticalAmount).toBe(visionAmt);
|
|
48
|
+
expect(result).toBe(builder);
|
|
49
|
+
});
|
|
50
|
+
test("Medical amounts can be chained together", () => {
|
|
51
|
+
builder
|
|
52
|
+
.withPrescriptionAmount(25.5)
|
|
53
|
+
.withClinicAmount(45.75)
|
|
54
|
+
.withDentalAmount(100.0)
|
|
55
|
+
.withVisionOpticalAmount(200.5);
|
|
56
|
+
expect(builder.prescriptionAmount).toBe(25.5);
|
|
57
|
+
expect(builder.clinicAmount).toBe(45.75);
|
|
58
|
+
expect(builder.dentalAmount).toBe(100.0);
|
|
59
|
+
expect(builder.visionOpticalAmount).toBe(200.5);
|
|
60
|
+
});
|
|
61
|
+
test("Medical amounts can be zero", () => {
|
|
62
|
+
builder.withPrescriptionAmount(0);
|
|
63
|
+
expect(builder.prescriptionAmount).toBe(0);
|
|
64
|
+
});
|
|
65
|
+
test("Medical amounts can be decimal values", () => {
|
|
66
|
+
builder
|
|
67
|
+
.withPrescriptionAmount(25.99)
|
|
68
|
+
.withClinicAmount(45.01)
|
|
69
|
+
.withDentalAmount(100.5)
|
|
70
|
+
.withVisionOpticalAmount(200.25);
|
|
71
|
+
expect(builder.prescriptionAmount).toBe(25.99);
|
|
72
|
+
expect(builder.clinicAmount).toBe(45.01);
|
|
73
|
+
expect(builder.dentalAmount).toBe(100.5);
|
|
74
|
+
expect(builder.visionOpticalAmount).toBe(200.25);
|
|
75
|
+
});
|
|
76
|
+
});
|
|
77
|
+
describe("Base Class Property - Clerk ID", () => {
|
|
78
|
+
let builder;
|
|
79
|
+
beforeEach(() => {
|
|
80
|
+
builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
81
|
+
});
|
|
82
|
+
test("withClerkId() (inherited from base class) should set clerkId property", () => {
|
|
83
|
+
const clerkId = 12345;
|
|
84
|
+
const result = builder.withClerkId(clerkId);
|
|
85
|
+
expect(builder.clerkId).toBe(clerkId);
|
|
86
|
+
expect(result).toBe(builder);
|
|
87
|
+
});
|
|
88
|
+
test("withClerkId() can be used in fluent chain with new medical properties", () => {
|
|
89
|
+
builder
|
|
90
|
+
.withAmount(10.0)
|
|
91
|
+
.withClerkId(456)
|
|
92
|
+
.withPrescriptionAmount(25.0)
|
|
93
|
+
.withInvoiceNumber("INV123");
|
|
94
|
+
expect(builder.amount).toBe(10.0);
|
|
95
|
+
expect(builder.clerkId).toBe(456);
|
|
96
|
+
expect(builder.prescriptionAmount).toBe(25.0);
|
|
97
|
+
expect(builder.invoiceNumber).toBe("INV123");
|
|
98
|
+
});
|
|
99
|
+
});
|
|
100
|
+
describe("Confirmation Amount Property", () => {
|
|
101
|
+
let builder;
|
|
102
|
+
beforeEach(() => {
|
|
103
|
+
builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
104
|
+
});
|
|
105
|
+
test("withConfirmationAmount() should set confirmAmount property to true", () => {
|
|
106
|
+
const result = builder.withConfirmationAmount(true);
|
|
107
|
+
expect(builder.confirmAmount).toBe(true);
|
|
108
|
+
expect(result).toBe(builder);
|
|
109
|
+
});
|
|
110
|
+
test("withConfirmationAmount() should set confirmAmount property to false", () => {
|
|
111
|
+
builder.withConfirmationAmount(false);
|
|
112
|
+
expect(builder.confirmAmount).toBe(false);
|
|
113
|
+
});
|
|
114
|
+
test("withConfirmationAmount() can be toggled", () => {
|
|
115
|
+
builder.withConfirmationAmount(true);
|
|
116
|
+
expect(builder.confirmAmount).toBe(true);
|
|
117
|
+
builder.withConfirmationAmount(false);
|
|
118
|
+
expect(builder.confirmAmount).toBe(false);
|
|
119
|
+
});
|
|
120
|
+
});
|
|
121
|
+
describe("Surcharge Amount Property", () => {
|
|
122
|
+
let builder;
|
|
123
|
+
beforeEach(() => {
|
|
124
|
+
builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
125
|
+
});
|
|
126
|
+
test("withSurchargeAmount() should set surchargeAmount property", () => {
|
|
127
|
+
const surchargeAmt = 2.5;
|
|
128
|
+
const result = builder.withSurchargeAmount(surchargeAmt);
|
|
129
|
+
expect(builder.surchargeAmount).toBe(surchargeAmt);
|
|
130
|
+
expect(result).toBe(builder);
|
|
131
|
+
});
|
|
132
|
+
test("withSurchargeAmount() should accept zero", () => {
|
|
133
|
+
builder.withSurchargeAmount(0);
|
|
134
|
+
expect(builder.surchargeAmount).toBe(0);
|
|
135
|
+
});
|
|
136
|
+
test("withSurchargeAmount() should accept decimal values", () => {
|
|
137
|
+
builder.withSurchargeAmount(5.99);
|
|
138
|
+
expect(builder.surchargeAmount).toBe(5.99);
|
|
139
|
+
});
|
|
140
|
+
test("withSurchargeAmount() can be combined with amount", () => {
|
|
141
|
+
builder.withAmount(100.0).withSurchargeAmount(2.5);
|
|
142
|
+
expect(builder.amount).toBe(100.0);
|
|
143
|
+
expect(builder.surchargeAmount).toBe(2.5);
|
|
144
|
+
});
|
|
145
|
+
});
|
|
146
|
+
describe("Complex Builder Chains", () => {
|
|
147
|
+
test("All new builder methods work together in a comprehensive transaction", () => {
|
|
148
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale)
|
|
149
|
+
.withAmount(100.0)
|
|
150
|
+
.withClerkId(789)
|
|
151
|
+
.withPrescriptionAmount(25.0)
|
|
152
|
+
.withClinicAmount(35.0)
|
|
153
|
+
.withDentalAmount(20.0)
|
|
154
|
+
.withVisionOpticalAmount(10.0)
|
|
155
|
+
.withConfirmationAmount(true)
|
|
156
|
+
.withSurchargeAmount(5.0)
|
|
157
|
+
.withInvoiceNumber("INV2026001");
|
|
158
|
+
expect(builder.amount).toBe(100.0);
|
|
159
|
+
expect(builder.clerkId).toBe(789);
|
|
160
|
+
expect(builder.prescriptionAmount).toBe(25.0);
|
|
161
|
+
expect(builder.clinicAmount).toBe(35.0);
|
|
162
|
+
expect(builder.dentalAmount).toBe(20.0);
|
|
163
|
+
expect(builder.visionOpticalAmount).toBe(10.0);
|
|
164
|
+
expect(builder.confirmAmount).toBe(true);
|
|
165
|
+
expect(builder.surchargeAmount).toBe(5.0);
|
|
166
|
+
expect(builder.invoiceNumber).toBe("INV2026001");
|
|
167
|
+
});
|
|
168
|
+
test("Medical amounts can be omitted for normal transactions", () => {
|
|
169
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale)
|
|
170
|
+
.withAmount(50.0)
|
|
171
|
+
.withClerkId(123);
|
|
172
|
+
expect(builder.amount).toBe(50.0);
|
|
173
|
+
expect(builder.clerkId).toBe(123);
|
|
174
|
+
expect(builder.prescriptionAmount).toBeUndefined();
|
|
175
|
+
expect(builder.clinicAmount).toBeUndefined();
|
|
176
|
+
expect(builder.dentalAmount).toBeUndefined();
|
|
177
|
+
expect(builder.visionOpticalAmount).toBeUndefined();
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
describe("Transaction Type Compatibility", () => {
|
|
181
|
+
test("New properties work with Auth transaction type", () => {
|
|
182
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Auth)
|
|
183
|
+
.withAmount(50.0)
|
|
184
|
+
.withClerkId(111);
|
|
185
|
+
expect(builder.transactionType).toBe(src_1.TransactionType.Auth);
|
|
186
|
+
expect(builder.amount).toBe(50.0);
|
|
187
|
+
expect(builder.clerkId).toBe(111);
|
|
188
|
+
});
|
|
189
|
+
test("New properties work with Refund transaction type", () => {
|
|
190
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Refund)
|
|
191
|
+
.withAmount(25.0)
|
|
192
|
+
.withClerkId(222);
|
|
193
|
+
expect(builder.transactionType).toBe(src_1.TransactionType.Refund);
|
|
194
|
+
expect(builder.amount).toBe(25.0);
|
|
195
|
+
expect(builder.clerkId).toBe(222);
|
|
196
|
+
});
|
|
197
|
+
});
|
|
198
|
+
});
|
|
199
|
+
describe("TerminalManageBuilder Parity Tests", () => {
|
|
200
|
+
describe("Base Class Property - Clerk ID (inherited)", () => {
|
|
201
|
+
let builder;
|
|
202
|
+
beforeEach(() => {
|
|
203
|
+
builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Capture);
|
|
204
|
+
});
|
|
205
|
+
test("withClerkId() (inherited from base class) should set clerkId property", () => {
|
|
206
|
+
const clerkId = 54321;
|
|
207
|
+
const result = builder.withClerkId(clerkId);
|
|
208
|
+
expect(builder.clerkId).toBe(clerkId);
|
|
209
|
+
expect(result).toBe(builder);
|
|
210
|
+
});
|
|
211
|
+
test("withClerkId() can be used in fluent chain with ProcessCPC", () => {
|
|
212
|
+
builder
|
|
213
|
+
.withAmount(500.0)
|
|
214
|
+
.withClerkId(555)
|
|
215
|
+
.withProcessCPC(true)
|
|
216
|
+
.withTransactionId("TXN123");
|
|
217
|
+
expect(builder.amount).toBe(500.0);
|
|
218
|
+
expect(builder.clerkId).toBe(555);
|
|
219
|
+
expect(builder.processCPC).toBe(true);
|
|
220
|
+
expect(builder.transactionId).toBe("TXN123");
|
|
221
|
+
});
|
|
222
|
+
});
|
|
223
|
+
describe("ProcessCPC Property Verification", () => {
|
|
224
|
+
let builder;
|
|
225
|
+
beforeEach(() => {
|
|
226
|
+
builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Capture);
|
|
227
|
+
});
|
|
228
|
+
test("withProcessCPC() should be available and working", () => {
|
|
229
|
+
const result = builder.withProcessCPC(true);
|
|
230
|
+
expect(builder.processCPC).toBe(true);
|
|
231
|
+
expect(result).toBe(builder);
|
|
232
|
+
});
|
|
233
|
+
test("withProcessCPC() with false value", () => {
|
|
234
|
+
builder.withProcessCPC(false);
|
|
235
|
+
expect(builder.processCPC).toBe(false);
|
|
236
|
+
});
|
|
237
|
+
test("ProcessCPC and ClerkId can be combined", () => {
|
|
238
|
+
builder.withProcessCPC(true).withClerkId(999).withAmount(100.0);
|
|
239
|
+
expect(builder.processCPC).toBe(true);
|
|
240
|
+
expect(builder.clerkId).toBe(999);
|
|
241
|
+
expect(builder.amount).toBe(100.0);
|
|
242
|
+
});
|
|
243
|
+
});
|
|
244
|
+
describe("Transaction Type Compatibility", () => {
|
|
245
|
+
test("ClerkId works with Capture transaction type", () => {
|
|
246
|
+
const builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Capture)
|
|
247
|
+
.withAmount(75.0)
|
|
248
|
+
.withClerkId(333);
|
|
249
|
+
expect(builder.transactionType).toBe(src_1.TransactionType.Capture);
|
|
250
|
+
expect(builder.clerkId).toBe(333);
|
|
251
|
+
expect(builder.amount).toBe(75.0);
|
|
252
|
+
});
|
|
253
|
+
test("ClerkId works with Refund transaction type", () => {
|
|
254
|
+
const builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Refund)
|
|
255
|
+
.withAmount(50.0)
|
|
256
|
+
.withClerkId(444);
|
|
257
|
+
expect(builder.transactionType).toBe(src_1.TransactionType.Refund);
|
|
258
|
+
expect(builder.clerkId).toBe(444);
|
|
259
|
+
});
|
|
260
|
+
test("ClerkId works with Void transaction type", () => {
|
|
261
|
+
const builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Void).withClerkId(555);
|
|
262
|
+
expect(builder.transactionType).toBe(src_1.TransactionType.Void);
|
|
263
|
+
expect(builder.clerkId).toBe(555);
|
|
264
|
+
});
|
|
265
|
+
});
|
|
266
|
+
});
|
|
267
|
+
describe("Builder Properties Defaults", () => {
|
|
268
|
+
test("TerminalAuthBuilder properties default to undefined", () => {
|
|
269
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
270
|
+
expect(builder.clerkId).toBeUndefined();
|
|
271
|
+
expect(builder.prescriptionAmount).toBeUndefined();
|
|
272
|
+
expect(builder.clinicAmount).toBeUndefined();
|
|
273
|
+
expect(builder.dentalAmount).toBeUndefined();
|
|
274
|
+
expect(builder.visionOpticalAmount).toBeUndefined();
|
|
275
|
+
expect(builder.confirmAmount).toBeUndefined();
|
|
276
|
+
expect(builder.surchargeAmount).toBeUndefined();
|
|
277
|
+
});
|
|
278
|
+
test("TerminalManageBuilder clerkId defaults to undefined", () => {
|
|
279
|
+
const builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Capture);
|
|
280
|
+
expect(builder.clerkId).toBeUndefined();
|
|
281
|
+
});
|
|
282
|
+
});
|
|
283
|
+
describe("Property Type Validation", () => {
|
|
284
|
+
describe("Numeric Properties", () => {
|
|
285
|
+
test("ClerkId accepts valid numbers", () => {
|
|
286
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
287
|
+
builder.withClerkId(12345);
|
|
288
|
+
expect(typeof builder.clerkId).toBe("number");
|
|
289
|
+
expect(builder.clerkId).toBe(12345);
|
|
290
|
+
});
|
|
291
|
+
test("Medical amounts accept valid decimal numbers", () => {
|
|
292
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
293
|
+
builder
|
|
294
|
+
.withPrescriptionAmount(10.5)
|
|
295
|
+
.withClinicAmount(20.75)
|
|
296
|
+
.withDentalAmount(30.99)
|
|
297
|
+
.withVisionOpticalAmount(40.01);
|
|
298
|
+
expect(typeof builder.prescriptionAmount).toBe("number");
|
|
299
|
+
expect(typeof builder.clinicAmount).toBe("number");
|
|
300
|
+
expect(typeof builder.dentalAmount).toBe("number");
|
|
301
|
+
expect(typeof builder.visionOpticalAmount).toBe("number");
|
|
302
|
+
});
|
|
303
|
+
test("Surcharge amount accepts valid decimal numbers", () => {
|
|
304
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
305
|
+
builder.withSurchargeAmount(5.5);
|
|
306
|
+
expect(typeof builder.surchargeAmount).toBe("number");
|
|
307
|
+
expect(builder.surchargeAmount).toBe(5.5);
|
|
308
|
+
});
|
|
309
|
+
});
|
|
310
|
+
describe("Boolean Properties", () => {
|
|
311
|
+
test("ConfirmAmount accepts boolean values", () => {
|
|
312
|
+
const builder = new src_1.TerminalAuthBuilder(src_1.TransactionType.Sale);
|
|
313
|
+
builder.withConfirmationAmount(true);
|
|
314
|
+
expect(typeof builder.confirmAmount).toBe("boolean");
|
|
315
|
+
expect(builder.confirmAmount).toBe(true);
|
|
316
|
+
});
|
|
317
|
+
test("ProcessCPC accepts boolean values in TerminalManageBuilder", () => {
|
|
318
|
+
const builder = new src_1.TerminalManageBuilder(src_1.TransactionType.Capture);
|
|
319
|
+
builder.withProcessCPC(false);
|
|
320
|
+
expect(typeof builder.processCPC).toBe("boolean");
|
|
321
|
+
expect(builder.processCPC).toBe(false);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
});
|
|
325
|
+
//# sourceMappingURL=TerminalBuilderParityTests.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TerminalBuilderParityTests.test.js","sourceRoot":"","sources":["../../../../../test/Unit/Terminals/Builders/TerminalBuilderParityTests.test.ts"],"names":[],"mappings":"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"}
|