diff --git a/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql b/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql index 381a74fd..36f83a6a 100644 --- a/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql +++ b/src/main/resources/db/changelog/5-hs-office/510-membership/5108-hs-office-membership-test-data.sql @@ -2,7 +2,7 @@ -- ============================================================================ ---changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATOR endDelimiter:--// +--changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATOR runOnChange:true validCheckSum:ANY endDelimiter:--// -- ---------------------------------------------------------------------------- /* @@ -11,7 +11,8 @@ create or replace procedure hs_office.membership_create_test_data( forPartnerNumber numeric(5), newMemberNumberSuffix char(2), - validity daterange) + newValidity daterange, + newStatus hs_office.HsOfficeMembershipStatus) language plpgsql as $$ declare relatedPartner hs_office.partner; @@ -21,24 +22,35 @@ begin raise notice 'creating test Membership: M-% %', forPartnerNumber, newMemberNumberSuffix; raise notice '- using partner (%): %', relatedPartner.uuid, relatedPartner; - insert - into hs_office.membership (uuid, partneruuid, memberNumberSuffix, validity, status) - values (uuid_generate_v4(), relatedPartner.uuid, newMemberNumberSuffix, validity, 'ACTIVE'); + if not exists (select true + from hs_office.membership + where partneruuid = relatedPartner.uuid and memberNumberSuffix = newMemberNumberSuffix) + then + insert into hs_office.membership (uuid, partneruuid, memberNumberSuffix, validity, status) + values (uuid_generate_v4(), relatedPartner.uuid, newMemberNumberSuffix, + newValidity, newStatus); + else + update hs_office.membership + set memberNumberSuffix = newMemberNumberSuffix, + validity = newValidity, + status = newStatus + where partneruuid = relatedPartner.uuid; + end if; end; $$; --// -- ============================================================================ ---changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATION context:!without-test-data endDelimiter:--// +--changeset michael.hoennig:hs-office-membership-TEST-DATA-GENERATION runOnChange:true validCheckSum:ANY context:!without-test-data endDelimiter:--// -- ---------------------------------------------------------------------------- do language plpgsql $$ begin call base.defineContext('creating Membership test-data', null, 'superuser-alex@hostsharing.net', 'rbac.global#global:ADMIN'); - call hs_office.membership_create_test_data(10001, '01', daterange('20221001' , '20241231', '[)')); - call hs_office.membership_create_test_data(10002, '02', daterange('20221001' , '20251231', '[]')); - call hs_office.membership_create_test_data(10003, '03', daterange('20221001' , null, '[]')); + call hs_office.membership_create_test_data(10001, '01', daterange('20221001' , '20241231', '[)'), 'CANCELLED'); + call hs_office.membership_create_test_data(10002, '02', daterange('20221001' , '20251231', '[]'), 'CANCELLED'); + call hs_office.membership_create_test_data(10003, '03', daterange('20221001' , null, '[]'), 'ACTIVE'); end; $$; --// diff --git a/src/test/java/net/hostsharing/hsadminng/hs/migration/LiquibaseCompatibilityIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/migration/LiquibaseCompatibilityIntegrationTest.java index 9e8830f7..e674d7ae 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/migration/LiquibaseCompatibilityIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/migration/LiquibaseCompatibilityIntegrationTest.java @@ -37,6 +37,7 @@ import static org.springframework.test.context.jdbc.Sql.ExecutionPhase.BEFORE_TE @Tag("officeIntegrationTest") @DataJpaTest(properties = { "spring.datasource.url=jdbc:tc:postgresql:15.5-bookworm:///liquibaseMigrationTestTC", + "hsadminng.superuser=${HSADMINNG_SUPERUSER:import-superuser@hostsharing.net}", "spring.liquibase.enabled=false" // @Sql should go first, Liquibase will be initialized programmatically }) @DirtiesContext diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java index 98a63be4..11d8ee95 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipControllerAcceptanceTest.java @@ -87,7 +87,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle "memberNumberSuffix": "01", "validFrom": "2022-10-01", "validTo": "2024-12-30", - "status": "ACTIVE" + "status": "CANCELLED" }, { "partner": { "partnerNumber": "P-10002" }, @@ -95,7 +95,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle "memberNumberSuffix": "02", "validFrom": "2022-10-01", "validTo": "2025-12-31", - "status": "ACTIVE" + "status": "CANCELLED" }, { "partner": { "partnerNumber": "P-10003" }, @@ -134,7 +134,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle "memberNumberSuffix": "01", "validFrom": "2022-10-01", "validTo": "2024-12-30", - "status": "ACTIVE" + "status": "CANCELLED" } ] """)); @@ -162,7 +162,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle "memberNumberSuffix": "02", "validFrom": "2022-10-01", "validTo": "2025-12-31", - "status": "ACTIVE" + "status": "CANCELLED" } ] """)); @@ -240,7 +240,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle "memberNumberSuffix": "01", "validFrom": "2022-10-01", "validTo": "2024-12-30", - "status": "ACTIVE" + "status": "CANCELLED" } """)); // @formatter:on } @@ -326,7 +326,7 @@ class HsOfficeMembershipControllerAcceptanceTest extends ContextBasedTestWithCle .matches(mandate -> { assertThat(mandate.getPartner().toShortString()).isEqualTo("P-10001"); assertThat(mandate.getMemberNumberSuffix()).isEqualTo(givenMembership.getMemberNumberSuffix()); - assertThat(mandate.getValidity().asString()).isEqualTo("[2022-11-01,2026-01-01)"); + assertThat(mandate.getValidity().asString()).isEqualTo("[2025-02-01,2026-01-01)"); assertThat(mandate.getStatus()).isEqualTo(CANCELLED); return true; }); diff --git a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java index c05c1a34..b734a82d 100644 --- a/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java +++ b/src/test/java/net/hostsharing/hsadminng/hs/office/membership/HsOfficeMembershipRepositoryIntegrationTest.java @@ -191,8 +191,8 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCl // then exactlyTheseMembershipsAreReturned( result, - "Membership(M-1000101, P-10001, [2022-10-01,2024-12-31), ACTIVE)", - "Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), ACTIVE)", + "Membership(M-1000101, P-10001, [2022-10-01,2024-12-31), CANCELLED)", + "Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), CANCELLED)", "Membership(M-1000303, P-10003, [2022-10-01,), ACTIVE)"); } @@ -208,7 +208,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCl // then exactlyTheseMembershipsAreReturned( result, - "Membership(M-1000101, P-10001, [2022-10-01,2024-12-31), ACTIVE)"); + "Membership(M-1000101, P-10001, [2022-10-01,2024-12-31), CANCELLED)"); } @Test @@ -223,7 +223,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCl assertThat(result) .isNotNull() .extracting(Object::toString) - .isEqualTo("Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), ACTIVE)"); + .isEqualTo("Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), CANCELLED)"); } @Test @@ -238,7 +238,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCl assertThat(result) .isNotNull() .extracting(Object::toString) - .isEqualTo("Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), ACTIVE)"); + .isEqualTo("Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), CANCELLED)"); } @Test @@ -252,7 +252,7 @@ class HsOfficeMembershipRepositoryIntegrationTest extends ContextBasedTestWithCl // then exactlyTheseMembershipsAreReturned( result, - "Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), ACTIVE)"); + "Membership(M-1000202, P-10002, [2022-10-01,2026-01-01), CANCELLED)"); } }