package com.talentcard.server.business.portal;
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.anyString;
|
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.Mockito.when;
|
|
import java.lang.reflect.Method;
|
import java.util.List;
|
import java.util.Map;
|
|
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.extension.ExtendWith;
|
import org.mockito.InjectMocks;
|
import org.mockito.Mock;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
@ExtendWith(MockitoExtension.class)
|
class PortalServiceTests {
|
|
@Mock
|
private JdbcTemplate jdbc;
|
|
@InjectMocks
|
private PortalService service;
|
|
@Test
|
void cinemaMerchantOnlyShowsCouponTagWhenAnActiveCouponExists() {
|
when(jdbc.queryForList(anyString(), any(Object[].class))).thenReturn(List.of(
|
Map.of("id", 1L, "merchant_name", "有券影院", "merchant_type", "cinema", "status", 1, "coupon_available", 1),
|
Map.of("id", 2L, "merchant_name", "无券影院", "merchant_type", "cinema", "status", 1, "coupon_available", 0)));
|
when(jdbc.queryForObject(anyString(), eq(Long.class), any(Object[].class))).thenReturn(2L);
|
|
var result = service.entertainmentMerchants(1, 4);
|
|
assertThat(result.records().get(0))
|
.containsEntry("couponAvailable", true)
|
.containsEntry("discountText", "券");
|
assertThat(result.records().get(1))
|
.containsEntry("couponAvailable", false)
|
.containsEntry("discountText", "");
|
}
|
|
@Test
|
void shoppingMerchantUsesConfiguredStoreDiscountInsteadOfRightsTag() throws Exception {
|
Method method = PortalService.class.getDeclaredMethod("merchantRightDiscountText", Map.class);
|
method.setAccessible(true);
|
|
String discount = (String) method.invoke(service, Map.of(
|
"enabled", true,
|
"tag", "卓越人才到店消费可用",
|
"storeConsume", true,
|
"consumeEnabled", true,
|
"discount", "8.50"));
|
|
assertThat(discount).isEqualTo("8.5折");
|
}
|
}
|