package cn.iocoder.yudao.module.srm.service.tender;
|
|
import cn.iocoder.yudao.module.srm.controller.admin.tender.vo.SrmSupplierQuoteSaveReqVO;
|
import cn.iocoder.yudao.module.srm.dal.dataobject.*;
|
import cn.iocoder.yudao.module.srm.dal.mysql.*;
|
import org.junit.jupiter.api.Test;
|
import org.springframework.test.util.ReflectionTestUtils;
|
import java.math.BigDecimal;
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
import static org.mockito.Mockito.*;
|
import static org.mockito.ArgumentMatchers.*;
|
|
class SrmQuoteOwnershipTest {
|
@Test void rejectsMaterialFromAnotherProject() {
|
var service = new SrmTenderBidServiceImpl();
|
var bids = mock(SrmTenderBidMapper.class); var projects = mock(SrmTenderProjectMapper.class);
|
var quotes = mock(SrmSupplierQuoteMapper.class); var materials = mock(SrmTenderMaterialMapper.class);
|
ReflectionTestUtils.setField(service, "tenderBidMapper", bids);
|
ReflectionTestUtils.setField(service, "tenderProjectMapper", projects);
|
ReflectionTestUtils.setField(service, "supplierQuoteMapper", quotes);
|
ReflectionTestUtils.setField(service, "tenderMaterialMapper", materials);
|
var bid = new SrmTenderBidDO(); bid.setId(1L); bid.setTenderProjectId(10L); bid.setBidStatus(0);
|
var project = new SrmTenderProjectDO(); project.setId(10L); project.setTenderStatus(10);
|
var material = new SrmTenderMaterialDO(); material.setId(9L); material.setTenderProjectId(11L);
|
when(bids.selectById(1L)).thenReturn(bid); when(projects.selectById(10L)).thenReturn(project);
|
when(materials.selectById(9L)).thenReturn(material);
|
var req = new SrmSupplierQuoteSaveReqVO(); req.setBidId(1L); req.setTenderMaterialId(9L); req.setQuotePrice(BigDecimal.ONE);
|
assertThrows(RuntimeException.class, () -> service.createQuote(req));
|
verify(quotes, never()).insert(any(SrmSupplierQuoteDO.class));
|
}
|
|
@Test void rejectsEditingQuoteWithAnotherBidId() {
|
var service = new SrmTenderBidServiceImpl();
|
var bids = mock(SrmTenderBidMapper.class); var projects = mock(SrmTenderProjectMapper.class);
|
var quotes = mock(SrmSupplierQuoteMapper.class); var materials = mock(SrmTenderMaterialMapper.class);
|
ReflectionTestUtils.setField(service, "tenderBidMapper", bids);
|
ReflectionTestUtils.setField(service, "tenderProjectMapper", projects);
|
ReflectionTestUtils.setField(service, "supplierQuoteMapper", quotes);
|
ReflectionTestUtils.setField(service, "tenderMaterialMapper", materials);
|
var bid = new SrmTenderBidDO(); bid.setId(1L); bid.setTenderProjectId(10L); bid.setBidStatus(0);
|
var project = new SrmTenderProjectDO(); project.setId(10L); project.setTenderStatus(10);
|
var quote = new SrmSupplierQuoteDO(); quote.setId(5L); quote.setBidId(2L); quote.setTenderMaterialId(9L);
|
when(bids.selectById(1L)).thenReturn(bid); when(projects.selectById(10L)).thenReturn(project);
|
when(quotes.selectById(5L)).thenReturn(quote);
|
var req = new SrmSupplierQuoteSaveReqVO(); req.setId(5L); req.setBidId(1L); req.setTenderMaterialId(9L); req.setQuotePrice(BigDecimal.ONE);
|
assertThrows(RuntimeException.class, () -> service.updateQuote(req));
|
verify(quotes, never()).updateById(any(SrmSupplierQuoteDO.class));
|
}
|
}
|