package com.talentcard.server.business.portal; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.anyString; import static org.mockito.ArgumentMatchers.eq; import static org.mockito.Mockito.when; import java.util.List; import java.util.Map; import org.junit.jupiter.api.extension.ExtendWith; import org.junit.jupiter.api.Test; import org.springframework.jdbc.core.JdbcTemplate; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; @ExtendWith(MockitoExtension.class) class ProcessingApplicationPortalServiceTests { @Mock private JdbcTemplate jdbc; @InjectMocks private ProcessingApplicationPortalService service; @Test void usesServiceStaffAssignedToTalent() { Long talentId = 7L; String applicationNo = "SE-PROCESSING-1"; when(jdbc.queryForList(anyString(), eq(talentId), eq(applicationNo), eq(talentId))).thenReturn(List.of(Map.of( "application_no", applicationNo, "application_type", "SPOUSE_EMPLOYMENT", "status", "待处理", "merchant_name", "配偶推荐就业", "card_level_snapshot", "卓越人才卡"))); when(jdbc.queryForList(anyString(), eq(talentId))).thenReturn(List.of(Map.of( "display_name", "后台配置专员", "position_name", "人才服务岗", "mobile", "13911112222"))); Map detail = service.detail(applicationNo, talentId); assertThat(detail.get("advisor")).isInstanceOfSatisfying(Map.class, advisor -> assertThat(advisor) .containsEntry("name", "后台配置专员") .containsEntry("department", "人才服务岗") .containsEntry("mobile", "13911112222")); } @Test void usesServiceStaffAssignedToTalentForHotelReservation() { Long talentId = 1015L; String applicationNo = "SA202608191626042390"; when(jdbc.queryForList(anyString(), eq(talentId), eq(applicationNo), eq(talentId))).thenReturn(List.of(Map.of( "application_no", applicationNo, "application_type", "HOTEL_RESERVATION", "status", "待处理", "merchant_name", "喜望酒店1", "card_level_snapshot", "菁英人才卡"))); when(jdbc.queryForList(anyString(), eq(talentId))).thenReturn(List.of(Map.of( "display_name", "酒店服务专员", "position_name", "人才服务岗", "mobile", "13540211212"))); Map detail = service.detail(applicationNo, talentId); assertThat(detail.get("advisor")).isInstanceOfSatisfying(Map.class, advisor -> assertThat(advisor) .containsEntry("name", "酒店服务专员") .containsEntry("department", "人才服务岗") .containsEntry("mobile", "13540211212")); } }