Merge branch 'agent/payment-training-progress' into master

# Conflicts:
#	src/main/java/com/yau/digitalrmb/payment/infrastructure/persistence/JdbcPaymentResourceRepository.java
#	src/test/java/com/yau/digitalrmb/payment/interfaces/rest/PaymentControllerTest.java
chore/issuance-comments-zh
chenyuan 4 weeks ago
commit 1dfeab33f3

@ -52,7 +52,7 @@ public class JdbcPaymentResourceRepository implements PaymentResourceRepository
@Override
public PaymentParticipant loadPayer(PaymentActor actor) {
WalletPrerequisiteReference reference = walletProjection.referenceForSubject(
WalletPrerequisiteReference reference = walletProjection.ensureForSubject(
new InstitutionKeySubject(actor.getUserId(), actor.getSchoolId(), actor.getClassId()));
return loadParticipant(reference);
}
@ -62,7 +62,7 @@ public class JdbcPaymentResourceRepository implements PaymentResourceRepository
if (teachingPayeeWhitelist.isTeachingWallet(payeeWalletId)) {
return loadParticipant(teachingPayeeWhitelist.resolve(payeeWalletId));
}
return loadParticipant(walletProjection.referenceForWallet(payeeWalletId));
return loadParticipant(walletProjection.ensureForWallet(payeeWalletId));
}
@Override

@ -238,6 +238,39 @@ class PaymentControllerTest {
"WALLET_B_7D8E9F0A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6"));
}
@Test
void refreshActionsProjectCompletedModuleThreeWalletsWhenSharedRowsAreMissing() throws Exception {
clearSharedWalletProjection();
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM digital_wallet WHERE wallet_id IN (?,?)",
Integer.class, PAYER_WALLET, PAYEE_WALLET)).isZero();
String created = mockMvc.perform(post("/api/v1/payment/attempts").with(payer()))
.andExpect(status().isOk())
.andReturn().getResponse().getContentAsString();
String attemptId = JsonPath.read(created, "$.data.attemptId");
mockMvc.perform(post("/api/v1/payment/attempts/{id}/steps/01/actions/refresh-payer", attemptId)
.with(payer()).contentType(MediaType.APPLICATION_JSON).content("{}"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.data.actionStatus").value("COMPLETED"))
.andExpect(jsonPath("$.data.output.walletId").value(PAYER_WALLET));
mockMvc.perform(post("/api/v1/payment/attempts/{id}/steps/01/actions/refresh-payee", attemptId)
.with(payer()).contentType(MediaType.APPLICATION_JSON)
.content("{\"payeeWalletId\":\"" + PAYEE_WALLET + "\"}"))
.andExpect(status().isOk())
.andExpect(jsonPath("$.data.actionStatus").value("COMPLETED"))
.andExpect(jsonPath("$.data.output.walletId").value(PAYEE_WALLET));
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM digital_wallet WHERE wallet_id IN (?,?)",
Integer.class, PAYER_WALLET, PAYEE_WALLET)).isEqualTo(2);
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM wallet_certificate WHERE wallet_id IN (?,?)",
Integer.class, PAYER_WALLET, PAYEE_WALLET)).isEqualTo(2);
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM wallet_contract WHERE wallet_id IN (?,?)",
Integer.class, PAYER_WALLET, PAYEE_WALLET)).isEqualTo(2);
assertThat(jdbc.queryForObject("SELECT COUNT(*) FROM wallet_bank_binding WHERE wallet_id IN (?,?)",
Integer.class, PAYER_WALLET, PAYEE_WALLET)).isEqualTo(2);
}
@Test
void rejectsPaymentWhenPayerHasNoWalletOwnedCoins() throws Exception {
String created = mockMvc.perform(post("/api/v1/payments").with(payer()).contentType(MediaType.APPLICATION_JSON)
@ -427,13 +460,17 @@ class PaymentControllerTest {
}
private void cleanWalletState() {
clearSharedWalletProjection();
WalletOpeningTestData.deleteWalletFacts(jdbc, PAYER_USER);
WalletOpeningTestData.deleteWalletFacts(jdbc, PAYEE_USER);
}
private void clearSharedWalletProjection() {
jdbc.update("DELETE FROM wallet_bank_binding WHERE wallet_id IN (?,?)", PAYER_WALLET, PAYEE_WALLET);
jdbc.update("DELETE FROM wallet_contract WHERE wallet_id IN (?,?)", PAYER_WALLET, PAYEE_WALLET);
jdbc.update("DELETE FROM wallet_certificate WHERE wallet_id IN (?,?)", PAYER_WALLET, PAYEE_WALLET);
jdbc.update("DELETE FROM simulated_bank_account WHERE user_id IN (?,?)", PAYER_USER, PAYEE_USER);
jdbc.update("DELETE FROM digital_wallet WHERE wallet_id IN (?,?)", PAYER_WALLET, PAYEE_WALLET);
WalletOpeningTestData.deleteWalletFacts(jdbc, PAYER_USER);
WalletOpeningTestData.deleteWalletFacts(jdbc, PAYEE_USER);
}
private void cleanPaymentData() {

Loading…
Cancel
Save