package io.dropwizard.jackson;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Test;
import org.mockito.Mockito;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import static org.assertj.core.api.Assertions.assertThat;
public class JacksonTest {
@Test
public void objectMapperUsesGivenCustomJsonFactory() {
JsonFactory factory = Mockito.mock(JsonFactory.class);
ObjectMapper mapper = Jackson.newObjectMapper(factory);
assertThat(mapper.getFactory()).isSameAs(factory);
}
@Test
public void objectMapperCanHandleNullInsteadOfCustomJsonFactory() {
ObjectMapper mapper = Jackson.newObjectMapper(null);
assertThat(mapper.getFactory()).isNotNull();
}
@Test
public void objectMapperCanDeserializeJdk7Types() throws IOException {
final LogMetadata metadata = Jackson.newObjectMapper()
.readValue("{\"path\": \"/var/log/app/server.log\"}", LogMetadata.class);
assertThat(metadata).isNotNull();
assertThat(metadata.path).isEqualTo(Paths.get("/var/log/app/server.log"));
}
@Test
public void objectMapperSerializesNullValues() throws IOException {
final ObjectMapper mapper = Jackson.newObjectMapper();
final Issue1627 pojo = new Issue1627(null, null);
final String json = "{\"string\":null,\"uuid\":null}";
assertThat(mapper.writeValueAsString(pojo)).isEqualTo(json);
}
static class LogMetadata {
public Path path;
}
}