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 rule(String discountRate, String fixedReduction) { Map rule = new LinkedHashMap<>(); rule.put("discountRate", new BigDecimal(discountRate)); rule.put("fixedReduction", new BigDecimal(fixedReduction)); return rule; } }