提交
This commit is contained in:
+71
@@ -0,0 +1,71 @@
|
||||
package com.baiyue.lastleg.delivery;
|
||||
|
||||
import com.baiyue.common.web.LongIdJacksonConfiguration;
|
||||
import com.baiyue.lastleg.delivery.dto.DeliveryRequests;
|
||||
import com.baiyue.lastleg.delivery.dto.DeliveryResponses;
|
||||
import com.fasterxml.jackson.databind.JsonNode;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
import org.junit.jupiter.api.DisplayName;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.autoconfigure.AutoConfigurations;
|
||||
import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration;
|
||||
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
|
||||
@DisplayName("派送单长整型 ID JSON 契约")
|
||||
class DeliveryLongIdJsonContractTest {
|
||||
|
||||
private static final long DELIVERY_ID = 19_000_000_000_000_001L;
|
||||
private static final long FEE_ID = 19_000_000_000_000_002L;
|
||||
private static final long OPERATION_ID = 19_000_000_000_000_003L;
|
||||
|
||||
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
|
||||
.withConfiguration(AutoConfigurations.of(
|
||||
JacksonAutoConfiguration.class, LongIdJacksonConfiguration.class));
|
||||
|
||||
@Test
|
||||
void deliveryResponseIdsShouldBeSerializedAsJsonStrings() {
|
||||
contextRunner.run(context -> {
|
||||
ObjectMapper objectMapper = context.getBean(ObjectMapper.class);
|
||||
DeliveryResponses.DeliveryDetail detail = new DeliveryResponses.DeliveryDetail(
|
||||
deliveryRow(),
|
||||
List.of(),
|
||||
List.of(new DeliveryResponses.DeliveryFeeRow(
|
||||
FEE_ID, "RECEIVABLE", "DELIVERY_FEE", "USD", null, null)),
|
||||
List.of(new DeliveryResponses.DeliveryOperationRow(
|
||||
OPERATION_ID, null, "CREATED", "tester", "success")));
|
||||
|
||||
JsonNode json = objectMapper.readTree(objectMapper.writeValueAsString(detail));
|
||||
|
||||
assertThat(json.at("/order/id").isTextual()).isTrue();
|
||||
assertThat(json.at("/order/id").textValue()).isEqualTo(Long.toString(DELIVERY_ID));
|
||||
assertThat(json.at("/fees/0/id").textValue()).isEqualTo(Long.toString(FEE_ID));
|
||||
assertThat(json.at("/operations/0/id").textValue()).isEqualTo(Long.toString(OPERATION_ID));
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
void quotedRequestIdShouldBeDeserializedToLong() {
|
||||
contextRunner.run(context -> {
|
||||
ObjectMapper objectMapper = context.getBean(ObjectMapper.class);
|
||||
|
||||
DeliveryRequests.OneClickItem item = objectMapper.readValue(
|
||||
"{\"inventoryPositionId\":\"19000000000000001\",\"packages\":\"2\",\"sku\":\"SKU-1\"}",
|
||||
DeliveryRequests.OneClickItem.class);
|
||||
|
||||
assertThat(item.inventoryPositionId()).isEqualTo(DELIVERY_ID);
|
||||
assertThat(item.packages()).isEqualTo(2L);
|
||||
});
|
||||
}
|
||||
|
||||
private DeliveryResponses.DeliveryRow deliveryRow() {
|
||||
return new DeliveryResponses.DeliveryRow(
|
||||
DELIVERY_ID,
|
||||
null, null, "PS-1", null, null, null, null, "CREATED", null,
|
||||
null, null, null, null, null, null, null, null, null, null, null,
|
||||
0, 0, null, null, null, null, null, null, null, null);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user