fix(warehouse): use location time zones for appointment scheduling
This commit is contained in:
+5
-5
@@ -78,7 +78,7 @@ class WarehouseApplicationServiceTest {
|
||||
assertThat(warehouse.getValue().getTenantId()).isZero();
|
||||
assertThat(warehouse.getValue().getWarehouseType()).isEqualTo("DOMESTIC");
|
||||
assertThat(warehouse.getValue().getCountryCode()).isEqualTo("CN");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("UTC+8");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("Asia/Shanghai");
|
||||
assertThat(warehouse.getValue().getStatus()).isEqualTo("ACTIVE");
|
||||
assertThat(address.getValue().getAddressType()).isEqualTo("WAREHOUSE");
|
||||
assertThat(address.getValue().getCountryCode()).isEqualTo("CN");
|
||||
@@ -100,14 +100,14 @@ class WarehouseApplicationServiceTest {
|
||||
assertThat(warehouse.getValue().getTenantId()).isZero();
|
||||
assertThat(warehouse.getValue().getWarehouseType()).isEqualTo("FBA");
|
||||
assertThat(warehouse.getValue().getInternalCode()).isEqualTo("154");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("UTC-8");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("America/Los_Angeles");
|
||||
assertThat(warehouse.getValue().getStatus()).isEqualTo("ACTIVE");
|
||||
}
|
||||
|
||||
@Test
|
||||
void rejectsInternalCodeForNonFbaWarehouse() {
|
||||
WarehouseRequests.SaveRequest request = new WarehouseRequests.SaveRequest(null, "CN-SZX-01", "154", "深圳作业仓",
|
||||
"DOMESTIC", "CN", "UTC+8", null, null, null, null, null,
|
||||
"DOMESTIC", "CN", "Asia/Shanghai", null, null, null, null, null,
|
||||
new WarehouseRequests.AddressRequest(null, "CN", "广东省", "深圳市", null,
|
||||
"518000", "前海路 1 号", null, null, null),
|
||||
null);
|
||||
@@ -135,7 +135,7 @@ class WarehouseApplicationServiceTest {
|
||||
@Test
|
||||
void createsOverseasPartnerWarehouseAsPlatformPublicMasterData() {
|
||||
WarehouseRequests.SaveRequest request = new WarehouseRequests.SaveRequest(null, "US-PARTNER-LAX", null, "洛杉矶合作仓",
|
||||
"OVERSEAS_PARTNER", "US", "UTC-8", "Alex", "+1-213-555-0100", null, null, null,
|
||||
"OVERSEAS_PARTNER", "US", "America/Los_Angeles", "Alex", "+1-213-555-0100", null, null, null,
|
||||
new WarehouseRequests.AddressRequest(null, "US", "CA", "Los Angeles", null,
|
||||
"90001", "123 Partner Ave", null, null, null),
|
||||
java.util.List.of(new WarehouseRequests.CapabilityRequest("STORAGE", "仓储", true, null, null)));
|
||||
@@ -147,7 +147,7 @@ class WarehouseApplicationServiceTest {
|
||||
assertThat(warehouse.getValue().getTenantId()).isZero();
|
||||
assertThat(warehouse.getValue().getWarehouseType()).isEqualTo("OVERSEAS_PARTNER");
|
||||
assertThat(warehouse.getValue().getCountryCode()).isEqualTo("US");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("UTC-8");
|
||||
assertThat(warehouse.getValue().getTimezone()).isEqualTo("America/Los_Angeles");
|
||||
}
|
||||
|
||||
@Test
|
||||
|
||||
+3
-3
@@ -69,7 +69,7 @@ class WarehouseImportServiceTest {
|
||||
@DisplayName("海外合作仓类型可通过批量导入进入公共仓库主数据")
|
||||
void shouldImportOverseasPartnerWarehouse() throws Exception {
|
||||
byte[] file = withRows(service.template(), new String[][] {
|
||||
{"US-PARTNER-LAX", "", "洛杉矶合作仓", "OVERSEAS_PARTNER", "US", "CA", "Los Angeles", "", "123 Partner Ave", "90001", "UTC-8", "", "", "", "", ""}
|
||||
{"US-PARTNER-LAX", "", "洛杉矶合作仓", "OVERSEAS_PARTNER", "US", "CA", "Los Angeles", "", "123 Partner Ave", "90001", "America/Los_Angeles", "", "", "", "", ""}
|
||||
});
|
||||
|
||||
WarehouseImportResult result = service.importFile(0L, "warehouses.xlsx", file, null);
|
||||
@@ -109,7 +109,7 @@ class WarehouseImportServiceTest {
|
||||
existing.setWarehouseName("旧名称");
|
||||
existing.setWarehouseType("DOMESTIC");
|
||||
existing.setCountryCode("CN");
|
||||
existing.setTimezone("UTC+8");
|
||||
existing.setTimezone("Asia/Shanghai");
|
||||
existing.setContactName("旧联系人");
|
||||
existing.setContactPhone("旧电话");
|
||||
existing.setContactEmail("old@example.com");
|
||||
@@ -166,7 +166,7 @@ class WarehouseImportServiceTest {
|
||||
existing.setWarehouseName("旧名称");
|
||||
existing.setWarehouseType("DOMESTIC");
|
||||
existing.setCountryCode("CN");
|
||||
existing.setTimezone("UTC+8");
|
||||
existing.setTimezone("Asia/Shanghai");
|
||||
existing.setStatus("ACTIVE");
|
||||
WarehouseAddressEntity address = new WarehouseAddressEntity();
|
||||
address.setCountryCode("CN");
|
||||
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.baiyue.warehouse.service;
|
||||
|
||||
import com.baiyue.common.core.exception.BizException;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import static org.assertj.core.api.Assertions.*;
|
||||
|
||||
class WarehouseTimezoneTest {
|
||||
@Test void inferredCaliforniaZoneTracksSummerAndWinterInsteadOfFixingTheOffset() {
|
||||
var id=WarehouseSaveNormalizer.resolveTimezone("FBA","US",null,"CA");
|
||||
assertThat(id).isEqualTo("America/Los_Angeles");
|
||||
var zone=ZoneId.of(id);
|
||||
assertThat(LocalDateTime.parse("2026-07-01T09:00:00").atZone(zone).getOffset().toString()).isEqualTo("-07:00");
|
||||
assertThat(LocalDateTime.parse("2026-12-01T09:00:00").atZone(zone).getOffset().toString()).isEqualTo("-08:00");
|
||||
}
|
||||
@Test void rejectsFixedOffsetsAndUnrecognizedZonesOnWrite() {
|
||||
for(var value:new String[]{"UTC-5","UTC-08:00","-08:00","Etc/GMT+8","Mars/Base"}) {
|
||||
assertThatThrownBy(()->WarehouseSaveNormalizer.resolveTimezone("FBA","US",value,"CA")).isInstanceOf(BizException.class);
|
||||
}
|
||||
}
|
||||
@Test void exceptionalStatesNeedAnExplicitLocationZoneAndPhoenixRemainsValid() {
|
||||
for(var state:new String[]{"AK","AZ","NV","TX"}) {
|
||||
assertThatThrownBy(()->WarehouseSaveNormalizer.resolveTimezone("FBA","US",null,state)).isInstanceOf(BizException.class);
|
||||
}
|
||||
assertThat(WarehouseSaveNormalizer.resolveTimezone("FBA","US","America/Phoenix","AZ")).isEqualTo("America/Phoenix");
|
||||
assertThat(WarehouseSaveNormalizer.resolveTimezone("DOMESTIC","CN",null,null)).isEqualTo("Asia/Shanghai");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user