44 lines
2.2 KiB
Java
44 lines
2.2 KiB
Java
package com.baiyue.common.web;
|
|
|
|
import com.baiyue.common.core.api.ApiResponse;
|
|
import com.baiyue.common.core.api.ResultCode;
|
|
import com.fasterxml.jackson.databind.JsonNode;
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
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.Map;
|
|
|
|
import static org.assertj.core.api.Assertions.assertThat;
|
|
|
|
class ApiResponseSerializationTest {
|
|
@Test
|
|
void preservesEnvelopeDataUnderNonNullConfiguration() {
|
|
new ApplicationContextRunner()
|
|
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class))
|
|
.withPropertyValues("spring.jackson.default-property-inclusion=non_null")
|
|
.run(context -> {
|
|
ObjectMapper mapper = context.getBean(ObjectMapper.class);
|
|
JsonNode success = mapper.readTree(mapper.writeValueAsString(ApiResponse.success(null)));
|
|
assertThat(success.path("code").asText()).isEqualTo("200");
|
|
assertThat(success.has("data")).isTrue();
|
|
assertThat(success.get("data").isNull()).isTrue();
|
|
assertThat(success.has("requestId")).isFalse();
|
|
|
|
JsonNode failure = mapper.readTree(mapper.writeValueAsString(
|
|
ApiResponse.failure(ResultCode.CONFLICT, "conflict", "request-1", "trace-1")));
|
|
assertThat(failure.path("code").asText()).isEqualTo("A0409");
|
|
assertThat(failure.has("data")).isTrue();
|
|
assertThat(failure.get("data").isNull()).isTrue();
|
|
assertThat(failure.path("requestId").asText()).isEqualTo("request-1");
|
|
assertThat(failure.path("traceId").asText()).isEqualTo("trace-1");
|
|
|
|
JsonNode populated = mapper.readTree(mapper.writeValueAsString(
|
|
ApiResponse.success(Map.of("status", "SUBMITTED"))));
|
|
assertThat(populated.path("data").path("status").asText()).isEqualTo("SUBMITTED");
|
|
});
|
|
}
|
|
}
|