hs-office-coopshares: add non-negative validation
This commit is contained in:
@@ -92,21 +92,21 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
|
||||
[
|
||||
{
|
||||
"transactionType": "SUBSCRIPTION",
|
||||
"sharesCount": 4,
|
||||
"shareCount": 4,
|
||||
"valueDate": "2010-03-15",
|
||||
"reference": "ref 10002-1",
|
||||
"comment": "initial subscription"
|
||||
},
|
||||
{
|
||||
"transactionType": "CANCELLATION",
|
||||
"sharesCount": -2,
|
||||
"shareCount": -2,
|
||||
"valueDate": "2021-09-01",
|
||||
"reference": "ref 10002-2",
|
||||
"comment": "cancelling some"
|
||||
},
|
||||
{
|
||||
"transactionType": "ADJUSTMENT",
|
||||
"sharesCount": 2,
|
||||
"shareCount": 2,
|
||||
"valueDate": "2022-10-20",
|
||||
"reference": "ref 10002-3",
|
||||
"comment": "some adjustment"
|
||||
@@ -136,7 +136,7 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
|
||||
[
|
||||
{
|
||||
"transactionType": "CANCELLATION",
|
||||
"sharesCount": -2,
|
||||
"shareCount": -2,
|
||||
"valueDate": "2021-09-01",
|
||||
"reference": "ref 10002-2",
|
||||
"comment": "cancelling some"
|
||||
@@ -165,7 +165,7 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
|
||||
{
|
||||
"membershipUuid": "%s",
|
||||
"transactionType": "SUBSCRIPTION",
|
||||
"sharesCount": 8,
|
||||
"shareCount": 8,
|
||||
"valueDate": "2022-10-13",
|
||||
"reference": "temp ref A",
|
||||
"comment": "just some test coop shares transaction"
|
||||
@@ -181,7 +181,7 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"transactionType": "SUBSCRIPTION",
|
||||
"sharesCount": 0,
|
||||
"shareCount": 8,
|
||||
"valueDate": "2022-10-13",
|
||||
"reference": "temp ref A",
|
||||
"comment": "just some test coop shares transaction"
|
||||
@@ -195,6 +195,42 @@ class HsOfficeCoopSharesTransactionControllerAcceptanceTest {
|
||||
location.substring(location.lastIndexOf('/') + 1));
|
||||
assertThat(newUserUuid).isNotNull();
|
||||
}
|
||||
|
||||
@Test
|
||||
void globalAdmin_canNotCancelMoreSharesThanCurrentlySubscribed() {
|
||||
|
||||
context.define("superuser-alex@hostsharing.net");
|
||||
final var givenMembership = membershipRepo.findMembershipsByOptionalPartnerUuidAndOptionalMemberNumber(null, 10001)
|
||||
.get(0);
|
||||
|
||||
final var location = RestAssured // @formatter:off
|
||||
.given()
|
||||
.header("current-user", "superuser-alex@hostsharing.net")
|
||||
.contentType(ContentType.JSON)
|
||||
.body("""
|
||||
{
|
||||
"membershipUuid": "%s",
|
||||
"transactionType": "CANCELLATION",
|
||||
"shareCount": -80,
|
||||
"valueDate": "2022-10-13",
|
||||
"reference": "temp ref X",
|
||||
"comment": "just some test coop shares transaction"
|
||||
}
|
||||
""".formatted(givenMembership.getUuid()))
|
||||
.port(port)
|
||||
.when()
|
||||
.post("http://localhost/api/hs/office/coopsharestransactions")
|
||||
.then().log().all().assertThat()
|
||||
.statusCode(400)
|
||||
.contentType(ContentType.JSON)
|
||||
.body("", lenientlyEquals("""
|
||||
{
|
||||
"status": 400,
|
||||
"error": "Bad Request",
|
||||
"message": "ERROR: [400] coop shares transaction would result in a negative number of shares"
|
||||
}
|
||||
""")); // @formatter:on
|
||||
}
|
||||
}
|
||||
|
||||
@BeforeEach
|
||||
|
@@ -35,7 +35,7 @@ class HsOfficeCoopSharesTransactionControllerRestTest {
|
||||
{
|
||||
"membershipUuid": "%s",
|
||||
"transactionType": "SUBSCRIPTION",
|
||||
"sharesCount": 8,
|
||||
"shareCount": 8,
|
||||
"valueDate": "2022-10-13",
|
||||
"reference": "valid reference",
|
||||
"comment": "valid comment"
|
||||
@@ -58,20 +58,20 @@ class HsOfficeCoopSharesTransactionControllerRestTest {
|
||||
SHARES_COUNT_FOR_SUBSCRIPTION_MUST_BE_POSITIVE(
|
||||
requestBody -> requestBody
|
||||
.with("transactionType", "SUBSCRIPTION")
|
||||
.with("sharesCount", -1),
|
||||
"[for SUBSCRIPTION, sharesCount must be positive but is \"-1\"]"),
|
||||
.with("shareCount", -1),
|
||||
"[for SUBSCRIPTION, shareCount must be positive but is \"-1\"]"),
|
||||
|
||||
SHARES_COUNT_FOR_CANCELLATION_MUST_BE_NEGATIVE(
|
||||
requestBody -> requestBody
|
||||
.with("transactionType", "CANCELLATION")
|
||||
.with("sharesCount", 1),
|
||||
"[for CANCELLATION, sharesCount must be negative but is \"1\"]"),
|
||||
.with("shareCount", 1),
|
||||
"[for CANCELLATION, shareCount must be negative but is \"1\"]"),
|
||||
|
||||
SHARES_COUNT_MUST_NOT_BE_NULL(
|
||||
requestBody -> requestBody
|
||||
.with("transactionType", "ADJUSTMENT")
|
||||
.with("sharesCount", 0),
|
||||
"[sharesCount must not be 0 but is \"0\"]"),
|
||||
.with("shareCount", 0),
|
||||
"[shareCount must not be 0 but is \"0\"]"),
|
||||
|
||||
REFERENCE_MISSING(
|
||||
requestBody -> requestBody.without("reference"),
|
||||
|
@@ -9,7 +9,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
class HsOfficeCoopSharesTransactionEntityTest {
|
||||
|
||||
final HsOfficeCoopSharesTransactionEntity givenSepaMandate = HsOfficeCoopSharesTransactionEntity.builder()
|
||||
final HsOfficeCoopSharesTransactionEntity givenCoopSharesTransaction = HsOfficeCoopSharesTransactionEntity.builder()
|
||||
.membership(testMembership)
|
||||
.reference("some-ref")
|
||||
.valueDate(LocalDate.parse("2020-01-01"))
|
||||
@@ -19,14 +19,14 @@ class HsOfficeCoopSharesTransactionEntityTest {
|
||||
|
||||
@Test
|
||||
void toStringContainsAlmostAllPropertiesAccount() {
|
||||
final var result = givenSepaMandate.toString();
|
||||
final var result = givenCoopSharesTransaction.toString();
|
||||
|
||||
assertThat(result).isEqualTo("CoopShareTransaction(300001, 2020-01-01, SUBSCRIPTION, 4, some-ref)");
|
||||
}
|
||||
|
||||
@Test
|
||||
void toShortStringContainsOnlyMemberNumberAndSharesCountOnly() {
|
||||
final var result = givenSepaMandate.toShortString();
|
||||
void toShortStringContainsOnlyMemberNumberAndshareCountOnly() {
|
||||
final var result = givenCoopSharesTransaction.toShortString();
|
||||
|
||||
assertThat(result).isEqualTo("300001+4");
|
||||
}
|
||||
|
Reference in New Issue
Block a user