test(order): cover declaration field clearing

This commit is contained in:
2026-09-01 21:11:37 +08:00
parent e82cefe493
commit b85e021cbe
@@ -1,14 +1,17 @@
package com.baiyue.order.repository;
import com.baiyue.order.entity.OrderEntity;
import com.baiyue.order.entity.OrderCargoEntity;
import com.baiyue.order.entity.OrderIdempotencyRecordEntity;
import com.baiyue.order.entity.OutboxEventEntity;
import com.baiyue.order.mapper.OrderCargoMapper;
import com.baiyue.order.mapper.OrderIdempotencyRecordMapper;
import com.baiyue.order.mapper.OrderMapper;
import com.baiyue.order.mapper.OutboxEventMapper;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import org.junit.jupiter.api.BeforeAll;
@@ -32,6 +35,7 @@ class OrderRepositoryIsolationUpdateTest {
@BeforeAll
static void initializeTableMetadata() {
initialize(OrderEntity.class, "order-update-test");
initialize(OrderCargoEntity.class, "order-cargo-update-test");
initialize(OrderIdempotencyRecordEntity.class, "idempotency-update-test");
initialize(OutboxEventEntity.class, "outbox-update-test");
}
@@ -66,6 +70,29 @@ class OrderRepositoryIsolationUpdateTest {
verifyNoInteractions(mapper);
}
@Test
@SuppressWarnings({"rawtypes", "unchecked"})
void declarationCargoUpdateIsVersionedScopedAndCanExplicitlyClearOptionalFields() {
OrderCargoMapper mapper = mock(OrderCargoMapper.class);
OrderRepository repository = repository("cargoMapper", mapper);
OrderCargoEntity cargo = new OrderCargoEntity();
cargo.setId(31L);
cargo.setVersion(4);
cargo.setCargoName("Keyboard");
cargo.setCargoRemark(null);
when(mapper.update(isNull(), any(Wrapper.class))).thenReturn(1);
repository.updateDeclarationCargo(11L, 21L, cargo);
ArgumentCaptor<Wrapper<OrderCargoEntity>> wrapper = ArgumentCaptor.forClass(Wrapper.class);
verify(mapper).update(isNull(), wrapper.capture());
assertThat(wrapper.getValue().getSqlSegment())
.contains("tenant_id", "order_id", "id", "version", "deleted");
assertThat(((LambdaUpdateWrapper<?>) wrapper.getValue()).getSqlSet())
.contains("cargo_remark", "version = version + 1");
assertThat(params(wrapper.getValue()).values()).contains(11L, 21L, 31L, 4, false, "Keyboard", null);
}
@Test
@SuppressWarnings({"rawtypes", "unchecked"})
void idempotencyCompletionIsLimitedByCustomerRecordAndProcessingState() {