优化
This commit is contained in:
+68
@@ -0,0 +1,68 @@
|
||||
package com.baiyue.firstleg.loading.service;
|
||||
|
||||
import com.baiyue.firstleg.entity.LoadingPlanEntity;
|
||||
import com.baiyue.firstleg.entity.LoadingPlanItemEntity;
|
||||
import com.baiyue.firstleg.repository.SmartLoadingRepository;
|
||||
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.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.Mockito.mock;
|
||||
import static org.mockito.Mockito.when;
|
||||
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class FinanceCostSnapshotServiceTest {
|
||||
@Mock SmartLoadingRepository repository;
|
||||
@InjectMocks FinanceCostSnapshotService service;
|
||||
|
||||
@Test
|
||||
void returnsOnlyValidVolumesOwnedByCustomer() {
|
||||
when(repository.plan(88L)).thenReturn(mock(LoadingPlanEntity.class));
|
||||
when(repository.items(88L)).thenReturn(List.of(
|
||||
item(10L, 101L, 1001L, "1.25"),
|
||||
item(11L, 102L, 1002L, "2.00"),
|
||||
item(10L, 103L, 1003L, "0")));
|
||||
|
||||
var snapshot = service.container(10L, 88L);
|
||||
|
||||
assertThat(snapshot.customerId()).isEqualTo(10L);
|
||||
assertThat(snapshot.containerId()).isEqualTo(88L);
|
||||
assertThat(snapshot.orders()).containsExactly(
|
||||
new FinanceCostSnapshotService.OrderVolume(101L, 1001L, new BigDecimal("1.25")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsContainerWithoutValidCustomerVolume() {
|
||||
when(repository.plan(88L)).thenReturn(mock(LoadingPlanEntity.class));
|
||||
when(repository.items(88L)).thenReturn(List.of(
|
||||
item(11L, 102L, 1002L, "2.00"),
|
||||
item(10L, 103L, 1003L, "0")));
|
||||
|
||||
assertThatThrownBy(() -> service.container(10L, 88L))
|
||||
.hasMessageContaining("没有该客户的有效订单体积");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsUnknownContainer() {
|
||||
when(repository.plan(88L)).thenReturn(null);
|
||||
|
||||
assertThatThrownBy(() -> service.container(10L, 88L))
|
||||
.hasMessageContaining("柜次不存在");
|
||||
}
|
||||
|
||||
private LoadingPlanItemEntity item(long customerId, long orderId, long inboundId, String volume) {
|
||||
var item = new LoadingPlanItemEntity();
|
||||
item.setAccountId(customerId);
|
||||
item.setOrderId(orderId);
|
||||
item.setInboundId(inboundId);
|
||||
item.setVolumeCbm(new BigDecimal(volume));
|
||||
return item;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user