SEPA-Mandate signed date and patcher
This commit is contained in:
@@ -15,6 +15,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
class HsOfficeMembershipEntityUnitTest {
|
||||
|
||||
public static final LocalDate GIVEN_VALID_FROM = LocalDate.parse("2020-01-01");
|
||||
|
||||
final HsOfficeMembershipEntity givenMembership = HsOfficeMembershipEntity.builder()
|
||||
.memberNumber(10001)
|
||||
.partner(TEST_PARTNER)
|
||||
@@ -53,10 +54,20 @@ class HsOfficeMembershipEntityUnitTest {
|
||||
assertThat(givenMembership.getReasonForTermination()).isEqualTo(HsOfficeReasonForTermination.CANCELLATION);
|
||||
}
|
||||
|
||||
@Test
|
||||
void settingValidFromKeepsValidTo() {
|
||||
givenMembership.setValidFrom(LocalDate.parse("2020-01-01"));
|
||||
assertThat(givenMembership.getValidFrom()).isEqualTo(LocalDate.parse("2020-01-01"));
|
||||
assertThat(givenMembership.getValidTo()).isNull();
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void settingValidToKeepsValidFrom() {
|
||||
givenMembership.setValidTo(LocalDate.parse("2024-12-31"));
|
||||
assertThat(givenMembership.getValidity().lower()).isEqualTo(GIVEN_VALID_FROM);
|
||||
assertThat(givenMembership.getValidFrom()).isEqualTo(GIVEN_VALID_FROM);
|
||||
assertThat(givenMembership.getValidTo()).isEqualTo(LocalDate.parse("2024-12-31"));
|
||||
|
||||
}
|
||||
|
||||
private static void invokePrePersist(final HsOfficeMembershipEntity membershipEntity)
|
||||
|
@@ -134,6 +134,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest {
|
||||
"debitorUuid": "%s",
|
||||
"bankAccountUuid": "%s",
|
||||
"reference": "temp ref CAT A",
|
||||
"agreement": "2020-01-02",
|
||||
"validFrom": "2022-10-13"
|
||||
}
|
||||
""".formatted(givenDebitor.getUuid(), givenBankAccount.getUuid()))
|
||||
@@ -200,6 +201,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest {
|
||||
"debitorUuid": "%s",
|
||||
"bankAccountUuid": "%s",
|
||||
"reference": "temp ref CAT C",
|
||||
"agreement": "2022-10-12",
|
||||
"validFrom": "2022-10-13",
|
||||
"validTo": "2024-12-31"
|
||||
}
|
||||
@@ -229,6 +231,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest {
|
||||
"debitorUuid": "%s",
|
||||
"bankAccountUuid": "%s",
|
||||
"reference": "temp refCAT D",
|
||||
"agreement": "2022-10-12",
|
||||
"validFrom": "2022-10-13",
|
||||
"validTo": "2024-12-31"
|
||||
}
|
||||
@@ -403,7 +406,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest {
|
||||
// finally, the sepaMandate is actually updated
|
||||
assertThat(sepaMandateRepo.findByUuid(givenSepaMandate.getUuid())).isPresent().get()
|
||||
.matches(mandate -> {
|
||||
assertThat(mandate.getValidity().asString()).isEqualTo("[2022-11-01,)");
|
||||
assertThat(mandate.getValidity().asString()).isEqualTo("[2022-11-01,2023-03-31)");
|
||||
return true;
|
||||
});
|
||||
}
|
||||
@@ -480,6 +483,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest {
|
||||
.debitor(givenDebitor)
|
||||
.bankAccount(givenBankAccount)
|
||||
.reference("temp ref CAT Z")
|
||||
.agreement(LocalDate.parse("2022-10-31"))
|
||||
.validity(Range.closedOpen(
|
||||
LocalDate.parse("2022-11-01"), LocalDate.parse("2023-03-31")))
|
||||
.build();
|
||||
|
@@ -0,0 +1,98 @@
|
||||
package net.hostsharing.hsadminng.hs.office.sepamandate;
|
||||
|
||||
import com.vladmihalcea.hibernate.type.range.Range;
|
||||
import net.hostsharing.hsadminng.hs.office.debitor.HsOfficeDebitorEntity;
|
||||
import net.hostsharing.hsadminng.hs.office.generated.api.v1.model.HsOfficeSepaMandatePatchResource;
|
||||
import net.hostsharing.test.PatchUnitTestBase;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.TestInstance;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import javax.persistence.EntityManager;
|
||||
import java.time.LocalDate;
|
||||
import java.util.UUID;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
import static net.hostsharing.hsadminng.hs.office.bankaccount.TestHsOfficeBankAccount.TEST_BANK_ACCOUNT;
|
||||
import static net.hostsharing.hsadminng.hs.office.debitor.TestHsOfficeDebitor.TEST_DEBITOR;
|
||||
import static org.junit.jupiter.api.TestInstance.Lifecycle.PER_CLASS;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.lenient;
|
||||
|
||||
@TestInstance(PER_CLASS)
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class HsOfficeSepaMandateEntityPatcherUnitTest extends PatchUnitTestBase<
|
||||
HsOfficeSepaMandatePatchResource,
|
||||
HsOfficeSepaMandateEntity
|
||||
> {
|
||||
|
||||
private static final UUID INITIAL_SepaMandate_UUID = UUID.randomUUID();
|
||||
private static final LocalDate GIVEN_VALID_FROM = LocalDate.parse("2020-04-15");
|
||||
private static final LocalDate PATCHED_VALID_FROM = LocalDate.parse("2022-10-30");
|
||||
private static final LocalDate PATCHED_VALID_TO = LocalDate.parse("2022-12-31");
|
||||
private static final LocalDate PATCHED_AGREEMENT = LocalDate.parse("2022-11-01");
|
||||
private static final String PATCHED_REFERENCE = "ref sepamandate-patched";
|
||||
|
||||
@Mock
|
||||
private EntityManager em;
|
||||
|
||||
@BeforeEach
|
||||
void initMocks() {
|
||||
lenient().when(em.getReference(eq(HsOfficeDebitorEntity.class), any())).thenAnswer(invocation ->
|
||||
HsOfficeDebitorEntity.builder().uuid(invocation.getArgument(1)).build());
|
||||
lenient().when(em.getReference(eq(HsOfficeSepaMandateEntity.class), any())).thenAnswer(invocation ->
|
||||
HsOfficeSepaMandateEntity.builder().uuid(invocation.getArgument(1)).build());
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HsOfficeSepaMandateEntity newInitialEntity() {
|
||||
final var entity = new HsOfficeSepaMandateEntity();
|
||||
entity.setUuid(INITIAL_SepaMandate_UUID);
|
||||
entity.setDebitor(TEST_DEBITOR);
|
||||
entity.setBankAccount(TEST_BANK_ACCOUNT);
|
||||
entity.setReference("ref sepamandate");
|
||||
entity.setAgreement(LocalDate.parse("2022-10-28"));
|
||||
entity.setValidity(Range.closedInfinite(GIVEN_VALID_FROM));
|
||||
return entity;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HsOfficeSepaMandatePatchResource newPatchResource() {
|
||||
return new HsOfficeSepaMandatePatchResource();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected HsOfficeSepaMandateEntityPatcher createPatcher(final HsOfficeSepaMandateEntity sepaMandate) {
|
||||
return new HsOfficeSepaMandateEntityPatcher(sepaMandate);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Stream<Property> propertyTestDescriptors() {
|
||||
return Stream.of(
|
||||
new JsonNullableProperty<>(
|
||||
"reference",
|
||||
HsOfficeSepaMandatePatchResource::setReference,
|
||||
PATCHED_REFERENCE,
|
||||
HsOfficeSepaMandateEntity::setReference),
|
||||
|
||||
new JsonNullableProperty<>(
|
||||
"agreement",
|
||||
HsOfficeSepaMandatePatchResource::setAgreement,
|
||||
PATCHED_AGREEMENT,
|
||||
HsOfficeSepaMandateEntity::setAgreement),
|
||||
new JsonNullableProperty<>(
|
||||
"validfrom",
|
||||
HsOfficeSepaMandatePatchResource::setValidFrom,
|
||||
PATCHED_VALID_FROM,
|
||||
HsOfficeSepaMandateEntity::setValidFrom),
|
||||
new JsonNullableProperty<>(
|
||||
"validto",
|
||||
HsOfficeSepaMandatePatchResource::setValidTo,
|
||||
PATCHED_VALID_TO,
|
||||
HsOfficeSepaMandateEntity::setValidTo)
|
||||
);
|
||||
}
|
||||
}
|
@@ -7,14 +7,17 @@ import org.junit.jupiter.api.Test;
|
||||
import java.time.LocalDate;
|
||||
|
||||
import static net.hostsharing.hsadminng.hs.office.debitor.TestHsOfficeDebitor.TEST_DEBITOR;
|
||||
import static net.hostsharing.hsadminng.mapper.PostgresDateRange.toPostgresDateRange;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class HsOfficeSepaMandateEntityUnitTest {
|
||||
public static final LocalDate GIVEN_VALID_FROM = LocalDate.parse("2020-01-01");
|
||||
public static final LocalDate GIVEN_VALID_TO = LocalDate.parse("2030-12-31");
|
||||
|
||||
final HsOfficeSepaMandateEntity givenSepaMandate = HsOfficeSepaMandateEntity.builder()
|
||||
.debitor(TEST_DEBITOR)
|
||||
.reference("some-ref")
|
||||
.validity(Range.closedOpen(LocalDate.parse("2020-01-01"), LocalDate.parse("2031-01-01")))
|
||||
.validity(toPostgresDateRange(GIVEN_VALID_FROM, GIVEN_VALID_TO))
|
||||
.bankAccount(HsOfficeBankAccountEntity.builder().iban("some label").build())
|
||||
.build();
|
||||
|
||||
@@ -31,4 +34,20 @@ class HsOfficeSepaMandateEntityUnitTest {
|
||||
|
||||
assertThat(result).isEqualTo("some-ref");
|
||||
}
|
||||
|
||||
@Test
|
||||
void settingValidFromKeepsValidTo() {
|
||||
givenSepaMandate.setValidFrom(LocalDate.parse("2023-12-31"));
|
||||
assertThat(givenSepaMandate.getValidFrom()).isEqualTo(LocalDate.parse("2023-12-31"));
|
||||
assertThat(givenSepaMandate.getValidTo()).isEqualTo(GIVEN_VALID_TO);
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void settingValidToKeepsValidFrom() {
|
||||
givenSepaMandate.setValidTo(LocalDate.parse("2024-12-31"));
|
||||
assertThat(givenSepaMandate.getValidFrom()).isEqualTo(GIVEN_VALID_FROM);
|
||||
assertThat(givenSepaMandate.getValidTo()).isEqualTo(LocalDate.parse("2024-12-31"));
|
||||
}
|
||||
|
||||
}
|
||||
|
@@ -78,6 +78,7 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.debitor(givenDebitor)
|
||||
.bankAccount(givenBankAccount)
|
||||
.reference("temp ref A")
|
||||
.agreement(LocalDate.parse( "2020-01-02"))
|
||||
.validity(Range.closedOpen(
|
||||
LocalDate.parse("2020-01-01"), LocalDate.parse("2023-01-01")))
|
||||
.build();
|
||||
@@ -110,6 +111,7 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.debitor(givenDebitor)
|
||||
.bankAccount(givenBankAccount)
|
||||
.reference("temp ref B")
|
||||
.agreement(LocalDate.parse("2020-01-02"))
|
||||
.validity(Range.closedOpen(
|
||||
LocalDate.parse("2020-01-01"), LocalDate.parse("2023-01-01")))
|
||||
.build();
|
||||
@@ -178,9 +180,9 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
// then
|
||||
allTheseSepaMandatesAreReturned(
|
||||
result,
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02100500000054540402, refSeconde.K., [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, [2022-10-01,2027-01-01))");
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, 2022-09-30, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02100500000054540402, refSeconde.K., 2022-09-30, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, 2022-09-30, [2022-10-01,2027-01-01))");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -194,7 +196,7 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
// then:
|
||||
exactlyTheseSepaMandatesAreReturned(
|
||||
result,
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, [2022-10-01,2027-01-01))");
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, 2022-09-30, [2022-10-01,2027-01-01))");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -212,9 +214,9 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
// then
|
||||
exactlyTheseSepaMandatesAreReturned(
|
||||
result,
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02100500000054540402, refSeconde.K., [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, [2022-10-01,2027-01-01))");
|
||||
"SEPA-Mandate(DE02120300000000202051, refFirstGmbH, 2022-09-30, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02100500000054540402, refSeconde.K., 2022-09-30, [2022-10-01,2027-01-01))",
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, 2022-09-30, [2022-10-01,2027-01-01))");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -228,7 +230,7 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
// then
|
||||
exactlyTheseSepaMandatesAreReturned(
|
||||
result,
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, [2022-10-01,2027-01-01))");
|
||||
"SEPA-Mandate(DE02300209000106531065, refThirdOHG, 2022-09-30, [2022-10-01,2027-01-01))");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -420,6 +422,7 @@ class HsOfficeSepaMandateRepositoryIntegrationTest extends ContextBasedTest {
|
||||
.debitor(givenDebitor)
|
||||
.bankAccount(givenBankAccount)
|
||||
.reference("temp ref X")
|
||||
.agreement(LocalDate.parse( "2020-01-02"))
|
||||
.validity(Range.closedOpen(
|
||||
LocalDate.parse("2020-01-01"), LocalDate.parse("2023-01-01")))
|
||||
.build();
|
||||
|
Reference in New Issue
Block a user