package cn.iocoder.yudao.module.erp.service.finance;
|
|
import cn.iocoder.yudao.module.erp.api.finance.dto.AfterSaleFinanceDraftCreateDTO;
|
import cn.iocoder.yudao.module.erp.dal.dataobject.finance.ErpAfterSaleFinanceDraftDO;
|
import cn.iocoder.yudao.module.erp.dal.mysql.finance.ErpAfterSaleFinanceDraftMapper;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.test.util.ReflectionTestUtils;
|
import java.math.BigDecimal;
|
import java.util.List;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
import static org.mockito.Mockito.*;
|
|
class ErpAfterSaleFinanceDraftServiceTest {
|
@Test
|
void exposesReviewResultByDraftIdWithoutChangingIt() {
|
var mapper = mock(ErpAfterSaleFinanceDraftMapper.class);
|
var draft = new ErpAfterSaleFinanceDraftDO(); draft.setId(4L); draft.setStatus(2); draft.setReviewRemark("材料不全");
|
when(mapper.selectBatchIds(List.of(4L))).thenReturn(List.of(draft));
|
var service = new ErpAfterSaleFinanceDraftService();
|
ReflectionTestUtils.setField(service, "mapper", mapper);
|
var result = service.getReviewResults(List.of(4L));
|
assertEquals(2, result.get(4L).getStatus());
|
assertEquals("材料不全", result.get(4L).getRemark());
|
}
|
|
@Test
|
void rejectsNonPositiveAmountBeforeInsert() {
|
var mapper = mock(ErpAfterSaleFinanceDraftMapper.class);
|
var service = new ErpAfterSaleFinanceDraftService();
|
ReflectionTestUtils.setField(service, "mapper", mapper);
|
var input = new AfterSaleFinanceDraftCreateDTO(); input.setCollaborationId(1L); input.setTicketId(2L);
|
input.setBusinessApproverId(3L); input.setCategory("QUALITY"); input.setDirection("INTERNAL");
|
input.setDescription("费用说明"); input.setAmount(BigDecimal.ZERO);
|
assertThrows(RuntimeException.class, () -> service.createDraft(input));
|
input.setAmount(new BigDecimal("1.001"));
|
assertThrows(RuntimeException.class, () -> service.createDraft(input));
|
input.setAmount(new BigDecimal("10000000000000000.00"));
|
assertThrows(RuntimeException.class, () -> service.createDraft(input));
|
verifyNoInteractions(mapper);
|
}
|
|
@Test
|
void onlyPendingDraftCanBeReviewed() {
|
var mapper = mock(ErpAfterSaleFinanceDraftMapper.class);
|
var draft = new ErpAfterSaleFinanceDraftDO(); draft.setId(4L); draft.setStatus(1);
|
when(mapper.selectById(4L)).thenReturn(draft);
|
var service = new ErpAfterSaleFinanceDraftService();
|
ReflectionTestUtils.setField(service, "mapper", mapper);
|
assertThrows(RuntimeException.class, () -> service.review(4L, 9L, true, "确认"));
|
verify(mapper, never()).update(any(), any());
|
}
|
}
|