test(aihr): verify project scoped sop query
This commit is contained in:
+27
@@ -4,10 +4,14 @@ import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.dromara.aihr.domain.AihrSopDto;
|
||||
import org.junit.jupiter.api.Tag;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.ArgumentCaptor;
|
||||
import org.springframework.jdbc.core.JdbcTemplate;
|
||||
import org.springframework.jdbc.core.RowMapper;
|
||||
|
||||
import java.lang.reflect.Method;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import java.util.Set;
|
||||
@@ -15,8 +19,11 @@ import java.util.Set;
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.assertFalse;
|
||||
import static org.junit.jupiter.api.Assertions.assertTrue;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.anyString;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
import static org.mockito.Mockito.verify;
|
||||
|
||||
public class AihrSopSeedServiceTest {
|
||||
|
||||
@@ -275,6 +282,26 @@ public class AihrSopSeedServiceTest {
|
||||
assertTrue(code.contains("OrgPersonRow::projectCode"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Tag("dev")
|
||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||
public void formalPositionSopQueryBindsProjectScopeAsParameters() throws Exception {
|
||||
JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
|
||||
when(jdbcTemplate.query(anyString(), any(RowMapper.class), any(Object[].class))).thenReturn(List.of());
|
||||
AihrSopSeedService service = new AihrSopSeedService(new ObjectMapper(), jdbcTemplate, null, "", null, null, null);
|
||||
Method method = AihrSopSeedService.class.getDeclaredMethod("formalPositionSopTopics", String.class, String.class, Set.class);
|
||||
method.setAccessible(true);
|
||||
|
||||
method.invoke(service, "生活顾问", "住宅", Set.of("project-a", "project-b"));
|
||||
|
||||
ArgumentCaptor<String> sqlCaptor = ArgumentCaptor.forClass(String.class);
|
||||
ArgumentCaptor<Object[]> argsCaptor = ArgumentCaptor.forClass(Object[].class);
|
||||
verify(jdbcTemplate).query(sqlCaptor.capture(), any(RowMapper.class), argsCaptor.capture());
|
||||
assertTrue(sqlCaptor.getValue().contains("FIND_IN_SET(?, REPLACE(a.org_scope, ' ', '')) > 0"));
|
||||
assertEquals(Set.of("project-a", "project-b"), Set.copyOf(Arrays.asList(argsCaptor.getValue()).subList(3, 5)));
|
||||
assertFalse(sqlCaptor.getValue().contains("project-a"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@Tag("dev")
|
||||
public void answerFeedbackReviewUsesAuthenticatedOperatorForAuditTrail() throws Exception {
|
||||
|
||||
Reference in New Issue
Block a user