优化
This commit is contained in:
+30
@@ -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");
|
||||
}
|
||||
}
|
||||
+56
@@ -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");
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user