hs-office-coopshares: use only membership uuid in filter

This commit is contained in:
Michael Hoennig 2022-10-19 18:15:21 +02:00
parent 5764accbc5
commit ca0589d084
5 changed files with 56 additions and 16 deletions

View File

@ -40,14 +40,13 @@ public class HsOfficeCoopSharesTransactionController implements HsOfficeCoopShar
final String currentUser,
final String assumedRoles,
final UUID membershipUuid,
Integer memberNumber, // TODO: remove
final @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate fromValueDate,
final @DateTimeFormat(iso = DateTimeFormat.ISO.DATE) LocalDate toValueDate) {
context.define(currentUser, assumedRoles);
final var entities = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange(
memberNumber,
membershipUuid,
fromValueDate,
toValueDate);

View File

@ -14,13 +14,13 @@ public interface HsOfficeCoopSharesTransactionRepository extends Repository<HsOf
@Query("""
SELECT st FROM HsOfficeCoopSharesTransactionEntity st
WHERE (:memberNumber IS NULL OR st.membership.memberNumber = :memberNumber)
WHERE ( CAST(:membershipUuid AS org.hibernate.type.UUIDCharType) IS NULL OR st.membership.uuid = :membershipUuid)
AND ( CAST(:fromValueDate AS java.time.LocalDate) IS NULL OR (st.valueDate >= :fromValueDate))
AND ( CAST(:toValueDate AS java.time.LocalDate)IS NULL OR (st.valueDate <= :toValueDate))
ORDER BY st.membership.memberNumber, st.valueDate
""")
List<HsOfficeCoopSharesTransactionEntity> findCoopSharesTransactionByOptionalMembershipUuidAndDateRange(
Integer memberNumber, LocalDate fromValueDate, LocalDate toValueDate);
UUID membershipUuid, LocalDate fromValueDate, LocalDate toValueDate);
HsOfficeCoopSharesTransactionEntity save(final HsOfficeCoopSharesTransactionEntity entity);

View File

@ -14,12 +14,6 @@ get:
type: string
format: uuid
description: Optional UUID of the related membership.
- name: memberNumber
in: query
required: false
schema:
type: integer
description: Optional member number of the related membership.
- name: fromValueDate
in: query
required: false

View File

@ -75,12 +75,16 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
@Test
void globalAdmin_canFindCoopSharesTransactionsByMemberNumber() {
context.define("superuser-alex@hostsharing.net");
final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002)
.get(0);
RestAssured // @formatter:off
.given()
.header("current-user", "superuser-alex@hostsharing.net")
.port(port)
.when()
.get("http://localhost/api/hs/office/coopsharestransactions?memberNumber=10002")
.get("http://localhost/api/hs/office/coopsharestransactions?membershipUuid="+givenMembership.getUuid())
.then().log().all().assertThat()
.statusCode(200)
.contentType("application/json")
@ -114,13 +118,18 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
@Test
void globalAdmin_canFindCoopSharesTransactionsByMemberNumberAndDateRange() {
context.define("superuser-alex@hostsharing.net");
final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002)
.get(0);
RestAssured // @formatter:off
.given()
.given()
.header("current-user", "superuser-alex@hostsharing.net")
.port(port)
.when()
.get("http://localhost/api/hs/office/coopsharestransactions?memberNumber=10002&fromValueDate=2020-01-01&toValueDate=2021-12-31")
.then().log().all().assertThat()
.when()
.get("http://localhost/api/hs/office/coopsharestransactions?membershipUuid="
+ givenMembership.getUuid() + "&fromValueDate=2020-01-01&toValueDate=2021-12-31")
.then().log().all().assertThat()
.statusCode(200)
.contentType("application/json")
.body("", lenientlyEquals("""

View File

@ -134,7 +134,7 @@ class HsOfficeCoopSharesTransactionRepositoryIntegrationTest extends ContextBase
class FindAllCoopSharesTransactions {
@Test
public void globalAdmin_withoutAssumedRole_canViewAllCoopSharesTransactions() {
public void globalAdmin_anViewAllCoopSharesTransactions() {
// given
context("superuser-alex@hostsharing.net");
@ -160,6 +160,44 @@ class HsOfficeCoopSharesTransactionRepositoryIntegrationTest extends ContextBase
"CoopShareTransaction(10003, 2022-10-20, CANCELLATION, 12, ref 10003-3)");
}
@Test
public void globalAdmin_canViewCoopSharesTransactions_filteredByMembershipUuid() {
// given
context("superuser-alex@hostsharing.net");
final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002).get(0);
// when
final var result = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange(
givenMembership.getUuid(),
null,
null);
// then
allTheseCoopSharesTransactionsAreReturned(
result,
"CoopShareTransaction(10002, 2010-03-15, SUBSCRIPTION, 2, ref 10002-1)",
"CoopShareTransaction(10002, 2021-09-01, SUBSCRIPTION, 24, ref 10002-2)",
"CoopShareTransaction(10002, 2022-10-20, CANCELLATION, 12, ref 10002-3)");
}
@Test
public void globalAdmin_canViewCoopSharesTransactions_filteredByMembershipUuidAndValueDateRange() {
// given
context("superuser-alex@hostsharing.net");
final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10002).get(0);
// when
final var result = coopSharesTransactionRepo.findCoopSharesTransactionByOptionalMembershipUuidAndDateRange(
givenMembership.getUuid(),
LocalDate.parse("2021-09-01"),
LocalDate.parse("2021-09-01"));
// then
allTheseCoopSharesTransactionsAreReturned(
result,
"CoopShareTransaction(10002, 2021-09-01, SUBSCRIPTION, 24, ref 10002-2)");
}
@Test
public void normalUser_canViewOnlyRelatedCoopSharesTransactions() {
// given: