feature/prefixes-for-partner-member-debitor-in-api (#122)
Co-authored-by: Michael Hoennig <michael@hoennig.de> Reviewed-on: https://dev.hostsharing.net/hostsharing/hs.hsadmin.ng/pulls/122 Reviewed-by: Timotheus Pokorra <timotheus.pokorra@hostsharing.net>
This commit is contained in:
@@ -77,7 +77,7 @@ public class ArchitectureTest {
|
||||
"..rbac.grant",
|
||||
"..rbac.role",
|
||||
"..rbac.object",
|
||||
"..stringify"
|
||||
"..repr"
|
||||
// ATTENTION: Don't simply add packages here, also add arch rules for the new package!
|
||||
);
|
||||
|
||||
|
@@ -72,7 +72,7 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
EntityManager em;
|
||||
|
||||
@Nested
|
||||
class ListDebitors {
|
||||
class GetListOfDebitors {
|
||||
|
||||
@Test
|
||||
void globalAdmin_withoutAssumedRoles_canViewAllDebitors_ifNoCriteriaGiven() {
|
||||
@@ -110,10 +110,10 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
"phoneNumbers": { "phone_office": "+49 123 1234567" }
|
||||
}
|
||||
},
|
||||
"debitorNumber": 1000111,
|
||||
"debitorNumber": "D-1000111",
|
||||
"debitorNumberSuffix": "11",
|
||||
"partner": {
|
||||
"partnerNumber": 10001,
|
||||
"partnerNumber": "P-10001",
|
||||
"partnerRel": {
|
||||
"anchor": {
|
||||
"personType": "LEGAL_PERSON",
|
||||
@@ -165,10 +165,10 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
"emailAddresses": { "main": "contact-admin@secondcontact.example.com" }
|
||||
}
|
||||
},
|
||||
"debitorNumber": 1000212,
|
||||
"debitorNumber": "D-1000212",
|
||||
"debitorNumberSuffix": "12",
|
||||
"partner": {
|
||||
"partnerNumber": 10002,
|
||||
"partnerNumber": "P-10002",
|
||||
"partnerRel": {
|
||||
"anchor": {"tradeName": "Hostsharing eG"},
|
||||
"holder": {"tradeName": "Second e.K."},
|
||||
@@ -199,10 +199,10 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
"emailAddresses": { "main": "contact-admin@thirdcontact.example.com" }
|
||||
}
|
||||
},
|
||||
"debitorNumber": 1000313,
|
||||
"debitorNumber": "D-1000313",
|
||||
"debitorNumberSuffix": "13",
|
||||
"partner": {
|
||||
"partnerNumber": 10003,
|
||||
"partnerNumber": "P-10003",
|
||||
"partnerRel": {
|
||||
"anchor": {"tradeName": "Hostsharing eG"},
|
||||
"holder": {"tradeName": "Third OHG"},
|
||||
@@ -237,15 +237,15 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.header("current-subject", "superuser-alex@hostsharing.net")
|
||||
.port(port)
|
||||
.when()
|
||||
.get("http://localhost/api/hs/office/debitors?debitorNumber=1000212")
|
||||
.get("http://localhost/api/hs/office/debitors?debitorNumber=D-1000212")
|
||||
.then().log().all().assertThat()
|
||||
.statusCode(200)
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"debitorNumber": 1000212,
|
||||
"partner": { "partnerNumber": 10002 },
|
||||
"debitorNumber": "D-1000212",
|
||||
"partner": { "partnerNumber": "P-10002" },
|
||||
"debitorRel": {
|
||||
"contact": { "caption": "second contact" }
|
||||
},
|
||||
@@ -260,7 +260,7 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
}
|
||||
|
||||
@Nested
|
||||
class AddDebitor {
|
||||
class PostNewDebitor {
|
||||
|
||||
@Test
|
||||
void globalAdmin_withoutAssumedRole_canAddDebitorWithBankAccount() {
|
||||
@@ -436,7 +436,7 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
}
|
||||
|
||||
@Nested
|
||||
class GetDebitor {
|
||||
class GetSingleDebitorByUuid {
|
||||
|
||||
@Test
|
||||
void globalAdmin_withoutAssumedRole_canGetArbitraryDebitor() {
|
||||
@@ -534,8 +534,8 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"debitorNumber": 1000111,
|
||||
"partner": { "partnerNumber": 10001 },
|
||||
"debitorNumber": "D-1000111",
|
||||
"partner": { "partnerNumber": "P-10001" },
|
||||
"debitorRel": { "contact": { "caption": "first contact" } },
|
||||
"refundBankAccount": null
|
||||
}
|
||||
@@ -581,10 +581,10 @@ class HsOfficeDebitorControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
"mark": null,
|
||||
"contact": { "caption": "fourth contact" }
|
||||
},
|
||||
"debitorNumber": 10004${debitorNumberSuffix},
|
||||
"debitorNumber": "D-10004${debitorNumberSuffix}",
|
||||
"debitorNumberSuffix": "${debitorNumberSuffix}",
|
||||
"partner": {
|
||||
"partnerNumber": 10004,
|
||||
"partnerNumber": "P-10004",
|
||||
"partnerRel": {
|
||||
"anchor": { "tradeName": "Hostsharing eG" },
|
||||
"holder": { "tradeName": "Fourth eG" },
|
||||
|
@@ -65,9 +65,9 @@ class HsOfficeDebitorEntityUnitTest {
|
||||
.build())
|
||||
.build();
|
||||
|
||||
final var result = given.getDebitorNumber();
|
||||
final var result = given.getTaggedDebitorNumber();
|
||||
|
||||
assertThat(result).isEqualTo(1234567);
|
||||
assertThat(result).isEqualTo("D-1234567");
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -78,7 +78,7 @@ class HsOfficeDebitorEntityUnitTest {
|
||||
.partner(null)
|
||||
.build();
|
||||
|
||||
final var result = given.getDebitorNumber();
|
||||
final var result = given.getTaggedDebitorNumber();
|
||||
|
||||
assertThat(result).isNull();
|
||||
}
|
||||
@@ -91,7 +91,7 @@ class HsOfficeDebitorEntityUnitTest {
|
||||
.partner(HsOfficePartnerEntity.builder().build())
|
||||
.build();
|
||||
|
||||
final var result = given.getDebitorNumber();
|
||||
final var result = given.getTaggedDebitorNumber();
|
||||
|
||||
assertThat(result).isNull();
|
||||
}
|
||||
@@ -106,7 +106,7 @@ class HsOfficeDebitorEntityUnitTest {
|
||||
.build())
|
||||
.build();
|
||||
|
||||
final var result = given.getDebitorNumber();
|
||||
final var result = given.getTaggedDebitorNumber();
|
||||
|
||||
assertThat(result).isNull();
|
||||
}
|
||||
|
@@ -77,24 +77,24 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"partner": { "partnerNumber": 10001 },
|
||||
"memberNumber": 1000101,
|
||||
"partner": { "partnerNumber": "P-10001" },
|
||||
"memberNumber": "M-1000101",
|
||||
"memberNumberSuffix": "01",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
"status": "ACTIVE"
|
||||
},
|
||||
{
|
||||
"partner": { "partnerNumber": 10002 },
|
||||
"memberNumber": 1000202,
|
||||
"partner": { "partnerNumber": "P-10002" },
|
||||
"memberNumber": "M-1000202",
|
||||
"memberNumberSuffix": "02",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
"status": "ACTIVE"
|
||||
},
|
||||
{
|
||||
"partner": { "partnerNumber": 10003 },
|
||||
"memberNumber": 1000303,
|
||||
"partner": { "partnerNumber": "P-10003" },
|
||||
"memberNumber": "M-1000303",
|
||||
"memberNumberSuffix": "03",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
@@ -124,8 +124,8 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"partner": { "partnerNumber": 10001 },
|
||||
"memberNumber": 1000101,
|
||||
"partner": { "partnerNumber": "P-10001" },
|
||||
"memberNumber": "M-1000101",
|
||||
"memberNumberSuffix": "01",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
@@ -144,7 +144,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.header("current-subject", "superuser-alex@hostsharing.net")
|
||||
.port(port)
|
||||
.when()
|
||||
.queryParam("memberNumber", 1000202 )
|
||||
.queryParam("memberNumber", "M-1000202" )
|
||||
.get("http://localhost/api/hs/office/memberships")
|
||||
.then().log().all().assertThat()
|
||||
.statusCode(200)
|
||||
@@ -152,8 +152,8 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"partner": { "partnerNumber": 10002 },
|
||||
"memberNumber": 1000202,
|
||||
"partner": { "partnerNumber": "P-10002" },
|
||||
"memberNumber": "M-1000202",
|
||||
"memberNumberSuffix": "02",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
@@ -195,8 +195,8 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.statusCode(201)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("uuid", isUuidValid())
|
||||
.body("partner.partnerNumber", is(10003))
|
||||
.body("memberNumber", is(expectedMemberNumber))
|
||||
.body("partner.partnerNumber", is("P-10003"))
|
||||
.body("memberNumber", is("M-" + expectedMemberNumber))
|
||||
.body("memberNumberSuffix", is(givenMemberSuffix))
|
||||
.body("validFrom", is("2022-10-13"))
|
||||
.body("validTo", equalTo(null))
|
||||
@@ -230,8 +230,8 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"partner": { "partnerNumber": 10001 },
|
||||
"memberNumber": 1000101,
|
||||
"partner": { "partnerNumber": "P-10001" },
|
||||
"memberNumber": "M-1000101",
|
||||
"memberNumberSuffix": "01",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
@@ -256,7 +256,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
}
|
||||
|
||||
@Test
|
||||
void parnerRelAgent_canGetRelatedMembership() {
|
||||
void partnerRelAgent_canGetRelatedMembership() {
|
||||
context.define("superuser-alex@hostsharing.net");
|
||||
final var givenMembershipUuid = membershipRepo.findMembershipByMemberNumber(1000303).getUuid();
|
||||
|
||||
@@ -272,8 +272,8 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"partner": { "partnerNumber": 10003 },
|
||||
"memberNumber": 1000303,
|
||||
"partner": { "partnerNumber": "P-10003" },
|
||||
"memberNumber": "M-1000303",
|
||||
"memberNumberSuffix": "03",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": null,
|
||||
@@ -309,7 +309,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle
|
||||
.statusCode(200)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("uuid", isUuidValid())
|
||||
.body("partner.partnerNumber", is(givenMembership.getPartner().getPartnerNumber()))
|
||||
.body("partner.partnerNumber", is("P-" + givenMembership.getPartner().getPartnerNumber()))
|
||||
.body("memberNumberSuffix", is(givenMembership.getMemberNumberSuffix()))
|
||||
.body("validFrom", is("2022-11-01"))
|
||||
.body("validTo", is("2023-12-31"))
|
||||
|
@@ -46,14 +46,14 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
EntityManagerWrapper em;
|
||||
|
||||
@Nested
|
||||
class GetMemberships {
|
||||
class GetListOfMemberships {
|
||||
|
||||
@Test
|
||||
void findMembershipByNonExistingMemberNumberReturnsEmptyList() throws Exception {
|
||||
|
||||
// when
|
||||
mockMvc.perform(MockMvcRequestBuilders
|
||||
.get("/api/hs/office/memberships?memberNumber=12345")
|
||||
.get("/api/hs/office/memberships?memberNumber=M-1234501")
|
||||
.header("current-subject", "superuser-alex@hostsharing.net")
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content("""
|
||||
@@ -73,7 +73,7 @@ public class HsOfficeMembershipControllerRestTest {
|
||||
}
|
||||
|
||||
@Nested
|
||||
class AddMembership {
|
||||
class PostNewMembership {
|
||||
|
||||
@Test
|
||||
void respondBadRequest_ifPartnerUuidIsMissing() throws Exception {
|
||||
|
@@ -71,11 +71,11 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{ partnerNumber: 10001 },
|
||||
{ partnerNumber: 10002 },
|
||||
{ partnerNumber: 10003 },
|
||||
{ partnerNumber: 10004 },
|
||||
{ partnerNumber: 10010 }
|
||||
{ partnerNumber: "P-10001" },
|
||||
{ partnerNumber: "P-10002" },
|
||||
{ partnerNumber: "P-10003" },
|
||||
{ partnerNumber: "P-10004" },
|
||||
{ partnerNumber: "P-10010" }
|
||||
]
|
||||
"""));
|
||||
// @formatter:on
|
||||
@@ -100,7 +100,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("""
|
||||
{
|
||||
"partnerNumber": "20002",
|
||||
"partnerNumber": "P-20002",
|
||||
"partnerRel": {
|
||||
"anchor.uuid": "%s",
|
||||
"holder.uuid": "%s",
|
||||
@@ -123,7 +123,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"partnerNumber": 20002,
|
||||
"partnerNumber": "P-20002",
|
||||
"partnerRel": {
|
||||
"anchor": { "tradeName": "Hostsharing eG" },
|
||||
"holder": { "tradeName": "Third OHG" },
|
||||
@@ -159,7 +159,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("""
|
||||
{
|
||||
"partnerNumber": "20003",
|
||||
"partnerNumber": "P-20003",
|
||||
"partnerRel": {
|
||||
"anchor.uuid": "%s",
|
||||
"holder.uuid": "%s",
|
||||
@@ -197,7 +197,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("""
|
||||
{
|
||||
"partnerNumber": "20004",
|
||||
"partnerNumber": "P-20004",
|
||||
"partnerRel": {
|
||||
"anchor.uuid": "%s",
|
||||
"holder.uuid": "%s",
|
||||
@@ -247,7 +247,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"partnerNumber": 10001,
|
||||
"partnerNumber": "P-10001",
|
||||
"partnerRel": {
|
||||
"anchor": { "tradeName": "Hostsharing eG" },
|
||||
"holder": { "tradeName": "First GmbH" },
|
||||
@@ -320,7 +320,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("""
|
||||
{
|
||||
"partnerNumber": "20011",
|
||||
"partnerNumber": "P-20011",
|
||||
"partnerRel.uuid": "%s",
|
||||
"details": {
|
||||
"registrationOffice": "Temp Registergericht Aurich",
|
||||
@@ -339,7 +339,7 @@ class HsOfficePartnerControllerAcceptanceTest extends ContextBasedTestWithCleanu
|
||||
.contentType(ContentType.JSON)
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"partnerNumber": 20011,
|
||||
"partnerNumber": "P-20011",
|
||||
"partnerRel": {
|
||||
"anchor": { "tradeName": "Hostsharing eG" },
|
||||
"holder": { "tradeName": "Third OHG" },
|
||||
|
@@ -99,7 +99,7 @@ class HsOfficePartnerControllerRestTest {
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content("""
|
||||
{
|
||||
"partnerNumber": "20002",
|
||||
"partnerNumber": "P-20002",
|
||||
"partnerRel": {
|
||||
"anchor.uuid": "%s",
|
||||
"holder.uuid": "%s",
|
||||
@@ -136,7 +136,7 @@ class HsOfficePartnerControllerRestTest {
|
||||
.contentType(MediaType.APPLICATION_JSON)
|
||||
.content("""
|
||||
{
|
||||
"partnerNumber": "20002",
|
||||
"partnerNumber": "P-20002",
|
||||
"partnerRel": {
|
||||
"anchor.uuid": "%s",
|
||||
"holder.uuid": "%s",
|
||||
|
@@ -8,8 +8,9 @@ import net.hostsharing.hsadminng.hs.office.scenarios.contact.ReplaceContactData;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateExternalDebitorForPartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSelfDebitorForPartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.CreateSepaMandateForDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.FinallyDeleteSepaMandateForDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DeleteDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DontDeleteDefaultDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.FinallyDeleteSepaMandateForDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.InvalidateSepaMandateForDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.membership.CancelMembership;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.membership.CreateMembership;
|
||||
@@ -20,10 +21,9 @@ import net.hostsharing.hsadminng.hs.office.scenarios.membership.coopshares.Creat
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.membership.coopshares.CreateCoopSharesRevertTransaction;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.membership.coopshares.CreateCoopSharesSubscriptionTransaction;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.AddOperationsContactToPartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.CreatePartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.debitor.DeleteDebitor;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.DeletePartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.AddRepresentativeToPartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.CreatePartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.partner.DeletePartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.person.ShouldUpdatePersonData;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.RemoveOperationsContactFromPartner;
|
||||
import net.hostsharing.hsadminng.hs.office.scenarios.subscription.SubscribeToMailinglist;
|
||||
@@ -55,10 +55,10 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
|
||||
@Test
|
||||
@Order(1010)
|
||||
@Produces(explicitly = "Partner: P-31010 - Test AG", implicitly = {"Person: Test AG", "Contact: Test AG - Hamburg"})
|
||||
@Produces(explicitly = "Partner: P-31010 - Test AG", implicitly = { "Person: Test AG", "Contact: Test AG - Hamburg" })
|
||||
void shouldCreateLegalPersonAsPartner() {
|
||||
new CreatePartner(this)
|
||||
.given("partnerNumber", 31010)
|
||||
.given("partnerNumber", "P-31010")
|
||||
.given("personType", "LEGAL_PERSON")
|
||||
.given("tradeName", "Test AG")
|
||||
.given("contactCaption", "Test AG - Hamburg")
|
||||
@@ -77,10 +77,11 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
|
||||
@Test
|
||||
@Order(1011)
|
||||
@Produces(explicitly = "Partner: P-31011 - Michelle Matthieu", implicitly = {"Person: Michelle Matthieu", "Contact: Michelle Matthieu"})
|
||||
@Produces(explicitly = "Partner: P-31011 - Michelle Matthieu", implicitly = { "Person: Michelle Matthieu",
|
||||
"Contact: Michelle Matthieu" })
|
||||
void shouldCreateNaturalPersonAsPartner() {
|
||||
new CreatePartner(this)
|
||||
.given("partnerNumber", 31011)
|
||||
.given("partnerNumber", "P-31011")
|
||||
.given("personType", "NATURAL_PERSON")
|
||||
.given("givenName", "Michelle")
|
||||
.given("familyName", "Matthieu")
|
||||
@@ -148,7 +149,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Order(1090)
|
||||
void shouldDeletePartner() {
|
||||
new DeletePartner(this)
|
||||
.given("partnerNumber", 31020)
|
||||
.given("partnerNumber", "P-31020")
|
||||
.doRun();
|
||||
}
|
||||
|
||||
@@ -191,16 +192,16 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
.given("partnerName", "Test AG")
|
||||
.given("newContactCaption", "Test AG - China")
|
||||
.given("newPostalAddress", """
|
||||
"firm": "Test AG",
|
||||
"name": "Fi Zhong-Kha",
|
||||
"building": "Thi Chi Koh Building",
|
||||
"street": "No.2 Commercial Second Street",
|
||||
"district": "Niushan Wei Wu",
|
||||
"city": "Dongguan City",
|
||||
"province": "Guangdong Province",
|
||||
"country": "China"
|
||||
""")
|
||||
.given("newOfficePhoneNumber", "++15 999 654321" )
|
||||
"firm": "Test AG",
|
||||
"name": "Fi Zhong-Kha",
|
||||
"building": "Thi Chi Koh Building",
|
||||
"street": "No.2 Commercial Second Street",
|
||||
"district": "Niushan Wei Wu",
|
||||
"city": "Dongguan City",
|
||||
"province": "Guangdong Province",
|
||||
"country": "China"
|
||||
""")
|
||||
.given("newOfficePhoneNumber", "++15 999 654321")
|
||||
.given("newEmailAddress", "norden@test-ag.example.org")
|
||||
.doRun();
|
||||
}
|
||||
@@ -218,9 +219,9 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Test
|
||||
@Order(2010)
|
||||
@Requires("Partner: P-31010 - Test AG")
|
||||
@Produces("Debitor: Test AG - main debitor")
|
||||
@Produces("Debitor: D-3101000 - Test AG - main debitor")
|
||||
void shouldCreateSelfDebitorForPartner() {
|
||||
new CreateSelfDebitorForPartner(this, "Debitor: Test AG - main debitor")
|
||||
new CreateSelfDebitorForPartner(this)
|
||||
.given("partnerPersonTradeName", "Test AG")
|
||||
.given("billingContactCaption", "Test AG - billing department")
|
||||
.given("billingContactEmailAddress", "billing@test-ag.example.org")
|
||||
@@ -238,7 +239,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Test
|
||||
@Order(2011)
|
||||
@Requires("Person: Test AG")
|
||||
@Produces("Debitor: Billing GmbH")
|
||||
@Produces("Debitor: D-3101001 - Test AG - main debitor")
|
||||
void shouldCreateExternalDebitorForPartner() {
|
||||
new CreateExternalDebitorForPartner(this)
|
||||
.given("partnerPersonTradeName", "Test AG")
|
||||
@@ -258,9 +259,10 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Test
|
||||
@Order(2020)
|
||||
@Requires("Person: Test AG")
|
||||
@Produces(explicitly = "Debitor: D-3101000 - Test AG - delete debitor", permanent = false)
|
||||
void shouldDeleteDebitor() {
|
||||
new DeleteDebitor(this)
|
||||
.given("partnerNumber", 31020)
|
||||
.given("partnerNumber", "P-31020")
|
||||
.given("debitorSuffix", "02")
|
||||
.doRun();
|
||||
}
|
||||
@@ -271,7 +273,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Disabled("see TODO.spec in DontDeleteDefaultDebitor")
|
||||
void shouldNotDeleteDefaultDebitor() {
|
||||
new DontDeleteDefaultDebitor(this)
|
||||
.given("partnerNumber", 31010)
|
||||
.given("partnerNumber", "P-31010")
|
||||
.given("debitorSuffix", "00")
|
||||
.doRun();
|
||||
}
|
||||
@@ -283,7 +285,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
void shouldCreateSepaMandateForDebitor() {
|
||||
new CreateSepaMandateForDebitor(this)
|
||||
// existing debitor
|
||||
.given("debitorNumber", "3101000")
|
||||
.given("debitorNumber", "D-3101000")
|
||||
|
||||
// new sepa-mandate
|
||||
.given("mandateReference", "Test AG - main debitor")
|
||||
@@ -337,7 +339,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Produces("Coop-Shares SUBSCRIPTION Transaction")
|
||||
void shouldSubscribeCoopShares() {
|
||||
new CreateCoopSharesSubscriptionTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("reference", "sign 2024-01-15")
|
||||
.given("shareCount", 100)
|
||||
.given("comment", "Signing the Membership")
|
||||
@@ -350,7 +352,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Requires("Membership: M-3101000 - Test AG")
|
||||
void shouldRevertCoopSharesSubscription() {
|
||||
new CreateCoopSharesRevertTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("comment", "reverting some incorrect transaction")
|
||||
.given("dateOfIncorrectTransaction", "2024-02-15")
|
||||
.doRun();
|
||||
@@ -362,7 +364,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Produces("Coop-Shares CANCELLATION Transaction")
|
||||
void shouldCancelCoopSharesSubscription() {
|
||||
new CreateCoopSharesCancellationTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("reference", "cancel 2024-01-15")
|
||||
.given("sharesToCancel", 8)
|
||||
.given("comment", "Cancelling 8 Shares")
|
||||
@@ -376,9 +378,9 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Produces("Coop-Assets DEPOSIT Transaction")
|
||||
void shouldSubscribeCoopAssets() {
|
||||
new CreateCoopAssetsDepositTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("reference", "sign 2024-01-15")
|
||||
.given("assetValue", 100*64)
|
||||
.given("assetValue", 100 * 64)
|
||||
.given("comment", "disposal for initial shares")
|
||||
.given("transactionDate", "2024-01-15")
|
||||
.doRun();
|
||||
@@ -386,10 +388,10 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
|
||||
@Test
|
||||
@Order(4302)
|
||||
@Requires("Membership: M-3101000 - Test AG")
|
||||
@Requires("Coop-Assets DEPOSIT Transaction")
|
||||
void shouldRevertCoopAssetsSubscription() {
|
||||
new CreateCoopAssetsRevertTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("comment", "reverting some incorrect transaction")
|
||||
.given("dateOfIncorrectTransaction", "2024-02-15")
|
||||
.doRun();
|
||||
@@ -401,9 +403,9 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Produces("Coop-Assets DISBURSAL Transaction")
|
||||
void shouldDisburseCoopAssets() {
|
||||
new CreateCoopAssetsDisbursalTransaction(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("reference", "cancel 2024-01-15")
|
||||
.given("valueToDisburse", 8*64)
|
||||
.given("valueToDisburse", 8 * 64)
|
||||
.given("comment", "disbursal according to shares cancellation")
|
||||
.given("transactionDate", "2024-02-15")
|
||||
.doRun();
|
||||
@@ -414,7 +416,7 @@ class HsOfficeScenarioTests extends ScenarioTest {
|
||||
@Requires("Membership: M-3101000 - Test AG")
|
||||
void shouldCancelMembershipOfPartner() {
|
||||
new CancelMembership(this)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "M-3101000")
|
||||
.given("validTo", "2025-12-30")
|
||||
.given("newStatus", "CANCELLED")
|
||||
.doRun();
|
||||
|
@@ -12,4 +12,5 @@ public @interface Produces {
|
||||
String value() default ""; // same as explicitly, makes it possible to omit the property name
|
||||
String explicitly() default ""; // same as value
|
||||
String[] implicitly() default {};
|
||||
boolean permanent() default true; // false means that the object gets deleted again in the process
|
||||
}
|
||||
|
@@ -113,6 +113,8 @@ public abstract class ScenarioTest extends ContextBasedTest {
|
||||
// and it does not produce anything we already have (would cause errors)
|
||||
SetUtils.intersection(testMethodProduces, knowVariables().keySet()).isEmpty()
|
||||
) {
|
||||
assertThat(producesAnnot.permanent()).as("cannot depend on non-permanent producer: " + potentialProducerMethod);
|
||||
|
||||
// then we recursively produce the pre-requisites of the producer method
|
||||
callRequiredProducers(potentialProducerMethod);
|
||||
|
||||
|
@@ -9,8 +9,8 @@ import static org.springframework.http.HttpStatus.OK;
|
||||
|
||||
public class CreateSelfDebitorForPartner extends UseCase<CreateSelfDebitorForPartner> {
|
||||
|
||||
public CreateSelfDebitorForPartner(final ScenarioTest testSuite, final String resultAlias) {
|
||||
super(testSuite, resultAlias);
|
||||
public CreateSelfDebitorForPartner(final ScenarioTest testSuite) {
|
||||
super(testSuite);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -9,7 +9,7 @@ public class DeleteDebitor extends UseCase<DeleteDebitor> {
|
||||
public DeleteDebitor(final ScenarioTest testSuite) {
|
||||
super(testSuite);
|
||||
|
||||
requires("Debitor: Test AG - delete debitor", alias -> new CreateSelfDebitorForPartner(testSuite, alias)
|
||||
requires("Debitor: Test AG - delete debitor", alias -> new CreateSelfDebitorForPartner(testSuite)
|
||||
.given("partnerPersonTradeName", "Test AG")
|
||||
.given("billingContactCaption", "Test AG - billing department")
|
||||
.given("billingContactEmailAddress", "billing@test-ag.example.org")
|
||||
|
@@ -9,7 +9,7 @@ public class CreateCoopAssetsRevertTransaction extends CreateCoopAssetsTransacti
|
||||
|
||||
requires("CoopAssets-Transaction with incorrect assetValue", alias ->
|
||||
new CreateCoopAssetsDepositTransaction(testSuite)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "%{memberNumber}")
|
||||
.given("reference", "sign %{dateOfIncorrectTransaction}") // same as revertedAssetTx
|
||||
.given("assetValue", 10)
|
||||
.given("comment", "coop-assets deposit transaction with wrong asset value")
|
||||
|
@@ -9,7 +9,7 @@ public class CreateCoopSharesRevertTransaction extends CreateCoopSharesTransacti
|
||||
|
||||
requires("CoopShares-Transaction with incorrect shareCount", alias ->
|
||||
new CreateCoopSharesSubscriptionTransaction(testSuite)
|
||||
.given("memberNumber", "3101000")
|
||||
.given("memberNumber", "%{memberNumber}")
|
||||
.given("reference", "sign %{dateOfIncorrectTransaction}") // same as revertedShareTx
|
||||
.given("shareCount", 100)
|
||||
.given("comment", "coop-shares subscription transaction with wrong share count")
|
||||
|
@@ -72,21 +72,21 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000111 },
|
||||
"debitor": { "debitorNumber": "D-1000111" },
|
||||
"bankAccount": { "holder": "First GmbH" },
|
||||
"reference": "ref-10001-11",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": "2026-12-31"
|
||||
},
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000212 },
|
||||
"debitor": { "debitorNumber": "D-1000212" },
|
||||
"bankAccount": { "holder": "Second e.K." },
|
||||
"reference": "ref-10002-12",
|
||||
"validFrom": "2022-10-01",
|
||||
"validTo": "2026-12-31"
|
||||
},
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000313 },
|
||||
"debitor": { "debitorNumber": "D-1000313" },
|
||||
"bankAccount": { "holder": "Third OHG" },
|
||||
"reference": "ref-10003-13",
|
||||
"validFrom": "2022-10-01",
|
||||
@@ -113,7 +113,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.body("", lenientlyEquals("""
|
||||
[
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000111 },
|
||||
"debitor": { "debitorNumber": "D-1000111" },
|
||||
"bankAccount": {
|
||||
"iban": "DE02120300000000202051",
|
||||
"holder": "First GmbH"
|
||||
@@ -158,7 +158,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.statusCode(201)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("uuid", isUuidValid())
|
||||
.body("debitor.partner.partnerNumber", is(10003))
|
||||
.body("debitor.partner.partnerNumber", is("P-10003"))
|
||||
.body("bankAccount.iban", is("DE02200505501015871393"))
|
||||
.body("reference", is("temp ref CAT A"))
|
||||
.body("validFrom", is("2022-10-13"))
|
||||
@@ -280,7 +280,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000111 },
|
||||
"debitor": { "debitorNumber": "D-1000111" },
|
||||
"bankAccount": {
|
||||
"holder": "First GmbH",
|
||||
"iban": "DE02120300000000202051"
|
||||
@@ -327,7 +327,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.contentType("application/json")
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"debitor": { "debitorNumber": 1000111 },
|
||||
"debitor": { "debitorNumber": "D-1000111" },
|
||||
"bankAccount": {
|
||||
"holder": "First GmbH",
|
||||
"iban": "DE02120300000000202051"
|
||||
@@ -367,7 +367,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.statusCode(200)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("uuid", isUuidValid())
|
||||
.body("debitor.debitorNumber", is(1000111))
|
||||
.body("debitor.debitorNumber", is("D-1000111"))
|
||||
.body("bankAccount.iban", is("DE02120300000000202051"))
|
||||
.body("reference", is("temp ref CAT Z - patched"))
|
||||
.body("agreement", is("2020-06-01"))
|
||||
@@ -410,7 +410,7 @@ class HsOfficeSepaMandateControllerAcceptanceTest extends ContextBasedTestWithCl
|
||||
.statusCode(200)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("uuid", isUuidValid())
|
||||
.body("debitor.debitorNumber", is(1000111))
|
||||
.body("debitor.debitorNumber", is("D-1000111"))
|
||||
.body("bankAccount.iban", is("DE02120300000000202051"))
|
||||
.body("reference", is("temp ref CAT Z"))
|
||||
.body("validFrom", is("2022-11-01"))
|
||||
|
@@ -2,13 +2,13 @@ package net.hostsharing.hsadminng.rbac.test;
|
||||
|
||||
import lombok.*;
|
||||
import lombok.experimental.FieldNameConstants;
|
||||
import net.hostsharing.hsadminng.stringify.Stringify;
|
||||
import net.hostsharing.hsadminng.stringify.Stringifyable;
|
||||
import net.hostsharing.hsadminng.repr.Stringify;
|
||||
import net.hostsharing.hsadminng.repr.Stringifyable;
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
import static net.hostsharing.hsadminng.stringify.Stringify.stringify;
|
||||
import static net.hostsharing.hsadminng.repr.Stringify.stringify;
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class StringifyUnitTest {
|
||||
|
@@ -0,0 +1,22 @@
|
||||
package net.hostsharing.hsadminng.repr;
|
||||
|
||||
import org.junit.jupiter.api.Test;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.catchThrowable;
|
||||
|
||||
class TaggedNumberUnitTest {
|
||||
|
||||
@Test
|
||||
void cropsProperTag() {
|
||||
assertThat(TaggedNumber.cropTag("P-", "P-12345")).isEqualTo(12345);
|
||||
}
|
||||
|
||||
@Test
|
||||
void throwsExceptionForImproperTag() {
|
||||
final var exception = catchThrowable(() -> TaggedNumber.cropTag("P-", "X-12345"));
|
||||
assertThat(exception).isInstanceOf(IllegalArgumentException.class);
|
||||
assertThat(exception.getMessage()).isEqualTo("Expected P-... but got: X-12345");
|
||||
}
|
||||
|
||||
}
|
Reference in New Issue
Block a user