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 BRAINTREE: plan_example # braintree Plan ID
oneTimeDonations: oneTimeDonations:
sepaMaxTransactionSizeEuros: '10000' sepaMaximumEuros: '10000'
boost: boost:
level: 1 level: 1
expiration: P90D expiration: P90D

View File

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

View File

@ -229,7 +229,7 @@ public class SubscriptionController {
giftBadge, giftBadge,
oneTimeDonationConfiguration.gift().expiration()))); oneTimeDonationConfiguration.gift().expiration())));
return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels); return new GetSubscriptionConfigurationResponse(buildCurrencyConfiguration(userAgent), levels, oneTimeDonationConfiguration.sepaMaximumEuros().toString());
} }
@DELETE @DELETE
@ -537,7 +537,8 @@ public class SubscriptionController {
* @param levels map of numeric level IDs to level-specific configuration * @param levels map of numeric level IDs to level-specific configuration
*/ */
public record GetSubscriptionConfigurationResponse(Map<String, CurrencyConfiguration> currencies, 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 && if (request.paymentMethod == PaymentMethod.SEPA_DEBIT &&
amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount( amount.compareTo(SubscriptionCurrencyUtil.convertConfiguredAmountToApiAmount(
EURO_CURRENCY_CODE, EURO_CURRENCY_CODE,
oneTimeDonationConfiguration.sepaMaxTransactionSizeEuros())) > 0) { oneTimeDonationConfiguration.sepaMaximumEuros())) > 0) {
throw new BadRequestException(Response.status(Status.BAD_REQUEST) throw new BadRequestException(Response.status(Status.BAD_REQUEST)
.entity(Map.of( .entity(Map.of(
"error", "amount_above_sepa_limit", "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) .header(HttpHeaders.USER_AGENT, userAgent)
.get(GetSubscriptionConfigurationResponse.class); .get(GetSubscriptionConfigurationResponse.class);
assertThat(response.sepaMaximumEuros()).isEqualTo("10000");
assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> { assertThat(response.currencies()).containsKeys("usd", "jpy", "bif", "eur").satisfies(currencyMap -> {
assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> { assertThat(currencyMap).extractingByKey("usd").satisfies(currency -> {
assertThat(currency.minimum()).isEqualByComparingTo( assertThat(currency.minimum()).isEqualByComparingTo(
@ -1087,7 +1088,7 @@ class SubscriptionControllerTest {
- '8000' - '8000'
- '9000' - '9000'
- '10000' - '10000'
sepaMaxTransactionSizeEuros: '10000' sepaMaximumEuros: '10000'
"""; """;
} }