优化
This commit is contained in:
@@ -60,7 +60,7 @@ class PriceBookContractTest {
|
||||
void keepsPricingTaxModeSeparate() {
|
||||
assertThat(PriceBookStatus.values()).containsExactly(
|
||||
PriceBookStatus.PENDING_CONFIRMATION, PriceBookStatus.ACTIVE,
|
||||
PriceBookStatus.SUPERSEDED, PriceBookStatus.FAILED);
|
||||
PriceBookStatus.SUPERSEDED, PriceBookStatus.VOIDED, PriceBookStatus.FAILED);
|
||||
assertThat(PricingTaxMode.values()).containsExactly(PricingTaxMode.TAX_INCLUDED, PricingTaxMode.TAX_EXCLUDED);
|
||||
assertThat(PricingDestinationType.values()).containsExactly(PricingDestinationType.FBA, PricingDestinationType.OVERSEAS);
|
||||
assertThat(PriceBookDtos.ParsedRate.class.getRecordComponents())
|
||||
@@ -99,6 +99,7 @@ class PriceBookContractTest {
|
||||
.contains("/api/platform/v1/fba-pricing/carrier-rates/price-books:")
|
||||
.contains("/api/platform/v1/fba-pricing/carrier-rates/price-books/{versionId}:")
|
||||
.contains("/api/platform/v1/fba-pricing/carrier-rates/price-books/{versionId}/publish:")
|
||||
.contains("/api/platform/v1/fba-pricing/carrier-rates/price-books/{versionId}/void:")
|
||||
.contains("/api/merchant/v1/first-leg/pricing/channels:")
|
||||
.contains("/api/merchant/v1/first-leg/pricing/estimate:")
|
||||
.contains("PriceBookStatus")
|
||||
@@ -114,6 +115,8 @@ class PriceBookContractTest {
|
||||
.contains("PriceBookParseIssue")
|
||||
.contains("/api/platform/v1/fba-pricing/carrier-rates/price-books/{versionId}/source")
|
||||
.contains("确认并立即生效")
|
||||
.contains("PriceBookVoidRequest")
|
||||
.contains("VOIDED")
|
||||
.contains("SUPERSEDED");
|
||||
|
||||
String firstlegOpenapi = new ClassPathResource("openapi/firstleg-v1.yaml")
|
||||
|
||||
+39
-1
@@ -137,7 +137,30 @@ class PlatformPriceBookServiceTest {
|
||||
assertThat(Arrays.stream(PlatformPriceBookService.class.getDeclaredMethods())
|
||||
.filter(method -> java.lang.reflect.Modifier.isPublic(method.getModifiers()))
|
||||
.map(java.lang.reflect.Method::getName).toList())
|
||||
.containsOnly("list", "upload", "detail", "publish", "source");
|
||||
.containsOnly("list", "upload", "detail", "publish", "voidPending", "source");
|
||||
}
|
||||
|
||||
@Test
|
||||
void voidsPendingVersionAndRetainsReasonForAudit() {
|
||||
PriceBookVersionEntity pending = version(41L, PriceBookStatus.PENDING_CONFIRMATION);
|
||||
when(repository.findVersion(41L)).thenReturn(pending);
|
||||
org.mockito.Mockito.doAnswer(invocation -> {
|
||||
PriceBookVersionEntity value = invocation.getArgument(0);
|
||||
value.setStatus(PriceBookStatus.VOIDED.name());
|
||||
value.setVoidedBy(7L);
|
||||
value.setVoidReason(invocation.getArgument(3));
|
||||
return null;
|
||||
}).when(repository).voidPending(any(), any(), any(Long.class), any());
|
||||
when(repository.listChannels(41L)).thenReturn(List.of());
|
||||
when(repository.listRates(41L)).thenReturn(List.of());
|
||||
|
||||
var result = service.voidPending(41L, 7L, new PriceBookDtos.PriceBookVoidRequest(" 上传错误 "));
|
||||
|
||||
assertThat(result.version().status()).isEqualTo(PriceBookStatus.VOIDED);
|
||||
assertThat(result.version().voidedBy()).isEqualTo(7L);
|
||||
assertThat(result.version().voidReason()).isEqualTo("上传错误");
|
||||
verify(repository).lockPlatformVersions();
|
||||
verify(repository).voidPending(any(), any(), any(Long.class), org.mockito.ArgumentMatchers.eq("上传错误"));
|
||||
}
|
||||
|
||||
@Test
|
||||
@@ -284,6 +307,21 @@ class PlatformPriceBookServiceTest {
|
||||
verify(repository, never()).activate(any(), any(), any(Long.class));
|
||||
}
|
||||
|
||||
@Test
|
||||
void olderPendingVersionCannotReplaceNewerActiveVersion() {
|
||||
PriceBookVersionEntity pending = version(5L, PriceBookStatus.PENDING_CONFIRMATION);
|
||||
PriceBookVersionEntity active = version(8L, PriceBookStatus.ACTIVE);
|
||||
when(repository.findVersion(5L)).thenReturn(pending);
|
||||
when(repository.listActiveForUpdate()).thenReturn(List.of(active));
|
||||
|
||||
assertThatThrownBy(() -> service.publish(5L, 7L, confirmation("CN-YIWU-01", 501L)))
|
||||
.isInstanceOf(BizException.class)
|
||||
.hasMessageContaining("早于当前生效版本");
|
||||
|
||||
verify(repository).lockPlatformVersions();
|
||||
verify(repository, never()).activate(any(), any(), any(Long.class));
|
||||
}
|
||||
|
||||
private static PriceBookVersionEntity version(long id, PriceBookStatus status) {
|
||||
PriceBookVersionEntity value = new PriceBookVersionEntity();
|
||||
value.setId(id);
|
||||
|
||||
Reference in New Issue
Block a user