fix: bind overseas receiving to shared warehouse
This commit is contained in:
+16
@@ -61,6 +61,22 @@ class PlatformWarehouseControllerTest {
|
||||
assertTrue(operation.description().contains("customerId"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void platformCanCreateSharedWarehouseInCustomerZeroScope() {
|
||||
WarehouseApplicationService service = mock(WarehouseApplicationService.class);
|
||||
PlatformWarehouseController controller = new PlatformWarehouseController();
|
||||
ReflectionTestUtils.setField(controller, "service", service);
|
||||
WarehouseRequests.AddressRequest address = new WarehouseRequests.AddressRequest(
|
||||
"WAREHOUSE", "US", "CA", "Los Angeles", null, "90001", "1 Shared Ave", null, null, null);
|
||||
WarehouseRequests.SaveRequest request = new WarehouseRequests.SaveRequest(0L, "SHARED-LAX", "Shared LAX",
|
||||
"OVERSEAS", "US", "America/Los_Angeles", null, null, null, "ACTIVE", null, address,
|
||||
List.of(new WarehouseRequests.CapabilityRequest("RECEIVING", "收货", true, null, null)));
|
||||
when(service.create(request)).thenReturn(900L);
|
||||
|
||||
assertEquals(900L, controller.create(platform(), request).data());
|
||||
verify(service).create(request);
|
||||
}
|
||||
|
||||
private static AuthenticatedUser platform() {
|
||||
return new AuthenticatedUser(1L, 0L, 0L, 1L, "operator", "PLATFORM", "WEB", Set.of());
|
||||
}
|
||||
|
||||
+39
@@ -3,6 +3,8 @@ package com.baiyue.warehouse.service;
|
||||
import com.baiyue.warehouse.dto.WarehouseRequests;
|
||||
import com.baiyue.warehouse.entity.WarehouseEntity;
|
||||
import com.baiyue.warehouse.entity.WarehouseLocationEntity;
|
||||
import com.baiyue.warehouse.entity.ServiceCapabilityEntity;
|
||||
import com.baiyue.common.core.exception.BizException;
|
||||
import com.baiyue.warehouse.repository.WarehouseRepository;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
@@ -15,6 +17,7 @@ import org.springframework.test.util.ReflectionTestUtils;
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.assertj.core.api.Assertions.assertThatThrownBy;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.Mockito.doAnswer;
|
||||
import static org.mockito.Mockito.verify;
|
||||
@@ -59,6 +62,31 @@ class WarehouseApplicationServiceTest {
|
||||
verify(repository).pageAll(query);
|
||||
}
|
||||
|
||||
@Test
|
||||
void sharedReceivingWarehouseMustBeOverseasAndResolvesCanonicalReference() {
|
||||
WarehouseRequests.SaveRequest shared = sharedRequest("OVERSEAS", true);
|
||||
doAnswer(call -> { ((WarehouseEntity) call.getArgument(0)).setId(900L); return null; })
|
||||
.when(repository).insertWarehouse(any());
|
||||
|
||||
assertThat(service.create(shared)).isEqualTo(900L);
|
||||
|
||||
WarehouseEntity warehouse = new WarehouseEntity(); warehouse.setId(900L); warehouse.setCustomerId(0L);
|
||||
warehouse.setWarehouseCode("SHARED-LAX"); warehouse.setWarehouseName("Shared LAX");
|
||||
warehouse.setWarehouseType("OVERSEAS"); warehouse.setStatus("ACTIVE");
|
||||
ServiceCapabilityEntity receiving = new ServiceCapabilityEntity();
|
||||
receiving.setCapabilityCode("RECEIVING"); receiving.setEnabled(true);
|
||||
when(repository.findOwned(0L, 900L)).thenReturn(warehouse);
|
||||
when(repository.findCapabilities(0L, 900L)).thenReturn(List.of(receiving));
|
||||
|
||||
assertThat(service.activeSharedReference(900L).warehouseName()).isEqualTo("Shared LAX");
|
||||
}
|
||||
|
||||
@Test
|
||||
void sharedWarehouseRejectsNonOverseasOrMissingReceivingCapability() {
|
||||
assertThatThrownBy(() -> service.create(sharedRequest("FBA", true))).isInstanceOf(BizException.class);
|
||||
assertThatThrownBy(() -> service.create(sharedRequest("OVERSEAS", false))).isInstanceOf(BizException.class);
|
||||
}
|
||||
|
||||
private static WarehouseRequests.SaveRequest request() {
|
||||
WarehouseRequests.AddressRequest address = new WarehouseRequests.AddressRequest(
|
||||
"WAREHOUSE", "US", "CA", "Los Angeles", null, "90001",
|
||||
@@ -67,4 +95,15 @@ class WarehouseApplicationServiceTest {
|
||||
"OVERSEAS", "US", "America/Los_Angeles", null, null, null,
|
||||
"ACTIVE", null, address, List.of());
|
||||
}
|
||||
|
||||
private static WarehouseRequests.SaveRequest sharedRequest(String type, boolean receiving) {
|
||||
WarehouseRequests.AddressRequest address = new WarehouseRequests.AddressRequest(
|
||||
"WAREHOUSE", "US", "CA", "Los Angeles", null, "90001",
|
||||
"1 Logistics Ave", null, null, null);
|
||||
List<WarehouseRequests.CapabilityRequest> capabilities = receiving
|
||||
? List.of(new WarehouseRequests.CapabilityRequest("RECEIVING", "收货", true, null, null))
|
||||
: List.of();
|
||||
return new WarehouseRequests.SaveRequest(0L, "SHARED-LAX", "Shared LAX", type,
|
||||
"US", "America/Los_Angeles", null, null, null, "ACTIVE", null, address, capabilities);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user