diff --git a/order/src/test/java/com/baiyue/order/repository/OrderRepositoryIsolationUpdateTest.java b/order/src/test/java/com/baiyue/order/repository/OrderRepositoryIsolationUpdateTest.java index a18329cde..cd3e273a4 100644 --- a/order/src/test/java/com/baiyue/order/repository/OrderRepositoryIsolationUpdateTest.java +++ b/order/src/test/java/com/baiyue/order/repository/OrderRepositoryIsolationUpdateTest.java @@ -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 = 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() {