globalpayments-api 3.11.3 → 3.11.4

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.
Files changed (77) hide show
  1. package/CHANGELOG.md +4 -1
  2. package/lib/src/Entities/Address.d.ts +1 -0
  3. package/lib/src/Entities/Address.js +1 -0
  4. package/lib/src/Entities/Address.js.map +1 -1
  5. package/lib/src/Entities/Enums/AcquisitionType.d.ts +2 -1
  6. package/lib/src/Entities/Enums/AcquisitionType.js +1 -0
  7. package/lib/src/Entities/Enums/AcquisitionType.js.map +1 -1
  8. package/lib/src/Terminals/Abstractions/IDeviceResponse.d.ts +2 -0
  9. package/lib/src/Terminals/Builders/TerminalAuthBuilder.d.ts +13 -0
  10. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js +24 -0
  11. package/lib/src/Terminals/Builders/TerminalAuthBuilder.js.map +1 -1
  12. package/lib/src/Terminals/Builders/TerminalBuilder.d.ts +3 -3
  13. package/lib/src/Terminals/Builders/TerminalBuilder.js.map +1 -1
  14. package/lib/src/Terminals/Builders/TerminalManageBuilder.d.ts +3 -0
  15. package/lib/src/Terminals/Builders/TerminalManageBuilder.js +6 -0
  16. package/lib/src/Terminals/Builders/TerminalManageBuilder.js.map +1 -1
  17. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.d.ts +2 -0
  18. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js +6 -0
  19. package/lib/src/Terminals/UPA/Reponses/TransactionResponse.js.map +1 -1
  20. package/lib/src/Terminals/UPA/UpaController.js +31 -7
  21. package/lib/src/Terminals/UPA/UpaController.js.map +1 -1
  22. package/lib/src/Terminals/UPA/UpaInterface.d.ts +1 -1
  23. package/lib/src/Terminals/UPA/UpaInterface.js +4 -2
  24. package/lib/src/Terminals/UPA/UpaInterface.js.map +1 -1
  25. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.d.ts +17 -0
  26. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js +325 -0
  27. package/lib/test/Unit/Terminals/Builders/TerminalBuilderParityTests.js.map +1 -0
  28. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js +195 -3
  29. package/lib/test/Unit/Terminals/UPA/UpaAdmin.test.js.map +1 -1
  30. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js +100 -2
  31. package/lib/test/Unit/Terminals/UPA/UpaCredit.test.js.map +1 -1
  32. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.d.ts +7 -0
  33. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js +258 -0
  34. package/lib/test/Unit/Terminals/UPA/UpaEMVParameterValidation.test.js.map +1 -0
  35. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.d.ts +26 -0
  36. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js +389 -0
  37. package/lib/test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.js.map +1 -0
  38. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.d.ts +18 -0
  39. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js +314 -0
  40. package/lib/test/Unit/Terminals/UPA/UpaLanguageCode.test.js.map +1 -0
  41. package/package.json +1 -1
  42. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.d.ts +0 -1
  43. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js +0 -378
  44. package/lib/test/Integration/Terminals/UPA/UpaTransactionResponseLive.test.js.map +0 -1
  45. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.d.ts +0 -1
  46. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js +0 -147
  47. package/lib/test/Unit/Builders/AuthorizationBuilder/SupplementaryData.test.js.map +0 -1
  48. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.d.ts +0 -1
  49. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js +0 -64
  50. package/lib/test/Unit/Terminals/UPA/Reponses/BatchList.test.js.map +0 -1
  51. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.d.ts +0 -1
  52. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js +0 -145
  53. package/lib/test/Unit/Terminals/UPA/Reponses/BatchReportResponse.test.js.map +0 -1
  54. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.d.ts +0 -1
  55. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js +0 -70
  56. package/lib/test/Unit/Terminals/UPA/Reponses/OpenTabDetailsResponse.test.js.map +0 -1
  57. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.d.ts +0 -1
  58. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js +0 -112
  59. package/lib/test/Unit/Terminals/UPA/Reponses/SafReportResponse.test.js.map +0 -1
  60. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.d.ts +0 -1
  61. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js +0 -108
  62. package/lib/test/Unit/Terminals/UPA/Reponses/UpaEODResponse.test.js.map +0 -1
  63. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.d.ts +0 -1
  64. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js +0 -95
  65. package/lib/test/Unit/Terminals/UPA/Reponses/UpaSAFResponse.test.js.map +0 -1
  66. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.d.ts +0 -1
  67. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js +0 -1624
  68. package/lib/test/Unit/Terminals/UPA/Responses/UpaTransactionResponse.test.js.map +0 -1
  69. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.d.ts +0 -1
  70. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js +0 -250
  71. package/lib/test/Unit/Terminals/UPA/UpaStory1Methods.test.js.map +0 -1
  72. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.d.ts +0 -1
  73. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js +0 -1277
  74. package/lib/test/Unit/Terminals/UPA/UpaStory2Methods.test.js.map +0 -1
  75. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.d.ts +0 -1
  76. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js +0 -411
  77. package/lib/test/Unit/Terminals/UPA/UpaStory3_4Methods.test.js.map +0 -1
