fix: handle unfiltered domestic container lists

This commit is contained in:
2026-08-13 17:30:03 +08:00
parent 6ad438e733
commit 8ff49b501f
2 changed files with 77 additions and 1 deletions
@@ -104,5 +104,8 @@ public class DomesticContainerRepository {
}
private static String trim(String value) { return value == null ? null : value.trim(); }
private static String upper(String value) { return trim(value).toUpperCase(java.util.Locale.ROOT); }
private static String upper(String value) {
String normalized = trim(value);
return normalized == null ? null : normalized.toUpperCase(java.util.Locale.ROOT);
}
}
@@ -0,0 +1,73 @@
package com.baiyue.warehouse.domesticcontainer.repository;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baiyue.warehouse.domesticcontainer.dto.DomesticContainerDtos;
import com.baiyue.warehouse.domesticcontainer.entity.DomesticContainerInventoryEntity;
import com.baiyue.warehouse.domesticcontainer.entity.DomesticContainerOrderEntity;
import com.baiyue.warehouse.domesticcontainer.mapper.DomesticContainerInventoryMapper;
import com.baiyue.warehouse.domesticcontainer.mapper.DomesticContainerOrderMapper;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.apache.ibatis.session.Configuration;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.mockito.ArgumentCaptor;
import org.springframework.test.util.ReflectionTestUtils;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class DomesticContainerRepositoryTest {
@BeforeAll
static void initializeTableMetadata() {
Configuration configuration = new Configuration();
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, "order-test"),
DomesticContainerOrderEntity.class);
TableInfoHelper.initTableInfo(new MapperBuilderAssistant(configuration, "inventory-test"),
DomesticContainerInventoryEntity.class);
}
@Test
void pagesOrdersWithoutOptionalFilters() {
DomesticContainerOrderMapper mapper = mock(DomesticContainerOrderMapper.class);
DomesticContainerRepository repository = repositoryWith(mapper, mock(DomesticContainerInventoryMapper.class));
when(mapper.selectPage(any(Page.class), any())).thenAnswer(invocation -> invocation.getArgument(0));
repository.pageOrders("INBOUND", new DomesticContainerDtos.OrderQuery(1, 20, null, null, null, null, null));
@SuppressWarnings("unchecked")
ArgumentCaptor<LambdaQueryWrapper<DomesticContainerOrderEntity>> wrapper =
ArgumentCaptor.forClass(LambdaQueryWrapper.class);
verify(mapper).selectPage(any(Page.class), wrapper.capture());
wrapper.getValue().getSqlSegment();
assertThat(wrapper.getValue().getParamNameValuePairs().values()).contains(0L, "INBOUND");
}
@Test
void pagesInventoriesWithoutOptionalFilters() {
DomesticContainerInventoryMapper mapper = mock(DomesticContainerInventoryMapper.class);
DomesticContainerRepository repository = repositoryWith(mock(DomesticContainerOrderMapper.class), mapper);
when(mapper.selectPage(any(Page.class), any())).thenAnswer(invocation -> invocation.getArgument(0));
repository.pageInventories(new DomesticContainerDtos.InventoryQuery(1, 20, null, null, null, null));
@SuppressWarnings("unchecked")
ArgumentCaptor<LambdaQueryWrapper<DomesticContainerInventoryEntity>> wrapper =
ArgumentCaptor.forClass(LambdaQueryWrapper.class);
verify(mapper).selectPage(any(Page.class), wrapper.capture());
wrapper.getValue().getSqlSegment();
assertThat(wrapper.getValue().getParamNameValuePairs().values()).containsExactly(0L);
}
private static DomesticContainerRepository repositoryWith(DomesticContainerOrderMapper orders,
DomesticContainerInventoryMapper inventories) {
DomesticContainerRepository repository = new DomesticContainerRepository();
ReflectionTestUtils.setField(repository, "orders", orders);
ReflectionTestUtils.setField(repository, "inventories", inventories);
return repository;
}
}