fix: persist overseas delivery completion history
This commit is contained in:
@@ -56,7 +56,7 @@ public class OrderFulfillmentCompletionService {
|
||||
OrderStatusHistoryEntity history = new OrderStatusHistoryEntity();
|
||||
history.setId(IdWorker.getId()); history.setTenantId(tenantId); history.setOrderId(orderId);
|
||||
history.setFromStatus(from); history.setToStatus(OrderStatus.COMPLETED);
|
||||
history.setAction("OVERSEAS_DELIVERY_COMPLETED");
|
||||
history.setAction("OVERSEAS_DELIVERED");
|
||||
history.setReason("海外派送单 " + request.deliveryNo() + " 已签收");
|
||||
history.setOperatorId(0L); history.setOperatorName("OVERSEAS_EVENT_BRIDGE");
|
||||
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