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.Mockito.when;
|
|
import java.util.LinkedHashMap;
|
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 MedicalPackagePortalServiceTests {
|
|
@Mock
|
private JdbcTemplate jdbc;
|
|
@InjectMocks
|
private MedicalPackagePortalService service;
|
|
@Test
|
void detailUsesFirstUploadedDetailImageInsteadOfCover() {
|
givenPackageRow("[\"/uploads/detail-1.jpg\",\"/uploads/detail-2.jpg\"]", "/uploads/cover.jpg");
|
|
assertThat(service.detail(38L)).containsEntry("heroImage", "/uploads/detail-1.jpg");
|
}
|
|
@Test
|
void detailFallsBackToCoverWhenDetailImagesAreEmpty() {
|
givenPackageRow("[]", "/uploads/cover.jpg");
|
|
assertThat(service.detail(38L)).containsEntry("heroImage", "/uploads/cover.jpg");
|
}
|
|
@Test
|
void detailFallsBackToCoverWhenDetailImagesAreNotConfigured() {
|
givenPackageRow(null, "/uploads/cover.jpg");
|
|
assertThat(service.detail(38L)).containsEntry("heroImage", "/uploads/cover.jpg");
|
}
|
|
private void givenPackageRow(String productImages, String coverUrl) {
|
Map<String, Object> row = new LinkedHashMap<>();
|
row.put("package_id", 38L);
|
row.put("merchant_id", 126L);
|
row.put("package_name", "查血");
|
row.put("hero_image", coverUrl);
|
row.put("product_images", productImages);
|
row.put("free_status", 0);
|
row.put("applicable_cards", "");
|
row.put("open_time", "");
|
row.put("stock", 10);
|
row.put("status", 1);
|
row.put("unavailable_reason", "");
|
row.put("detail_text", "[{\"name\":\"查血\",\"meaning\":\"检查血脂\",\"gender\":[\"男\",\"女\"]}]");
|
row.put("hospital_name", "体检医院-卡");
|
row.put("hospital_address", "天府新谷");
|
row.put("hospital_mobile", "13800000000");
|
row.put("hospital_latitude", 26.5);
|
row.put("hospital_longitude", 101.7);
|
when(jdbc.queryForList(anyString(), any(Object[].class))).thenReturn(List.of(row));
|
}
|
}
|