124 lines
5.1 KiB
Java
124 lines
5.1 KiB
Java
package com.ruoyi.loanpricing.service;
|
|
|
|
import com.ruoyi.loanpricing.domain.dto.ModelInvokeDTO;
|
|
import com.ruoyi.loanpricing.domain.dto.PersonalLoanPricingCreateDTO;
|
|
import com.ruoyi.loanpricing.domain.entity.LoanPricingWorkflow;
|
|
import com.ruoyi.loanpricing.domain.entity.ModelRetailOutputFields;
|
|
import com.ruoyi.loanpricing.mapper.LoanPricingWorkflowMapper;
|
|
import com.ruoyi.loanpricing.mapper.ModelCorpOutputFieldsMapper;
|
|
import com.ruoyi.loanpricing.mapper.ModelRetailOutputFieldsMapper;
|
|
import com.ruoyi.loanpricing.util.LoanPricingConverter;
|
|
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 java.util.Objects;
|
|
|
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
import static org.junit.jupiter.api.Assertions.assertNotNull;
|
|
import static org.junit.jupiter.api.Assertions.assertNull;
|
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
|
import static org.mockito.ArgumentMatchers.any;
|
|
import static org.mockito.ArgumentMatchers.argThat;
|
|
import static org.mockito.Mockito.verify;
|
|
import static org.mockito.Mockito.when;
|
|
|
|
@ExtendWith(MockitoExtension.class)
|
|
class LoanPricingModelServicePersonalParamsTest {
|
|
|
|
@Mock
|
|
private ModelService modelService;
|
|
|
|
@Mock
|
|
private LoanPricingWorkflowMapper loanPricingWorkflowMapper;
|
|
|
|
@Mock
|
|
private ModelRetailOutputFieldsMapper modelRetailOutputFieldsMapper;
|
|
|
|
@Mock
|
|
private ModelCorpOutputFieldsMapper modelCorpOutputFieldsMapper;
|
|
|
|
@InjectMocks
|
|
private LoanPricingModelService loanPricingModelService;
|
|
|
|
@Test
|
|
void shouldRemoveLoanPurposeAndKeepPersonalModelFieldsInCreateDto() throws NoSuchFieldException {
|
|
assertThrows(NoSuchFieldException.class,
|
|
() -> PersonalLoanPricingCreateDTO.class.getDeclaredField("loanPurpose"));
|
|
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("bizProof"));
|
|
assertNotNull(PersonalLoanPricingCreateDTO.class.getDeclaredField("loanTerm"));
|
|
}
|
|
|
|
@Test
|
|
void shouldMapBizProofButNotLoanPurposeFromPersonalDto() {
|
|
PersonalLoanPricingCreateDTO dto = new PersonalLoanPricingCreateDTO();
|
|
dto.setCustIsn("CUST001");
|
|
dto.setCustName("张三");
|
|
dto.setGuarType("信用");
|
|
dto.setApplyAmt("100000");
|
|
dto.setBusinessType("新增");
|
|
dto.setLoanTerm("3");
|
|
dto.setBizProof("1");
|
|
|
|
LoanPricingWorkflow workflow = LoanPricingConverter.toEntity(dto);
|
|
|
|
assertNull(workflow.getLoanPurpose());
|
|
assertEquals("1", workflow.getBizProof());
|
|
assertEquals("3", workflow.getLoanTerm());
|
|
}
|
|
|
|
@Test
|
|
void shouldContainLoanTermAndLoanLoopInModelInvokeDto() throws NoSuchFieldException {
|
|
assertNotNull(ModelInvokeDTO.class.getDeclaredField("loanTerm"));
|
|
assertNotNull(ModelInvokeDTO.class.getDeclaredField("loanLoop"));
|
|
}
|
|
|
|
@Test
|
|
void shouldInvokePersonalModelWithExpectedParams() {
|
|
LoanPricingWorkflow workflow = new LoanPricingWorkflow();
|
|
workflow.setId(1L);
|
|
workflow.setSerialNum("202604090001");
|
|
workflow.setOrgCode("892000");
|
|
workflow.setRunType("1");
|
|
workflow.setCustIsn("CUST001");
|
|
workflow.setCustType("个人");
|
|
workflow.setCustName("张三");
|
|
workflow.setIdType("身份证");
|
|
workflow.setIdNum("110101199001011234");
|
|
workflow.setGuarType("信用");
|
|
workflow.setApplyAmt("100000");
|
|
workflow.setLoanTerm("3");
|
|
workflow.setBizProof("true");
|
|
workflow.setLoanLoop("false");
|
|
workflow.setCollThirdParty("true");
|
|
workflow.setCollType("一类");
|
|
|
|
ModelRetailOutputFields response = new ModelRetailOutputFields();
|
|
response.setCalculateRate("6.15");
|
|
|
|
when(loanPricingWorkflowMapper.selectById(1L)).thenReturn(workflow);
|
|
when(modelService.invokePersonalModel(any())).thenReturn(response);
|
|
|
|
loanPricingModelService.invokeModelAsync(1L);
|
|
|
|
verify(modelService).invokePersonalModel(argThat((ModelInvokeDTO dto) ->
|
|
Objects.equals("202604090001", dto.getSerialNum())
|
|
&& Objects.equals("892000", dto.getOrgCode())
|
|
&& Objects.equals("1", dto.getRunType())
|
|
&& Objects.equals("CUST001", dto.getCustIsn())
|
|
&& Objects.equals("个人", dto.getCustType())
|
|
&& Objects.equals("张三", dto.getCustName())
|
|
&& Objects.equals("身份证", dto.getIdType())
|
|
&& Objects.equals("110101199001011234", dto.getIdNum())
|
|
&& Objects.equals("信用", dto.getGuarType())
|
|
&& Objects.equals("100000", dto.getApplyAmt())
|
|
&& Objects.equals("3", dto.getLoanTerm())
|
|
&& Objects.equals("1", dto.getBizProof())
|
|
&& Objects.equals("0", dto.getLoanLoop())
|
|
&& Objects.equals("1", dto.getCollThirdParty())
|
|
&& Objects.equals("一类", dto.getCollType())));
|
|
}
|
|
}
|