Skip to content

Commit ea1ad5a

Browse files
authored
Merge pull request #65 from Adyen/release/3.4.0
Release 3.4.0
2 parents 360cf53 + f028480 commit ea1ad5a

18 files changed

+715
-54
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
public with sharing class ApiLibUtils {
2+
public static Integer computeHashCode(List<Object> requestFields) {
3+
Integer hash = 43;
4+
for (Object field : requestFields) {
5+
hash = (17 * hash) + (field == null ? 0 : System.hashCode(field));
6+
}
7+
return hash;
8+
}
9+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<apiVersion>62.0</apiVersion>
4+
<status>Active</status>
5+
</ApexClass>
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
@IsTest
2+
private class ApiLibUtilsTest {
3+
4+
@IsTest
5+
static void computeHashCodeTest() {
6+
// Given
7+
List<Object> requestFields = new List<Object>{'TestString', 123, null, true};
8+
// When
9+
Integer computedHash = ApiLibUtils.computeHashCode(requestFields);
10+
// Then
11+
Assert.isNotNull(computedHash, 'The computed hash code should not be null.');
12+
13+
// When - recompute for consistency
14+
Integer recomputedHash = ApiLibUtils.computeHashCode(requestFields);
15+
// Then
16+
Assert.areEqual(computedHash, recomputedHash, 'Hash code should be consistent for the same input.');
17+
18+
// Given - different input
19+
List<Object> modifiedRequestFields = new List<Object>{'DifferentString', 456, false};
20+
// When
21+
Integer differentHash = ApiLibUtils.computeHashCode(modifiedRequestFields);
22+
// Then
23+
Assert.areNotEqual(computedHash, differentHash, 'Hash code should differ for different inputs.');
24+
25+
// Given - empty list
26+
List<Object> emptyRequestFields = new List<Object>();
27+
// When
28+
Integer emptyHash = ApiLibUtils.computeHashCode(emptyRequestFields);
29+
// Then
30+
Assert.isNotNull(emptyHash, 'The hash code for an empty list should not be null.');
31+
Assert.areNotEqual(computedHash, emptyHash, 'The hash code for an empty list should differ from non-empty input.');
32+
}
33+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3+
<apiVersion>62.0</apiVersion>
4+
<status>Active</status>
5+
</ApexClass>

force-app/main/default/classes/CheckoutRefundRequest.cls

Lines changed: 77 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -21,19 +21,35 @@ public with sharing class CheckoutRefundRequest implements CheckoutModificationR
2121
}
2222

2323
/**
24-
* The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement.\nIf you need to provide multiple references for a transaction, separate them with hyphens ("-").\nMaximum length: 80 characters.
24+
* Application info
2525
*/
2626
@NamespaceAccessible
27-
public String reference { get; set; }
27+
public ApplicationInfo applicationInfo { get; set; }
2828

2929
@NamespaceAccessible
30-
public String getReference() {
31-
return reference;
30+
public ApplicationInfo getApplicationInfo() {
31+
return applicationInfo;
3232
}
3333

3434
@NamespaceAccessible
35-
public void setReference(String reference) {
36-
this.reference = reference;
35+
public void setApplicationInfo(ApplicationInfo applicationInfo) {
36+
this.applicationInfo = applicationInfo;
37+
}
38+
39+
@NamespaceAccessible
40+
public String capturePspReference { get; set; }
41+
42+
@NamespaceAccessible
43+
public List<LineItem> lineItems { get; set; }
44+
45+
@NamespaceAccessible
46+
public List<LineItem> getLineItems() {
47+
return lineItems;
48+
}
49+
50+
@NamespaceAccessible
51+
public void setLineItems(List<LineItem> lineItems) {
52+
this.lineItems = lineItems;
3753
}
3854

3955
/**
@@ -53,36 +69,70 @@ public with sharing class CheckoutRefundRequest implements CheckoutModificationR
5369
}
5470

5571
@NamespaceAccessible
56-
public List<LineItem> lineItems { get; set; }
72+
public String merchantRefundReason { get; set; }
5773

74+
/**
75+
* The reference to uniquely identify a payment. This reference is used in all communication with you about the payment status. We recommend using a unique value per payment; however, it is not a requirement.\nIf you need to provide multiple references for a transaction, separate them with hyphens ("-").\nMaximum length: 80 characters.
76+
*/
5877
@NamespaceAccessible
59-
public List<LineItem> getLineItems() {
60-
return lineItems;
78+
public String reference { get; set; }
79+
80+
@NamespaceAccessible
81+
public String getReference() {
82+
return reference;
6183
}
6284

6385
@NamespaceAccessible
64-
public void setLineItems(List<LineItem> lineItems) {
65-
this.lineItems = lineItems;
86+
public void setReference(String reference) {
87+
this.reference = reference;
6688
}
6789

68-
/**
69-
* Application info
70-
* @return applicationInfo
71-
*/
72-
@namespaceAccessible
73-
public ApplicationInfo applicationInfo { get; set; }
90+
@NamespaceAccessible
91+
public String store { get; set; }
7492

75-
@namespaceAccessible
76-
public ApplicationInfo getApplicationInfo() {
77-
return applicationInfo;
78-
}
93+
@NamespaceAccessible
94+
public static CheckoutRefundRequest getExample() {
95+
CheckoutRefundRequest refundRequest = new CheckoutRefundRequest();
96+
refundRequest.amount = Amount.getExample();
97+
refundRequest.applicationInfo = ApplicationInfo.getExample();
98+
refundRequest.capturePspReference = AdyenConstants.TEST_PSP_REFERENCE;
99+
refundRequest.lineItems = new List<LineItem>();
100+
refundRequest.merchantAccount = AdyenConstants.TEST_MERCHANT_ACCOUNT;
101+
refundRequest.merchantRefundReason = 'Unknown';
102+
refundRequest.reference = AdyenConstants.TEST_REFERENCE;
103+
refundRequest.store = 'Test Store';
104+
return refundRequest;
105+
}
79106

80-
@namespaceAccessible
81-
public void setApplicationInfo(ApplicationInfo applicationInfo) {
82-
this.applicationInfo = applicationInfo;
83-
}
107+
@NamespaceAccessible
108+
public Boolean equals(Object obj) {
109+
if (obj == null || !(obj instanceof CheckoutRefundRequest)) return false;
110+
111+
CheckoutRefundRequest other = (CheckoutRefundRequest) obj;
112+
return this.amount == other.amount
113+
&& this.applicationInfo == other.applicationInfo
114+
&& this.capturePspReference == other.capturePspReference
115+
&& this.lineItems == other.lineItems
116+
&& this.merchantAccount == other.merchantAccount
117+
&& this.merchantRefundReason == other.merchantRefundReason
118+
&& this.reference == other.reference
119+
&& this.store == other.store;
120+
}
84121

85122
@NamespaceAccessible
86-
public CheckoutRefundRequest(){}
123+
public Integer hashCode() {
124+
List<Object> requestFields = new List<Object>{
125+
amount,
126+
applicationInfo,
127+
capturePspReference,
128+
lineItems,
129+
merchantAccount,
130+
merchantRefundReason,
131+
reference,
132+
store
133+
};
134+
return ApiLibUtils.computeHashCode(requestFields);
135+
}
136+
87137

88-
}
138+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3-
<apiVersion>52.0</apiVersion>
3+
<apiVersion>62.0</apiVersion>
44
<status>Active</status>
55
</ApexClass>
Lines changed: 81 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,91 @@
1-
@isTest
1+
@IsTest
22
public class CheckoutRefundRequestTest {
33

4-
/**
5-
* Test method to enhance code coverage for Apex Models; This ain't validating any specific business use case.
6-
* Enhances code coverage for CheckoutRefundRequest apex class
7-
*/
8-
@isTest
9-
private static void testAllMethodsFromCheckoutRefundRequest(){
10-
CheckoutRefundRequest testRefundRequest = new CheckoutRefundRequest();
4+
@IsTest
5+
static void getExampleTest() {
6+
CheckoutRefundRequest refundRequest = CheckoutRefundRequest.getExample();
7+
Assert.isNotNull(refundRequest);
8+
Assert.isNotNull(refundRequest.amount);
9+
Assert.isNotNull(refundRequest.applicationInfo);
10+
Assert.isNotNull(refundRequest.capturePspReference);
11+
Assert.isNotNull(refundRequest.lineItems);
12+
Assert.isNotNull(refundRequest.merchantAccount);
13+
Assert.isNotNull(refundRequest.merchantRefundReason);
14+
Assert.isNotNull(refundRequest.reference);
15+
Assert.isNotNull(refundRequest.store);
16+
}
17+
18+
@IsTest
19+
static void testEqualsTrue() {
20+
// Given
21+
CheckoutRefundRequest req1 = CheckoutRefundRequest.getExample();
22+
CheckoutRefundRequest req2 = CheckoutRefundRequest.getExample();
23+
24+
// When
25+
Boolean result = req1.equals(req2);
26+
27+
// Then
28+
Assert.isTrue(result, 'Expected both CheckoutRefundRequest objects to be equal');
29+
}
30+
31+
@IsTest
32+
static void testEqualsFalse() {
33+
// Given
34+
CheckoutRefundRequest req1 = CheckoutRefundRequest.getExample();
35+
CheckoutRefundRequest req2 = CheckoutRefundRequest.getExample();
36+
req2.reference = 'DIFFERENT_REFERENCE_NUMBER';
1137

12-
Amount testAmount = new Amount();
13-
testAmount.value = 123456789L;
38+
// When
39+
Boolean result = req1.equals(req2);
1440

15-
testRefundRequest.setAmount(testAmount);
16-
System.assertEquals(testRefundRequest.getAmount().value, 123456789L);
41+
// Then
42+
Assert.isFalse(result, 'Expected CheckoutRefundRequest objects to be different');
43+
}
44+
45+
@IsTest
46+
static void testHashCodeSame() {
47+
// Given
48+
CheckoutRefundRequest req1 = CheckoutRefundRequest.getExample();
49+
CheckoutRefundRequest req2 = CheckoutRefundRequest.getExample();
50+
51+
// When
52+
Integer hashCode1 = req1.hashCode();
53+
Integer hashCode2 = req2.hashCode();
1754

18-
testRefundRequest.setReference(AdyenConstants.TEST_REFERENCE);
19-
System.assertEquals(testRefundRequest.getReference(), AdyenConstants.TEST_REFERENCE);
55+
// Then
56+
Assert.areEqual(hashCode1, hashCode2, 'Expected identical objects to have the same hash code');
57+
}
58+
59+
@IsTest
60+
static void testHashCodeDifferent() {
61+
// Given
62+
CheckoutRefundRequest req1 = CheckoutRefundRequest.getExample();
63+
CheckoutRefundRequest req2 = CheckoutRefundRequest.getExample();
64+
req2.reference = 'DIFFERENT_REFERENCE_NUMBER';
2065

21-
testRefundRequest.setMerchantAccount(AdyenConstants.TEST_MERCHANT_ACCOUNT);
22-
System.assertEquals(testRefundRequest.getMerchantAccount(), AdyenConstants.TEST_MERCHANT_ACCOUNT);
66+
// When
67+
Integer hashCode1 = req1.hashCode();
68+
Integer hashCode2 = req2.hashCode();
2369

24-
testRefundRequest.setLineItems(new List<LineItem>{new LineItem()});
25-
System.assertEquals(1, testRefundRequest.getLineItems().size());
70+
// Then
71+
Assert.areNotEqual(hashCode1, hashCode2, 'Expected different objects to have different hash codes');
72+
}
2673

27-
testRefundRequest.setApplicationInfo(ApplicationInfo.getExample());
28-
System.assertEquals(testRefundRequest.getApplicationInfo().adyenLibrary.name, '');
74+
@IsTest
75+
static void gettersAndSettersTest() {
76+
// Given
77+
CheckoutRefundRequest refundRequest = new CheckoutRefundRequest();
78+
refundRequest.setAmount(Amount.getExample());
79+
refundRequest.setApplicationInfo(ApplicationInfo.getExample());
80+
refundRequest.setLineItems(new List<LineItem>());
81+
refundRequest.setMerchantAccount(AdyenConstants.TEST_MERCHANT_ACCOUNT);
82+
refundRequest.setReference(AdyenConstants.TEST_REFERENCE);
2983

84+
// Then
85+
Assert.areEqual(Amount.getExample(), refundRequest.getAmount());
86+
Assert.areEqual(ApplicationInfo.getExample(), refundRequest.getApplicationInfo());
87+
Assert.isNotNull(refundRequest.getLineItems());
88+
Assert.areEqual(AdyenConstants.TEST_MERCHANT_ACCOUNT, refundRequest.getMerchantAccount());
89+
Assert.areEqual(AdyenConstants.TEST_REFERENCE, refundRequest.getReference());
3090
}
31-
}
91+
}
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<ApexClass xmlns="http://soap.sforce.com/2006/04/metadata">
3-
<apiVersion>52.0</apiVersion>
3+
<apiVersion>62.0</apiVersion>
44
<status>Active</status>
55
</ApexClass>

0 commit comments

Comments
 (0)