Skip to content

Commit

Permalink
[ACL-175] Fix missing EqualsAndHashCode Lombok annotations (#304)
Browse files Browse the repository at this point in the history
Co-authored-by: Andrea Di Lisio <andrea.dilisio91@gmail.com>
  • Loading branch information
tl-luca-baggi and dili91 authored Aug 5, 2024
1 parent c5e057a commit 600f252
Show file tree
Hide file tree
Showing 21 changed files with 203 additions and 3 deletions.
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# Main properties
group=com.truelayer
archivesBaseName=truelayer-java
version=13.1.1
version=13.1.2

# Artifacts properties
sonatype_repository_url=https://s01.oss.sonatype.org/service/local/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
import static com.truelayer.java.entities.accountidentifier.AccountIdentifier.Type.BBAN;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class BbanAccountIdentifier extends AccountIdentifier {
private final Type type = BBAN;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.truelayer.java.entities.accountidentifier;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class IbanAccountIdentifier extends AccountIdentifier {
private final Type type = Type.IBAN;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
import static com.truelayer.java.entities.accountidentifier.AccountIdentifier.Type.NRB;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class NrbAccountIdentifier extends AccountIdentifier {
private final Type type = NRB;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.truelayer.java.entities.accountidentifier;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class SortCodeAccountNumberAccountIdentifier extends AccountIdentifier {
private final Type type = Type.SORT_CODE_ACCOUNT_NUMBER;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@

import com.truelayer.java.entities.accountidentifier.AccountIdentifier;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class ExternalAccount extends Beneficiary {
private final Type type = EXTERNAL_ACCOUNT;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.truelayer.java.mandates.entities.beneficiary;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class MerchantAccount extends Beneficiary {
private final Type type = Type.MERCHANT_ACCOUNT;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import com.truelayer.java.mandates.entities.beneficiary.Beneficiary;
import com.truelayer.java.payments.entities.providerselection.ProviderSelection;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class VRPCommercialMandate extends Mandate {

private final Type type = COMMERCIAL;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,12 @@
import com.truelayer.java.mandates.entities.beneficiary.Beneficiary;
import com.truelayer.java.payments.entities.providerselection.ProviderSelection;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class VRPSweepingMandate extends Mandate {

private final Type type = SWEEPING;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@

import com.truelayer.java.entities.accountidentifier.AccountIdentifier;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class ExternalAccount extends Beneficiary {
private final Type type = EXTERNAL_ACCOUNT;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.truelayer.java.payments.entities.beneficiary;

import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class MerchantAccount extends Beneficiary {
private final Type type = Type.MERCHANT_ACCOUNT;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
import com.truelayer.java.payments.entities.providerselection.ProviderSelection;
import java.util.Optional;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class BankTransfer extends PaymentMethod {
private final Type type = BANK_TRANSFER;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,12 @@
import com.truelayer.java.payments.entities.retry.Retry;
import java.util.Optional;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class Mandate extends PaymentMethod {
private final Type type = MANDATE;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,12 @@
import com.truelayer.java.entities.Remitter;
import com.truelayer.java.payments.entities.SchemeId;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Getter
@Builder
@EqualsAndHashCode(callSuper = false)
public class PreselectedProviderSelection extends ProviderSelection {
private final Type type = Type.PRESELECTED;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
import com.truelayer.java.payments.entities.SchemeId;
import com.truelayer.java.payments.entities.schemeselection.SchemeSelection;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;

@Builder
@Getter
@EqualsAndHashCode(callSuper = false)
public class UserSelectedProviderSelection extends ProviderSelection {
private final Type type = Type.USER_SELECTED;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.truelayer.java.payments.entities.schemeselection;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.Accessors;

@Getter
@Builder
@EqualsAndHashCode(callSuper = false)
@ToString
public class InstantOnlySchemeSelection extends SchemeSelection {
private final Type type = Type.INSTANT_ONLY;

@Accessors(fluent = true)
@JsonProperty // Jackson's @JsonProperty is required for serialization to work as expected
private boolean allowRemitterFee;
}
Original file line number Diff line number Diff line change
@@ -1,14 +1,20 @@
package com.truelayer.java.payments.entities.schemeselection;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.ToString;
import lombok.experimental.Accessors;

@Getter
@Builder
@EqualsAndHashCode(callSuper = false)
@ToString
public class InstantPreferredSchemeSelection extends SchemeSelection {
private final Type type = Type.INSTANT_PREFERRED;

@Accessors(fluent = true)
@JsonProperty // Jackson's @JsonProperty is required for serialization to work as expected
private boolean allowRemitterFee;
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ public class PaymentsProvidersAcceptanceTests extends AcceptanceTests {
public static final String PROVIDER_ID = "mock-payments-gb-redirect";

@Test
@DisplayName("It should get by id a payments provider")
@DisplayName("It should get a payments provider by id")
@SneakyThrows
public void shouldCreateAPaymentWithUserSelectionProvider() {
public void shouldGetAPaymentsProviderById() {
ApiResponse<PaymentsProvider> getPaymentsProviderResponse =
tlClient.paymentsProviders().getProvider(PROVIDER_ID).get();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,8 @@

import com.truelayer.java.TestUtils;
import com.truelayer.java.TestUtils.RequestStub;
import com.truelayer.java.entities.CurrencyCode;
import com.truelayer.java.entities.ProviderFilter;
import com.truelayer.java.entities.RelatedProducts;
import com.truelayer.java.http.entities.ApiResponse;
import com.truelayer.java.http.entities.Headers;
Expand All @@ -21,6 +23,9 @@
import com.truelayer.java.payments.entities.paymentdetail.Status;
import com.truelayer.java.payments.entities.paymentmethod.PaymentMethod;
import com.truelayer.java.payments.entities.paymentrefund.PaymentRefund;
import com.truelayer.java.payments.entities.providerselection.ProviderSelection;
import com.truelayer.java.payments.entities.providerselection.UserSelectedProviderSelection;
import com.truelayer.java.payments.entities.schemeselection.SchemeSelection;
import java.util.Collections;
import java.util.stream.Stream;
import lombok.SneakyThrows;
Expand Down Expand Up @@ -94,6 +99,47 @@ public void shouldCreateAPaymentWithAdditionalProductIntention() {
.withRequestBody(matchingJsonPath("$.related_products", equalToJson("{\"signup_plus\": {}}"))));
}

@DisplayName("It should create payment with")
@ParameterizedTest(name = "scheme_selection={0} and expected allow_remitter_fee={1}")
@MethodSource("provideSchemeSelectionTestParameters")
@SneakyThrows
public void shouldCreateAPaymentWithSchemeSelection(
SchemeSelection schemeSelection, boolean expectedAllowRemitterFee) {
RequestStub.New()
.method("post")
.path(urlPathEqualTo("/connect/token"))
.status(200)
.bodyFile("auth/200.access_token.json")
.build();

UserSelectedProviderSelection userSelectedProviderSelection = ProviderSelection.userSelected()
.filter(ProviderFilter.builder()
.countries(Collections.singletonList(CountryCode.GB))
.releaseChannel(ReleaseChannel.GENERAL_AVAILABILITY)
.customerSegments(Collections.singletonList(CustomerSegment.RETAIL))
.build())
.schemeSelection(schemeSelection)
.build();
CreatePaymentRequest paymentRequest = CreatePaymentRequest.builder()
.amountInMinor(50)
.currency(CurrencyCode.GBP)
.paymentMethod(PaymentMethod.bankTransfer()
.providerSelection(userSelectedProviderSelection)
.build())
.build();

tlClient.payments().createPayment(paymentRequest).get();

verifyGeneratedToken(Collections.singletonList(PAYMENTS));

verify(postRequestedFor(urlPathEqualTo("/payments"))
.withRequestBody(matchingJsonPath(
"$.payment_method.provider_selection.scheme_selection",
equalToJson(String.format(
"{\"type\": \"%s\", \"allow_remitter_fee\": %s}",
schemeSelection.getType().getType(), expectedAllowRemitterFee)))));
}

@Test
@DisplayName("It should return an error if the signature is not valid")
@SneakyThrows
Expand Down Expand Up @@ -452,4 +498,22 @@ private static Stream<Arguments> provideShouldReturnAPaymentDetailTestParameters
Arguments.of(MANDATE, EXECUTED),
Arguments.of(MANDATE, FAILED));
}

private static Stream<Arguments> provideSchemeSelectionTestParameters() {
return Stream.of(
Arguments.of(
SchemeSelection.instantOnly().allowRemitterFee(true).build(), true),
Arguments.of(
SchemeSelection.instantOnly().allowRemitterFee(false).build(), false),
Arguments.of(
SchemeSelection.instantPreferred()
.allowRemitterFee(true)
.build(),
true),
Arguments.of(
SchemeSelection.instantPreferred()
.allowRemitterFee(false)
.build(),
false));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
package com.truelayer.java.payments.entities;

import static org.junit.jupiter.api.Assertions.assertEquals;

import com.truelayer.java.payments.entities.schemeselection.SchemeSelection;
import java.util.stream.Stream;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.Arguments;
import org.junit.jupiter.params.provider.MethodSource;

public class SchemeSelectionTests {

@DisplayName("Scheme selection base class should yield the expected type and allow_remitter_fee")
@ParameterizedTest(name = "object={0}, expected type={1}, expected allow_remitter_fee={2}")
@MethodSource("provideSchemeSelectionTestParameters")
public void baseClassShouldYieldExpectedDetails(
SchemeSelection schemeSelection, SchemeSelection.Type expectedType, boolean expectAllowRemitterFee) {
assertEquals(schemeSelection.getType(), expectedType);
assertEquals(schemeSelection.allowRemitterFee(), expectAllowRemitterFee);
}

private static Stream<Arguments> provideSchemeSelectionTestParameters() {
return Stream.of(
Arguments.of(
SchemeSelection.instantOnly().allowRemitterFee(true).build(),
SchemeSelection.Type.INSTANT_ONLY,
true),
Arguments.of(
SchemeSelection.instantOnly().allowRemitterFee(false).build(),
SchemeSelection.Type.INSTANT_ONLY,
false),
Arguments.of(
SchemeSelection.instantPreferred()
.allowRemitterFee(true)
.build(),
SchemeSelection.Type.INSTANT_PREFERRED,
true),
Arguments.of(
SchemeSelection.instantPreferred()
.allowRemitterFee(false)
.build(),
SchemeSelection.Type.INSTANT_PREFERRED,
false));
}
}
Loading

0 comments on commit 600f252

Please sign in to comment.