Add `sepaMaximumEuros` field to subscription configuration

This commit is contained in:
Katherine 2023-11-10 09:13:51 -08:00 committed by GitHub
parent 387e4b94b4
commit 71e4351743
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 9 additions and 7 deletions

View File

@ -342,7 +342,7 @@ subscription: # configuration for Stripe subscriptions
BRAINTREE: plan_example # braintree Plan ID
oneTimeDonations:
sepaMaxTransactionSizeEuros: '10000'
sepaMaximumEuros: '10000'
boost:
level: 1
expiration: P90D

View File

@ -20,7 +20,7 @@ import javax.validation.constraints.Positive;
public record OneTimeDonationConfiguration(@Valid ExpiringLevelConfiguration boost,
@Valid ExpiringLevelConfiguration gift,
Map<String, @Valid OneTimeDonationCurrencyConfiguration> currencies,
BigDecimal sepaMaxTransactionSizeEuros) {
BigDecimal sepaMaximumEuros) {
/**
* @param badge the numeric donation level ID

View File

@ -229,7 +229,7 @@ public class SubscriptionController {
giftBadge,
oneTimeDonationConfiguration.gift().expiration())));
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels);
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels, oneTimeDonationConfiguration.sepaMaximumEuros().toString());
}
@DELETE
@ -537,7 +537,8 @@ public class SubscriptionController {
* @param levels map of numeric level IDs to level-specific configuration
*/
public record GetSubscriptionConfigurationResponse(Map<String, CurrencyConfiguration> currencies,
Map<String, LevelConfiguration> levels) {
Map<String, LevelConfiguration> levels,
String sepaMaximumEuros) {
}
@ -712,11 +713,11 @@ public class SubscriptionController {
if (request.paymentMethod == PaymentMethod.SEPA_DEBIT &&
amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount(
EURO_CURRENCY_CODE,
oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros())) > 0) {
oneTimeDonationConfiguration.sepaMaximumEuros())) > 0) {
throw new BadRequestException(Response.status(Status.BAD_REQUEST)
.entity(Map.of(
"error", "amount_above_sepa_limit",
"maximum", oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros().toString())).build());
"maximum", oneTimeDonationConfiguration.sepaMaximumEuros().toString())).build());
}
}

View File

@ -802,6 +802,7 @@ class SubscriptionControllerTest {
.header(HttpHeaders.USER_AGENT, userAgent)
.get(GetSubscriptionConfigurationResponse.class);
assertThat(response.sepaMaximumEuros()).isEqualTo("10000");
assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> {
assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> {
assertThat(currency.minimum()).isEqualByComparingTo(
@ -1087,7 +1088,7 @@ class SubscriptionControllerTest {
- '8000'
- '9000'
- '10000'
sepaMaxTransactionSizeEuros: '10000'
sepaMaximumEuros: '10000'
""";
}