fix: persist overseas delivery completion history
This commit is contained in:
@@ -56,7 +56,7 @@ public class OrderFulfillmentCompletionService {
|
|||||||
OrderStatusHistoryEntity history = new OrderStatusHistoryEntity();
|
OrderStatusHistoryEntity history = new OrderStatusHistoryEntity();
|
||||||
history.setId(IdWorker.getId()); history.setTenantId(tenantId); history.setOrderId(orderId);
|
history.setId(IdWorker.getId()); history.setTenantId(tenantId); history.setOrderId(orderId);
|
||||||
history.setFromStatus(from); history.setToStatus(OrderStatus.COMPLETED);
|
history.setFromStatus(from); history.setToStatus(OrderStatus.COMPLETED);
|
||||||
history.setAction("OVERSEAS_DELIVERY_COMPLETED");
|
history.setAction("OVERSEAS_DELIVERED");
|
||||||
history.setReason("海外派送单 " + request.deliveryNo() + " 已签收");
|
history.setReason("海外派送单 " + request.deliveryNo() + " 已签收");
|
||||||
history.setOperatorId(0L); history.setOperatorName("OVERSEAS_EVENT_BRIDGE");
|
history.setOperatorId(0L); history.setOperatorName("OVERSEAS_EVENT_BRIDGE");
|
||||||
history.setOccurredAt(completedAt); histories.insert(history);
|
history.setOccurredAt(completedAt); histories.insert(history);
|
||||||
|
|||||||
+63
@@ -0,0 +1,63 @@
|
|||||||
|
package com.baiyue.order.service;
|
||||||
|
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.MybatisConfiguration;
|
||||||
|
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
|
||||||
|
import com.baiyue.order.entity.OrderEntity;
|
||||||
|
import com.baiyue.order.entity.OrderStatus;
|
||||||
|
import com.baiyue.order.entity.OrderStatusHistoryEntity;
|
||||||
|
import com.baiyue.order.mapper.OrderMapper;
|
||||||
|
import com.baiyue.order.mapper.OrderStatusHistoryMapper;
|
||||||
|
import org.apache.ibatis.builder.MapperBuilderAssistant;
|
||||||
|
import org.junit.jupiter.api.BeforeAll;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.api.extension.ExtendWith;
|
||||||
|
import org.mockito.ArgumentCaptor;
|
||||||
|
import org.mockito.InjectMocks;
|
||||||
|
import org.mockito.Mock;
|
||||||
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
|
import static org.mockito.ArgumentMatchers.isNull;
|
||||||
|
import static org.mockito.Mockito.verify;
|
||||||
|
import static org.mockito.Mockito.when;
|
||||||
|
|
||||||
|
@ExtendWith(MockitoExtension.class)
|
||||||
|
class OrderFulfillmentCompletionServiceTest {
|
||||||
|
@Mock private OrderMapper orders;
|
||||||
|
@Mock private OrderStatusHistoryMapper histories;
|
||||||
|
@InjectMocks private OrderFulfillmentCompletionService service;
|
||||||
|
|
||||||
|
@BeforeAll
|
||||||
|
static void initializeTableMetadata() {
|
||||||
|
TableInfoHelper.initTableInfo(
|
||||||
|
new MapperBuilderAssistant(new MybatisConfiguration(), "order-fulfillment-completion-test"),
|
||||||
|
OrderEntity.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void completesOrderWithHistoryActionThatFitsThePersistedColumn() {
|
||||||
|
OrderEntity order = new OrderEntity();
|
||||||
|
order.setId(201L);
|
||||||
|
order.setTenantId(11L);
|
||||||
|
order.setOrderNo("FL201");
|
||||||
|
order.setInboundCode("IN-201");
|
||||||
|
order.setStatus(OrderStatus.PROCESSING);
|
||||||
|
order.setVersion(7);
|
||||||
|
when(orders.lockOwned(11L, 201L)).thenReturn(order);
|
||||||
|
when(orders.update(isNull(), any(LambdaUpdateWrapper.class))).thenReturn(1);
|
||||||
|
when(histories.insert(any(OrderStatusHistoryEntity.class))).thenReturn(1);
|
||||||
|
|
||||||
|
var result = service.complete(new OrderFulfillmentCompletionService.Request(
|
||||||
|
"11", "201", "FL201", "IN-201", "DL-201", Instant.parse("2026-09-15T12:00:00Z"),
|
||||||
|
"event-201", "sha256:test"));
|
||||||
|
|
||||||
|
assertThat(result.status()).isEqualTo("COMPLETED");
|
||||||
|
ArgumentCaptor<OrderStatusHistoryEntity> history = ArgumentCaptor.forClass(OrderStatusHistoryEntity.class);
|
||||||
|
verify(histories).insert(history.capture());
|
||||||
|
assertThat(history.getValue().getAction()).isEqualTo("OVERSEAS_DELIVERED").hasSizeLessThanOrEqualTo(24);
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user