test(order): cover declaration field clearing
This commit is contained in:
+27
@@ -1,14 +1,17 @@
|
|||||||
package com.baiyue.order.repository;
|
package com.baiyue.order.repository;
|
||||||
|
|
||||||
import com.baiyue.order.entity.OrderEntity;
|
import com.baiyue.order.entity.OrderEntity;
|
||||||
|
import com.baiyue.order.entity.OrderCargoEntity;
|
||||||
import com.baiyue.order.entity.OrderIdempotencyRecordEntity;
|
import com.baiyue.order.entity.OrderIdempotencyRecordEntity;
|
||||||
import com.baiyue.order.entity.OutboxEventEntity;
|
import com.baiyue.order.entity.OutboxEventEntity;
|
||||||
|
import com.baiyue.order.mapper.OrderCargoMapper;
|
||||||
import com.baiyue.order.mapper.OrderIdempotencyRecordMapper;
|
import com.baiyue.order.mapper.OrderIdempotencyRecordMapper;
|
||||||
import com.baiyue.order.mapper.OrderMapper;
|
import com.baiyue.order.mapper.OrderMapper;
|
||||||
import com.baiyue.order.mapper.OutboxEventMapper;
|
import com.baiyue.order.mapper.OutboxEventMapper;
|
||||||
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
|
import com.baomidou.mybatisplus.core.conditions.AbstractWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
import com.baomidou.mybatisplus.core.conditions.Wrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||||
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||||
import org.junit.jupiter.api.BeforeAll;
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
@@ -32,6 +35,7 @@ class OrderRepositoryIsolationUpdateTest {
|
|||||||
@BeforeAll
|
@BeforeAll
|
||||||
static void initializeTableMetadata() {
|
static void initializeTableMetadata() {
|
||||||
initialize(OrderEntity.class, "order-update-test");
|
initialize(OrderEntity.class, "order-update-test");
|
||||||
|
initialize(OrderCargoEntity.class, "order-cargo-update-test");
|
||||||
initialize(OrderIdempotencyRecordEntity.class, "idempotency-update-test");
|
initialize(OrderIdempotencyRecordEntity.class, "idempotency-update-test");
|
||||||
initialize(OutboxEventEntity.class, "outbox-update-test");
|
initialize(OutboxEventEntity.class, "outbox-update-test");
|
||||||
}
|
}
|
||||||
@@ -66,6 +70,29 @@ class OrderRepositoryIsolationUpdateTest {
|
|||||||
verifyNoInteractions(mapper);
|
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
|
@Test
|
||||||
@SuppressWarnings({"rawtypes", "unchecked"})
|
@SuppressWarnings({"rawtypes", "unchecked"})
|
||||||
void idempotencyCompletionIsLimitedByCustomerRecordAndProcessingState() {
|
void idempotencyCompletionIsLimitedByCustomerRecordAndProcessingState() {
|
||||||
|
|||||||
Reference in New Issue
Block a user