add advanced scenario-tests for coop-assets #123
@ -150,22 +150,27 @@ public class HsOfficeCoopAssetsTransactionController implements HsOfficeCoopAsse
|
|||||||
final BiConsumer<HsOfficeCoopAssetsTransactionEntity, HsOfficeCoopAssetsTransactionResource> ENTITY_TO_RESOURCE_POSTMAPPER = (entity, resource) -> {
|
final BiConsumer<HsOfficeCoopAssetsTransactionEntity, HsOfficeCoopAssetsTransactionResource> ENTITY_TO_RESOURCE_POSTMAPPER = (entity, resource) -> {
|
||||||
resource.setMembershipUuid(entity.getMembership().getUuid());
|
resource.setMembershipUuid(entity.getMembership().getUuid());
|
||||||
resource.setMembershipMemberNumber(entity.getMembership().getTaggedMemberNumber());
|
resource.setMembershipMemberNumber(entity.getMembership().getTaggedMemberNumber());
|
||||||
// FIXME: extract to one method to be used in all 4 cases
|
|
||||||
|
// FIXME: actually needed?
|
||||||
if (entity.getReversalAssetTx() != null) {
|
if (entity.getReversalAssetTx() != null) {
|
||||||
resource.getReversalAssetTx().setRevertedAssetTxUuid(entity.getUuid());
|
resource.getReversalAssetTx().setRevertedAssetTxUuid(entity.getUuid());
|
||||||
resource.getReversalAssetTx().setMembershipUuid(entity.getRevertedAssetTx().getMembership().getUuid());
|
resource.getReversalAssetTx().setMembershipUuid(entity.getRevertedAssetTx().getMembership().getUuid());
|
||||||
resource.getReversalAssetTx().setMembershipMemberNumber(entity.getRevertedAssetTx().getTaggedMemberNumber());
|
resource.getReversalAssetTx().setMembershipMemberNumber(entity.getRevertedAssetTx().getTaggedMemberNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity.getRevertedAssetTx() != null) {
|
if (entity.getRevertedAssetTx() != null) {
|
||||||
resource.getRevertedAssetTx().setReversalAssetTxUuid(entity.getUuid());
|
resource.getRevertedAssetTx().setReversalAssetTxUuid(entity.getUuid());
|
||||||
resource.getRevertedAssetTx().setMembershipUuid(entity.getReversalAssetTx().getMembership().getUuid());
|
resource.getRevertedAssetTx().setMembershipUuid(entity.getReversalAssetTx().getMembership().getUuid());
|
||||||
resource.getRevertedAssetTx().setMembershipMemberNumber(entity.getReversalAssetTx().getTaggedMemberNumber());
|
resource.getRevertedAssetTx().setMembershipMemberNumber(entity.getReversalAssetTx().getTaggedMemberNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entity.getAdoptionAssetTx() != null) {
|
if (entity.getAdoptionAssetTx() != null) {
|
||||||
resource.getAdoptionAssetTx().setTransferAssetTxUuid(entity.getUuid());
|
resource.getAdoptionAssetTx().setTransferAssetTxUuid(entity.getUuid());
|
||||||
resource.getAdoptionAssetTx().setMembershipUuid(entity.getAdoptionAssetTx().getMembership().getUuid());
|
resource.getAdoptionAssetTx().setMembershipUuid(entity.getAdoptionAssetTx().getMembership().getUuid());
|
||||||
resource.getAdoptionAssetTx().setMembershipMemberNumber(entity.getAdoptionAssetTx().getTaggedMemberNumber());
|
resource.getAdoptionAssetTx().setMembershipMemberNumber(entity.getAdoptionAssetTx().getTaggedMemberNumber());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FIXME: actually needed?
|
||||||
if (entity.getTransferAssetTx() != null) {
|
if (entity.getTransferAssetTx() != null) {
|
||||||
resource.getTransferAssetTx().setAdoptionAssetTxUuid(entity.getUuid());
|
resource.getTransferAssetTx().setAdoptionAssetTxUuid(entity.getUuid());
|
||||||
resource.getTransferAssetTx().setMembershipUuid(entity.getTransferAssetTx().getMembership().getUuid());
|
resource.getTransferAssetTx().setMembershipUuid(entity.getTransferAssetTx().getMembership().getUuid());
|
||||||
|
@ -26,7 +26,6 @@ import java.util.Optional;
|
|||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import static net.hostsharing.hsadminng.hs.office.coopassets.HsOfficeCoopAssetsTransactionControllerRestTest.SuccessfullyCreatedTestCases.ADOPTING_MEMBERSHIP_UUID_FOR_TRANSFER_MUST_BE_GIVEN_AND_AVAILABLE;
|
|
||||||
import static net.hostsharing.hsadminng.rbac.test.JsonBuilder.jsonObject;
|
import static net.hostsharing.hsadminng.rbac.test.JsonBuilder.jsonObject;
|
||||||
import static net.hostsharing.hsadminng.rbac.test.JsonMatcher.lenientlyEquals;
|
import static net.hostsharing.hsadminng.rbac.test.JsonMatcher.lenientlyEquals;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
@ -64,7 +63,7 @@ class HsOfficeCoopAssetsTransactionControllerRestTest {
|
|||||||
.memberNumberSuffix(suffixOf(AVAILABLE_TARGET_MEMBER_NUMBER))
|
.memberNumberSuffix(suffixOf(AVAILABLE_TARGET_MEMBER_NUMBER))
|
||||||
.build();
|
.build();
|
||||||
|
|
||||||
private static final UUID NEW_EXPLICITLY_CREATED_ASSET_TX_UUID = TestUuidGenerator.get(3);
|
private static final UUID NEW_EXPLICITLY_CREATED_ASSET_TX_UUID = TestUuidGenerator.get(5); // might change if impl changes
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
MockMvc mockMvc;
|
MockMvc mockMvc;
|
||||||
@ -201,19 +200,7 @@ class HsOfficeCoopAssetsTransactionControllerRestTest {
|
|||||||
.with("transactionType", "TRANSFER")
|
.with("transactionType", "TRANSFER")
|
||||||
.with("assetValue", -64.00)
|
.with("assetValue", -64.00)
|
||||||
.with("adoptingMembership.memberNumber", AVAILABLE_TARGET_MEMBER_NUMBER),
|
.with("adoptingMembership.memberNumber", AVAILABLE_TARGET_MEMBER_NUMBER),
|
||||||
"""
|
Expected.TRANSFER_RESPONSE),
|
||||||
{
|
|
||||||
"transactionType": "TRANSFER",
|
|
||||||
"assetValue": -64.00,
|
|
||||||
"adoptionAssetTx": {
|
|
||||||
"transactionType": "ADOPTION",
|
|
||||||
"assetValue": 64.00
|
|
||||||
},
|
|
||||||
"reversalAssetTx": null,
|
|
||||||
"transferAssetTx": null,
|
|
||||||
"revertedAssetTx": null
|
|
||||||
}
|
|
||||||
"""),
|
|
||||||
|
|
||||||
ADOPTING_MEMBERSHIP_UUID_FOR_TRANSFER_MUST_BE_GIVEN_AND_AVAILABLE(
|
ADOPTING_MEMBERSHIP_UUID_FOR_TRANSFER_MUST_BE_GIVEN_AND_AVAILABLE(
|
||||||
requestBody -> requestBody
|
requestBody -> requestBody
|
||||||
@ -221,55 +208,7 @@ class HsOfficeCoopAssetsTransactionControllerRestTest {
|
|||||||
.with("assetValue", -64.00)
|
.with("assetValue", -64.00)
|
||||||
.with("membership.uuid", ORIGIN_MEMBERSHIP_UUID.toString())
|
.with("membership.uuid", ORIGIN_MEMBERSHIP_UUID.toString())
|
||||||
.with("adoptingMembership.uuid", AVAILABLE_TARGET_MEMBERSHIP_UUID.toString()),
|
.with("adoptingMembership.uuid", AVAILABLE_TARGET_MEMBERSHIP_UUID.toString()),
|
||||||
// """
|
Expected.TRANSFER_RESPONSE);
|
||||||
// {
|
|
||||||
// "uuid": "%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}",
|
|
||||||
// "membership.uuid": "%{ORIGIN_MEMBERSHIP_UUID}",
|
|
||||||
// "transactionType": "TRANSFER",
|
|
||||||
// "assetValue": -64.00,
|
|
||||||
// "adoptionAssetTx": {
|
|
||||||
// "membership.uuid": "%{AVAILABLE_MEMBERSHIP_UUID}",
|
|
||||||
// "transactionType": "ADOPTION",
|
|
||||||
// "assetValue": 64.00,
|
|
||||||
// "transferAssetTx.uuid": "%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}"
|
|
||||||
// },
|
|
||||||
// "transferAssetTx": null,
|
|
||||||
// "revertedAssetTx": null,
|
|
||||||
// "reversalAssetTx": null
|
|
||||||
// }
|
|
||||||
// """
|
|
||||||
// .replace("%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}", NEW_EXPLICITLY_CREATED_ASSET_TX_UUID.toString())
|
|
||||||
// .replace("%{ORIGIN_MEMBERSHIP_UUID}", ORIGIN_MEMBERSHIP_UUID.toString())
|
|
||||||
// .replace("%{AVAILABLE_MEMBERSHIP_UUID}", AVAILABLE_TARGET_MEMBERSHIP_UUID.toString()));
|
|
||||||
"""
|
|
||||||
{
|
|
||||||
"uuid": "55555555-5555-5555-5555-555555555555",
|
|
||||||
"membership.uuid": "11111111-1111-1111-1111-111111111111",
|
|
||||||
"membership.memberNumber": "M-1111100",
|
|
||||||
"transactionType": "TRANSFER",
|
|
||||||
"assetValue": -64,
|
|
||||||
"valueDate": "2022-10-13",
|
|
||||||
"reference": "valid reference",
|
|
||||||
"comment": "valid comment",
|
|
||||||
"adoptionAssetTx": {
|
|
||||||
"uuid": "44444444-4444-4444-4444-444444444444",
|
|
||||||
"membership.uuid": "22222222-2222-2222-2222-222222222222",
|
|
||||||
"membership.memberNumber": "M-1234500",
|
|
||||||
"transactionType": "ADOPTION",
|
|
||||||
"assetValue": 64,
|
|
||||||
"valueDate": "2022-10-13",
|
|
||||||
"reference": "valid reference",
|
|
||||||
"comment": "valid comment",
|
|
||||||
"adoptionAssetTx.uuid": null,
|
|
||||||
"transferAssetTx.uuid": "55555555-5555-5555-5555-555555555555",
|
|
||||||
"revertedAssetTx.uuid": null,
|
|
||||||
"reversalAssetTx.uuid": null
|
|
||||||
},
|
|
||||||
"transferAssetTx": null,
|
|
||||||
"revertedAssetTx": null,
|
|
||||||
"reversalAssetTx": null
|
|
||||||
}
|
|
||||||
""");
|
|
||||||
|
|
||||||
private final Function<JsonBuilder, JsonBuilder> givenBodyTransformation;
|
private final Function<JsonBuilder, JsonBuilder> givenBodyTransformation;
|
||||||
private final String expectedResponseBody;
|
private final String expectedResponseBody;
|
||||||
@ -284,14 +223,42 @@ class HsOfficeCoopAssetsTransactionControllerRestTest {
|
|||||||
String givenRequestBody() {
|
String givenRequestBody() {
|
||||||
return givenBodyTransformation.apply(jsonObject(INSERT_REQUEST_BODY_TEMPLATE)).toString();
|
return givenBodyTransformation.apply(jsonObject(INSERT_REQUEST_BODY_TEMPLATE)).toString();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static class Expected {
|
||||||
|
|
||||||
|
public static final String TRANSFER_RESPONSE = """
|
||||||
|
{
|
||||||
|
"uuid": "%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}",
|
||||||
|
"membership.uuid": "%{ORIGIN_MEMBERSHIP_UUID}",
|
||||||
|
"membership.memberNumber": "%{ORIGIN_MEMBER_NUMBER}",
|
||||||
|
"transactionType": "TRANSFER",
|
||||||
|
"assetValue": -64.00,
|
||||||
|
"adoptionAssetTx": {
|
||||||
|
"membership.uuid": "%{AVAILABLE_MEMBERSHIP_UUID}",
|
||||||
|
"membership.memberNumber": "%{AVAILABLE_TARGET_MEMBER_NUMBER}",
|
||||||
|
"transactionType": "ADOPTION",
|
||||||
|
"assetValue": 64.00,
|
||||||
|
"transferAssetTx.uuid": "%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}"
|
||||||
|
},
|
||||||
|
"transferAssetTx": null,
|
||||||
|
"revertedAssetTx": null,
|
||||||
|
"reversalAssetTx": null
|
||||||
|
}
|
||||||
|
"""
|
||||||
|
.replace("%{NEW_EXPLICITLY_CREATED_ASSET_TX_UUID}", NEW_EXPLICITLY_CREATED_ASSET_TX_UUID.toString())
|
||||||
|
.replace("%{ORIGIN_MEMBERSHIP_UUID}", ORIGIN_MEMBERSHIP_UUID.toString())
|
||||||
|
.replace("%{ORIGIN_MEMBER_NUMBER}", ORIGIN_MEMBER_NUMBER)
|
||||||
|
.replace("%{AVAILABLE_MEMBERSHIP_UUID}", AVAILABLE_TARGET_MEMBERSHIP_UUID.toString())
|
||||||
|
.replace("%{AVAILABLE_TARGET_MEMBER_NUMBER}", AVAILABLE_TARGET_MEMBER_NUMBER);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ParameterizedTest
|
@ParameterizedTest
|
||||||
@EnumSource(SuccessfullyCreatedTestCases.class)
|
@EnumSource(SuccessfullyCreatedTestCases.class)
|
||||||
void respondWithSuccessfullyCreated(final SuccessfullyCreatedTestCases testCase) throws Exception {
|
void respondWithSuccessfullyCreated(final SuccessfullyCreatedTestCases testCase) throws Exception {
|
||||||
// uncomment, if you need to run just a single test-case in this data-driven test-method
|
// uncomment, if you need to run just a single test-case in this data-driven test-method
|
||||||
org.assertj.core.api.Assumptions.assumeThat(
|
// org.assertj.core.api.Assumptions.assumeThat(
|
||||||
testCase == ADOPTING_MEMBERSHIP_UUID_FOR_TRANSFER_MUST_BE_GIVEN_AND_AVAILABLE).isTrue();
|
// testCase == ADOPTING_MEMBERSHIP_UUID_FOR_TRANSFER_MUST_BE_GIVEN_AND_AVAILABLE).isTrue();
|
||||||
|
|
||||||
// when
|
// when
|
||||||
mockMvc.perform(MockMvcRequestBuilders
|
mockMvc.perform(MockMvcRequestBuilders
|
||||||
|
Loading…
Reference in New Issue
Block a user