@@ -0,0 +1,389 @@
1
+ "use strict";
2
+ /**
3
+ * UPA JIRA Story Validation Test Suite
4
+ *
5
+ * Validates comprehensive UPA functionality for merchant transaction processing.
6
+ * Ensures all required fields and methods are implemented per JIRA story requirements:
7
+ * - clerkId (withClerkId method)
8
+ * - cardOnFileIndicator (proper mapping support)
9
+ * - cardBrandTransId (withCardBrandTransId method)
10
+ * - lineItemLeft/Right (withLineItem methods)
11
+ * - languageCode (complete implementation)
12
+ * - directMktShipMonth/Day (correct date handling)
13
+ * - merchantDecision (property and mapping)
14
+ * - acquisitionTypes (property and mapping)
15
+ * - baseAmount (separation from totalAmount)
16
+ * - preAuthAmount (proper decimal formatting)
17
+ * - Card-On-File (initial vs subsequent, multiple initiator types)
18
+ * - Lodging Data (full integration)
19
+ * - Processing Indicators (quickChip, checkLuhn, securityCode)
20
+ *
21
+ * Region: US
22
+ * Gateway: GP-API
23
+ * Environment: Sandbox
24
+ * Devices: UPA
25
+ * Payment Types: MC, VISA, Amex
26
+ */
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ const src_1 = require("../../../../src");
29
+ const AcquisitionType_1 = require("../../../../src/Entities/Enums/AcquisitionType");
30
+ const UpaHelpertest_1 = require("./UpaHelpertest");
31
+ jest.setTimeout(240000);
32
+ // ===========================================================================
33
+ // JIRA Story Requirements – Field Validation
34
+ // ===========================================================================
35
+ describe("JIRA Story: UPA Transaction Processing – Field Validation", () => {
36
+ let device;
37
+ beforeEach(() => {
38
+ device = (0, UpaHelpertest_1.createTestDevice)();
39
+ });
40
+ /**
41
+ * Requirement: clerkId
42
+ * Status: withClerkId() method should be available on builder
43
+ */
44
+ test("[Requirement:clerkId] Builder has withClerkId method", async () => {
45
+ const builder = device.sale(10.0);
46
+ expect(builder).toHaveProperty("withClerkId");
47
+ expect(typeof builder.withClerkId).toBe("function");
48
+ // Should be chainable
49
+ const chained = builder.withClerkId(123);
50
+ expect(chained).toBeDefined();
51
+ expect(chained).toEqual(builder); // Returns self for chaining
52
+ });
53
+ /**
54
+ * Requirement: cardBrandTransId
55
+ * Status: withCardBrandTransId() method should exist and work
56
+ */
57
+ test("[Requirement:cardBrandTransId] Builder has withCardBrandTransId method", async () => {
58
+ const builder = device.sale(10.0);
59
+ const transId = "ABC123XYZ";
60
+ expect(builder).toHaveProperty("withCardBrandTransId");
61
+ expect(typeof builder.withCardBrandTransId).toBe("function");
62
+ // Should be chainable and store value
63
+ const chained = builder.withCardBrandTransId(transId);
64
+ expect(chained).toBeDefined();
65
+ expect(chained).toEqual(builder);
66
+ expect(builder.cardBrandTransId).toBe(transId);
67
+ });
68
+ /**
69
+ * Requirement: lineItemLeft / lineItemRight
70
+ * Status: withLineItemLeft() and withLineItemRight() methods should exist
71
+ */
72
+ test("[Requirement:lineItem] Builder has withLineItemLeft and withLineItemRight methods", async () => {
73
+ const builder = device.sale(10.0);
74
+ const leftText = "Item 1";
75
+ const rightText = "$10.00";
76
+ expect(builder).toHaveProperty("withLineItemLeft");
77
+ expect(builder).toHaveProperty("withLineItemRight");
78
+ builder.withLineItemLeft(leftText).withLineItemRight(rightText);
79
+ expect(builder.lineItemLeft).toBe(leftText);
80
+ expect(builder.lineItemRight).toBe(rightText);
81
+ });
82
+ /**
83
+ * Requirement: languageCode
84
+ * Status: Should be available via withLanguage method
85
+ */
86
+ test("[Requirement:languageCode] Builder has withLanguage method", async () => {
87
+ const builder = device.sale(10.0);
88
+ const langCode = "en";
89
+ expect(builder).toHaveProperty("withLanguage");
90
+ expect(typeof builder.withLanguage).toBe("function");
91
+ builder.withLanguage(langCode);
92
+ expect(builder.language).toBe(langCode);
93
+ });
94
+ /**
95
+ * Requirement: merchantDecision
96
+ * Status: withMerchantDecision() method should exist
97
+ */
98
+ test("[Requirement:merchantDecision] Builder has withMerchantDecision method", async () => {
99
+ const builder = device.sale(10.0);
100
+ const decision = "Approve";
101
+ expect(builder).toHaveProperty("withMerchantDecision");
102
+ expect(typeof builder.withMerchantDecision).toBe("function");
103
+ builder.withMerchantDecision(decision);
104
+ expect(builder.merchantDecision).toBe(decision);
105
+ });
106
+ /**
107
+ * Requirement: acquisitionTypes
108
+ * Status: withAcquisitionTypes() method should exist and accept array
109
+ */
110
+ test("[Requirement:acquisitionTypes] Builder has withAcquisitionTypes method", async () => {
111
+ const builder = device.sale(10.0);
112
+ const types = [AcquisitionType_1.AcquisitionType.Contact, AcquisitionType_1.AcquisitionType.Contactless];
113
+ expect(builder).toHaveProperty("withAcquisitionTypes");
114
+ expect(typeof builder.withAcquisitionTypes).toBe("function");
115
+ builder.withAcquisitionTypes(types);
116
+ expect(builder.acquisitionTypes).toEqual(types);
117
+ });
118
+ /**
119
+ * Requirement: cardOnFileIndicator
120
+ * Status: Should support CardHolder ('C'), Merchant ('M')
121
+ * Note: R (Recurring) and I (Installment) may require additional enum values
122
+ */
123
+ test("[Requirement:cardOnFileIndicator] Builder supports CardHolder and Merchant indicators", async () => {
124
+ const builderCH = device
125
+ .sale(10.0)
126
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.CardHolder);
127
+ const builderM = device
128
+ .sale(10.0)
129
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.Merchant);
130
+ expect(builderCH.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.CardHolder);
131
+ expect(builderM.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.Merchant);
132
+ });
133
+ /**
134
+ * Requirement: preAuthAmount
135
+ * Status: withPreAuthAmount() should exist and use proper formatting
136
+ */
137
+ test("[Requirement:preAuthAmount] Builder has withPreAuthAmount with proper formatting", async () => {
138
+ const builder = device.authorize(15.0);
139
+ const preAuthAmt = 25.99;
140
+ expect(builder).toHaveProperty("withPreAuthAmount");
141
+ expect(typeof builder.withPreAuthAmount).toBe("function");
142
+ builder.withPreAuthAmount(preAuthAmt);
143
+ expect(builder.preAuthAmount).toBe(preAuthAmt);
144
+ });
145
+ /**
146
+ * Requirement: Processing Indicators
147
+ * Status: Builder should support quickChip, checkLuhn, securityCode
148
+ */
149
+ test("[Requirement:processingIndicators] Builder supports processing indicator flags", async () => {
150
+ const builder = device.sale(10.0);
151
+ // These should be properties on the builder
152
+ expect(builder).toHaveProperty("isQuickChip");
153
+ expect(builder).toHaveProperty("hasCheckLuhn");
154
+ expect(builder).toHaveProperty("hasSecurityCode");
155
+ });
156
+ });
157
+ // ===========================================================================
158
+ // JIRA Story Requirements – Method Chaining
159
+ // ===========================================================================
160
+ describe("JIRA Story: UPA Transaction Processing – Method Chaining", () => {
161
+ let device;
162
+ beforeEach(() => {
163
+ device = (0, UpaHelpertest_1.createTestDevice)();
164
+ });
165
+ /**
166
+ * All required methods should be chainable
167
+ */
168
+ test("[MethodChaining] All required methods are chainable", () => {
169
+ const result = device
170
+ .sale(25.0)
171
+ .withClerkId(101)
172
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.CardHolder)
173
+ .withCardBrandTransId("TransID123")
174
+ .withLineItemLeft("Item Description")
175
+ .withLineItemRight("$25.00")
176
+ .withLanguage("en")
177
+ .withMerchantDecision("Approve")
178
+ .withAcquisitionTypes([AcquisitionType_1.AcquisitionType.Contact])
179
+ .withPreAuthAmount(50.0);
180
+ // Verify all values are set
181
+ expect(result.amount).toBe(25.0);
182
+ expect(result.clerkId).toBe(101);
183
+ expect(result.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.CardHolder);
184
+ expect(result.cardBrandTransId).toBe("TransID123");
185
+ expect(result.lineItemLeft).toBe("Item Description");
186
+ expect(result.lineItemRight).toBe("$25.00");
187
+ expect(result.language).toBe("en");
188
+ expect(result.merchantDecision).toBe("Approve");
189
+ expect(result.acquisitionTypes).toEqual([AcquisitionType_1.AcquisitionType.Contact]);
190
+ expect(result.preAuthAmount).toBe(50.0);
191
+ });
192
+ });
193
+ // ===========================================================================
194
+ // JIRA Story Requirements – Comprehensive Integration Test
195
+ // ===========================================================================
196
+ describe("JIRA Story: UPA Transaction Processing – Comprehensive Integration", () => {
197
+ let device;
198
+ beforeEach(() => {
199
+ device = (0, UpaHelpertest_1.createTestDevice)();
200
+ });
201
+ /**
202
+ * Complete transaction with all fields
203
+ * This test demonstrates that a merchant can build a complete
204
+ * UPA transaction request using the SDK without manual code.
205
+ */
206
+ test("[Integration:Complete] Sale with all JIRA story requirements", async () => {
207
+ // Build complete sale transaction matching JIRA requirements
208
+ const builder = device
209
+ .sale(99.99)
210
+ .withClerkId(42)
211
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.CardHolder)
212
+ .withCardBrandTransId("BrandTxnId-2026-001")
213
+ .withLineItemLeft("Premium Widget")
214
+ .withLineItemRight("$99.99")
215
+ .withLanguage("en")
216
+ .withMerchantDecision("Approve")
217
+ .withAcquisitionTypes([
218
+ AcquisitionType_1.AcquisitionType.Contact,
219
+ AcquisitionType_1.AcquisitionType.Contactless,
220
+ ])
221
+ .withPreAuthAmount(150.0)
222
+ .withInvoiceNumber("INV-2026-0001")
223
+ .withRequestMultiUseToken(true);
224
+ // Verify all properties are accessible (without execution)
225
+ const builderAsAny = builder;
226
+ expect(builderAsAny.amount).toBe(99.99);
227
+ expect(builderAsAny.clerkId).toBe(42);
228
+ expect(builderAsAny.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.CardHolder);
229
+ expect(builderAsAny.cardBrandTransId).toBe("BrandTxnId-2026-001");
230
+ expect(builderAsAny.lineItemLeft).toBe("Premium Widget");
231
+ expect(builderAsAny.lineItemRight).toBe("$99.99");
232
+ expect(builderAsAny.language).toBe("en");
233
+ expect(builderAsAny.merchantDecision).toBe("Approve");
234
+ expect(builderAsAny.acquisitionTypes).toEqual([
235
+ AcquisitionType_1.AcquisitionType.Contact,
236
+ AcquisitionType_1.AcquisitionType.Contactless,
237
+ ]);
238
+ expect(builderAsAny.preAuthAmount).toBe(150.0);
239
+ expect(builderAsAny.invoiceNumber).toBe("INV-2026-0001");
240
+ expect(builderAsAny.requestMultiUseToken).toBe(true);
241
+ });
242
+ /**
243
+ * Refund with cardOnFileIndicator - Merchant initiated
244
+ */
245
+ test("[Integration:Refund] Refund with Merchant cardOnFileIndicator", async () => {
246
+ const builder = device
247
+ .refund(50.0)
248
+ .withTransactionId("OriginalTxnId123")
249
+ .withClerkId(101)
250
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.Merchant)
251
+ .withLanguage("fr");
252
+ const builderAsAny = builder;
253
+ expect(builderAsAny.amount).toBe(50.0);
254
+ expect(builderAsAny.clerkId).toBe(101);
255
+ expect(builderAsAny.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.Merchant);
256
+ expect(builderAsAny.language).toBe("fr");
257
+ });
258
+ /**
259
+ * Pre-Authorization with all fields
260
+ */
261
+ test("[Integration:PreAuth] Pre-Auth with preAuthAmount and processing indicators", async () => {
262
+ const builder = device
263
+ .authorize(200.0)
264
+ .withClerkId(55)
265
+ .withCardBrandTransId("PreAuthBrandId")
266
+ .withLineItemLeft("Service Charge")
267
+ .withLineItemRight("$200.00")
268
+ .withPreAuthAmount(250.0)
269
+ .withLanguage("es");
270
+ const builderAsAny = builder;
271
+ expect(builderAsAny.amount).toBe(200.0);
272
+ expect(builderAsAny.clerkId).toBe(55);
273
+ expect(builderAsAny.cardBrandTransId).toBe("PreAuthBrandId");
274
+ expect(builderAsAny.lineItemLeft).toBe("Service Charge");
275
+ expect(builderAsAny.lineItemRight).toBe("$200.00");
276
+ expect(builderAsAny.preAuthAmount).toBe(250.0);
277
+ expect(builderAsAny.language).toBe("es");
278
+ });
279
+ });
280
+ // ===========================================================================
281
+ // JIRA Story Requirements – Value Mapping Validation
282
+ // ===========================================================================
283
+ describe("JIRA Story: UPA Transaction Processing – Value Mapping", () => {
284
+ let device;
285
+ beforeEach(() => {
286
+ device = (0, UpaHelpertest_1.createTestDevice)();
287
+ });
288
+ /**
289
+ * Verify that cardOnFileIndicator values map correctly:
290
+ * CardHolder -> 'C', Merchant -> 'M'
291
+ */
292
+ test("[Mapping:cardOnFileIndicator] Enum values map to correct UPA strings", () => {
293
+ // The enum itself stores the mapped values
294
+ expect(src_1.StoredCredentialInitiator.CardHolder).toBe("C");
295
+ expect(src_1.StoredCredentialInitiator.Merchant).toBe("M");
296
+ });
297
+ /**
298
+ * Verify acquisitionTypes can be joined for UPA format
299
+ */
300
+ test("[Mapping:acquisitionTypes] Array joins correctly for UPA request", () => {
301
+ const types = [
302
+ AcquisitionType_1.AcquisitionType.Contact,
303
+ AcquisitionType_1.AcquisitionType.Contactless,
304
+ AcquisitionType_1.AcquisitionType.Swipe,
305
+ ];
306
+ const joined = types.join("|");
307
+ expect(joined).toMatch(/Contact\|Contactless\|Swipe/);
308
+ });
309
+ /**
310
+ * Verify languageCode correct values
311
+ */
312
+ test("[Mapping:languageCode] Supports standard ISO 639-1 language codes", () => {
313
+ const builder = device.sale(10.0);
314
+ const english = builder.withLanguage("en");
315
+ const french = device.sale(10.0).withLanguage("fr");
316
+ const spanish = device.sale(10.0).withLanguage("es");
317
+ expect(english.language).toBe("en");
318
+ expect(french.language).toBe("fr");
319
+ expect(spanish.language).toBe("es");
320
+ });
321
+ });
322
+ // ===========================================================================
323
+ // JIRA Story Requirements – Acceptance Conditions
324
+ // ===========================================================================
325
+ describe("JIRA Story: UPA Transaction Processing – Acceptance Criteria", () => {
326
+ /**
327
+ * Acceptance Criteria:
328
+ * Region: US
329
+ * Gateway: GP-API
330
+ * Environment: Sandbox
331
+ * Devices: UPA
332
+ * Payment Types: MC, VISA, Amex
333
+ * Credentials: Non-specific
334
+ *
335
+ * GIVEN: Node SDK is used
336
+ * WHEN: Tests run with all required fields
337
+ * THEN: Request goes through to UPA and transaction processes successfully
338
+ */
339
+ test("[Acceptance:Criteria] All JIRA requirements are testable", () => {
340
+ // This test verifies the structure supports the acceptance criteria
341
+ const device = (0, UpaHelpertest_1.createTestDevice)();
342
+ // Verify device is properly configured
343
+ expect(device).toBeDefined();
344
+ expect(device).toHaveProperty("sale");
345
+ expect(device).toHaveProperty("authorize");
346
+ expect(device).toHaveProperty("refund");
347
+ // Verify all builder methods are available
348
+ const saleBuilder = device.sale(10.0);
349
+ const requiredMethods = [
350
+ "withClerkId",
351
+ "withCardOnFileIndicator",
352
+ "withCardBrandTransId",
353
+ "withLineItemLeft",
354
+ "withLineItemRight",
355
+ "withLanguage",
356
+ "withMerchantDecision",
357
+ "withAcquisitionTypes",
358
+ "withPreAuthAmount",
359
+ "execute",
360
+ ];
361
+ for (const method of requiredMethods) {
362
+ expect(saleBuilder).toHaveProperty(method);
363
+ expect(typeof saleBuilder[method]).toBe("function");
364
+ }
365
+ });
366
+ /**
367
+ * Verify no manual code is needed - SDK handles everything
368
+ */
369
+ test("[Acceptance:NoManualCode] SDK methods handle all required fields", () => {
370
+ const device = (0, UpaHelpertest_1.createTestDevice)();
371
+ // Developer can build complete request using only SDK methods
372
+ const builder = device
373
+ .sale(100.0)
374
+ .withClerkId(1)
375
+ .withCardOnFileIndicator(src_1.StoredCredentialInitiator.CardHolder)
376
+ .withCardBrandTransId("BRAND-001")
377
+ .withLineItemLeft("Test Item")
378
+ .withLineItemRight("$100.00")
379
+ .withLanguage("en")
380
+ .withMerchantDecision("Approve")
381
+ .withAcquisitionTypes([AcquisitionType_1.AcquisitionType.Contact])
382
+ .withPreAuthAmount(125.0);
383
+ // All fields should be set without manual property access
384
+ expect(builder.amount).toBe(100.0);
385
+ expect(builder.clerkId).toBe(1);
386
+ expect(builder.cardOnFileIndicator).toBe(src_1.StoredCredentialInitiator.CardHolder);
387
+ });
388
+ });
389
+ //# sourceMappingURL=UpaJiraStoryValidation.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpaJiraStoryValidation.test.js","sourceRoot":"","sources":["../../../../../test/Unit/Terminals/UPA/UpaJiraStoryValidation.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Unit tests for UPA EMV command languageCode parameter support.
3
+ *
4
+ * Tests verify that all four EMV workflow commands correctly:
5
+ * 1. Accept optional languageCode parameter
6
+ * 2. Serialize languageCode to data.params when provided
7
+ * 3. Omit data.params node when languageCode is undefined/null
8
+ * 4. Return standard TransactionResponse
9
+ *
10
+ * Per UPA Integrators Guide 02.20.02.B:
11
+ * - ContinueEMVTransaction: Controls language for EMV/cardholder prompts
12
+ * - CompleteEMVTransaction: Controls language during transaction completion
13
+ * - RemoveCard: Controls language of "Remove Card" prompt
14
+ * - ContinueCardTransaction: Controls language for FI card transaction flow
15
+ *
16
+ * Supported ISO 639-1 language codes: "en", "fr", "es", etc.
17
+ */
18
+ export {};