|
|
@@ -1,7 +1,12 @@
|
|
|
package com.malk.minglei.service.impl.employee;
|
|
|
|
|
|
+import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.malk.minglei.config.EmployeeRosterProperties;
|
|
|
+import com.malk.minglei.dto.ApiResponse;
|
|
|
+import com.malk.minglei.dto.EmployeeRosterInfo;
|
|
|
import org.junit.jupiter.api.Test;
|
|
|
+import org.junit.jupiter.params.ParameterizedTest;
|
|
|
+import org.junit.jupiter.params.provider.CsvSource;
|
|
|
import org.mockito.ArgumentCaptor;
|
|
|
import org.springframework.beans.factory.ObjectProvider;
|
|
|
import org.springframework.jdbc.core.JdbcTemplate;
|
|
|
@@ -10,8 +15,10 @@ import org.springframework.jdbc.core.ResultSetExtractor;
|
|
|
import org.springframework.jdbc.core.RowMapper;
|
|
|
|
|
|
import java.sql.PreparedStatement;
|
|
|
+import java.sql.ResultSet;
|
|
|
import java.time.LocalDate;
|
|
|
import java.util.Collections;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
|
import static org.junit.jupiter.api.Assertions.assertFalse;
|
|
|
@@ -23,6 +30,39 @@ import static org.mockito.Mockito.verify;
|
|
|
|
|
|
class EmployeeRosterRepositoryTest {
|
|
|
|
|
|
+ @ParameterizedTest
|
|
|
+ @CsvSource(value = {"6222020000000000000,Test Bank,123456789012", "NULL,NULL,NULL"}, nullValues = "NULL")
|
|
|
+ @SuppressWarnings({"rawtypes", "unchecked"})
|
|
|
+ void findByDingtalkIdReturnsBankInformationInResponse(String cardNo, String bankName, String branchCode) throws Exception {
|
|
|
+ JdbcTemplate jdbcTemplate = mock(JdbcTemplate.class);
|
|
|
+ ObjectProvider<JdbcTemplate> jdbcTemplateProvider = mock(ObjectProvider.class);
|
|
|
+ given(jdbcTemplateProvider.getIfAvailable()).willReturn(jdbcTemplate);
|
|
|
+ ResultSet row = mock(ResultSet.class);
|
|
|
+ given(row.getString("dingtalk_id")).willReturn("user-1");
|
|
|
+ given(row.getString("bank_card_no")).willReturn(cardNo);
|
|
|
+ given(row.getString("bank_name")).willReturn(bankName);
|
|
|
+ given(row.getString("bank_branch_code")).willReturn(branchCode);
|
|
|
+ given(jdbcTemplate.query(any(String.class), any(PreparedStatementSetter.class), any(RowMapper.class)))
|
|
|
+ .willAnswer(invocation -> Collections.singletonList(
|
|
|
+ ((RowMapper<?>) invocation.getArgument(2)).mapRow(row, 0)));
|
|
|
+
|
|
|
+ EmployeeRosterRepository repository = new EmployeeRosterRepository(jdbcTemplateProvider, new EmployeeRosterProperties());
|
|
|
+ EmployeeRosterInfo info = repository.findByDingtalkId("user-1");
|
|
|
+ Map body = new ObjectMapper().convertValue(ApiResponse.success(info), Map.class);
|
|
|
+ Map result = (Map) body.get("result");
|
|
|
+
|
|
|
+ assertEquals("user-1", result.get("dingtalkId"));
|
|
|
+ assertTrue(result.containsKey("bank_card_no"));
|
|
|
+ assertTrue(result.containsKey("bank_name"));
|
|
|
+ assertTrue(result.containsKey("bank_branch_code"));
|
|
|
+ assertEquals(cardNo, result.get("bank_card_no"));
|
|
|
+ assertEquals(bankName, result.get("bank_name"));
|
|
|
+ assertEquals(branchCode, result.get("bank_branch_code"));
|
|
|
+ assertFalse(result.containsKey("bankCardNo"));
|
|
|
+ assertFalse(result.containsKey("bankName"));
|
|
|
+ assertFalse(result.containsKey("bankBranchCode"));
|
|
|
+ }
|
|
|
+
|
|
|
@Test
|
|
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
|
|
void reserveNextEmployeeNoUsesEmployeeRosterEmployeeNoAndLocksDailyRange() throws Exception {
|