This commit is contained in:
2026-08-20 18:02:38 +08:00
parent b55b049e77
commit 1cd8b6a473
210 changed files with 6974 additions and 825 deletions
@@ -0,0 +1,30 @@
package com.baiyue.lastleg.masterdata.quote.controller;
import org.junit.jupiter.api.Test;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.assertj.core.api.Assertions.assertThat;
class PlatformOverseasQuoteControllerContractTest {
@Test
void exposesStablePlatformBaseAndCanonicalAuthorities() {
RequestMapping base = PlatformOverseasQuoteController.class.getAnnotation(RequestMapping.class);
assertThat(base.value()).containsExactly("/api/platform/v1/last-leg/master-data/overseas-quotes");
Map<String, String> authorities = Stream.of(PlatformOverseasQuoteController.class.getDeclaredMethods())
.filter(method -> method.isAnnotationPresent(PreAuthorize.class))
.collect(Collectors.toMap(method -> method.getName(),
method -> method.getAnnotation(PreAuthorize.class).value()));
assertThat(authorities.get("page")).contains("platform:overseas-master-data:quote:list");
assertThat(authorities.get("detail")).contains("platform:overseas-master-data:quote:list");
assertThat(authorities.get("warehouseOptions")).contains("platform:overseas-master-data:quote:list");
assertThat(authorities.get("create")).contains("platform:overseas-master-data:quote:create");
assertThat(authorities.get("update")).contains("platform:overseas-master-data:quote:edit");
assertThat(authorities.get("status")).contains("platform:overseas-master-data:quote:status");
assertThat(authorities.get("export")).contains("platform:overseas-master-data:quote:export");
}
}
@@ -0,0 +1,56 @@
package com.baiyue.lastleg.masterdata.quote.service;
import com.baiyue.common.core.api.ApiResponse;
import com.baiyue.lastleg.masterdata.quote.client.DomesticPartnerWarehouseClient;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.Mock;
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import java.time.Clock;
import java.time.Duration;
import java.time.Instant;
import java.time.ZoneOffset;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.*;
@ExtendWith(MockitoExtension.class)
class PartnerWarehouseDirectoryTest {
@Mock private DomesticPartnerWarehouseClient client;
private PartnerWarehouseDirectory directory;
@BeforeEach
void setUp() {
directory = new PartnerWarehouseDirectory();
ReflectionTestUtils.setField(directory, "client", client);
ReflectionTestUtils.setField(directory, "internalToken", "internal-token");
ReflectionTestUtils.setField(directory, "ttl", Duration.ofMinutes(30));
ReflectionTestUtils.setField(directory, "clock", Clock.fixed(
Instant.parse("2026-08-20T00:00:00Z"), ZoneOffset.UTC));
}
@Test
void cachesDomesticOptionsForThirtyMinutesAndReturnsIdsAsStrings() {
when(client.activePartners("internal-token")).thenReturn(ApiResponse.success(List.of(
new DomesticPartnerWarehouseClient.Option(Long.valueOf("9007199254740993"),
"US-LAX", "洛杉矶合作仓", "US"))));
assertThat(directory.options()).singleElement().satisfies(option -> {
assertThat(option.warehouseId()).isEqualTo("9007199254740993");
assertThat(option.warehouseCode()).isEqualTo("US-LAX");
assertThat(option.warehouseName()).isEqualTo("洛杉矶合作仓");
assertThat(option.countryCode()).isEqualTo("US");
});
directory.options();
verify(client, times(1)).activePartners("internal-token");
ReflectionTestUtils.setField(directory, "clock", Clock.fixed(
Instant.parse("2026-08-20T00:30:01Z"), ZoneOffset.UTC));
directory.options();
verify(client, times(2)).activePartners("internal-token");
}
}