test(order): cover declaration field clearing
This commit is contained in:
+27
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user