package com.talentcard.server.business.merchant; import static org.assertj.core.api.Assertions.assertThat; import java.math.BigDecimal; import java.util.LinkedHashMap; import java.util.Map; import org.junit.jupiter.api.Test; /** * 免费入住确认页上「超过天数按…」那句话。 * *
酒店在商家权益里把到店消费配成「折扣」或「优惠(立减)」二选一;以前这里只认折扣,
* 配成优惠的酒店页面上整行空白(工单「酒店服务-到店消费:需要显示超过免费天数后,按照
* 门店的多少折计算」)。这个类不启动 Spring 上下文,只盯文案拼装。
*/
class FreeStayExceedDiscountTextTests {
private final ManualConsumptionService service = new ManualConsumptionService(null, null);
@Test
void discountRuleTurnsIntoTheMarketPriceRate() {
assertThat(service.exceedDiscountText(rule("0.68", "0")))
.as("门店配的是折扣:显示门市价几折")
.isEqualTo("门市价6.8折");
assertThat(service.exceedDiscountText(rule("0.9", "0"))).isEqualTo("门市价9折");
}
@Test
void reductionRuleTurnsIntoTheDiscountAmount() {
assertThat(service.exceedDiscountText(rule("0", "100")))
.as("门店配的是优惠(立减):也该有文案,不能整段空着")
.isEqualTo("立减100元");
}
@Test
void discountWinsWhenBothAreConfigured() {
assertThat(service.exceedDiscountText(rule("0.7", "100"))).isEqualTo("门市价7折");
}
@Test
void nothingConfiguredMeansNoExtraLine() {
assertThat(service.exceedDiscountText(rule("0", "0"))).isEmpty();
assertThat(service.exceedDiscountText(new LinkedHashMap<>())).isEmpty();
}
private Map