Skip to content

Instantly share code, notes, and snippets.

@renato04
Last active March 9, 2021 12:08
Show Gist options
  • Save renato04/f11c8b8a09f71410e8dec2d3cd4000a3 to your computer and use it in GitHub Desktop.
Save renato04/f11c8b8a09f71410e8dec2d3cd4000a3 to your computer and use it in GitHub Desktop.
package example;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jayway.jsonpath.Configuration;
import com.jayway.jsonpath.Option;
import com.jayway.jsonpath.internal.DefaultsImpl;
import com.jayway.jsonpath.spi.json.JacksonJsonProvider;
import com.jayway.jsonpath.spi.json.JsonProvider;
import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider;
import com.jayway.jsonpath.spi.mapper.MappingProvider;
import org.apache.commons.io.input.CountingInputStream;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import java.io.ByteArrayInputStream;
import java.math.BigInteger;
import java.util.EnumSet;
import java.util.Set;
import static org.hamcrest.Matchers.is;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
/**
* Unit tests for the API
*/
@RunWith(SpringRunner.class)
@WebMvcTest(ExampleController.class)
public class ExampleControllerTest {
@Autowired
private MockMvc mockMvc;
// Reset to default configuration
@After
public void after(){
Configuration.setDefaults(DefaultsImpl.INSTANCE);
}
@Test
public void testBigDecimalWithConfig() throws Exception {
final ObjectMapper objectMapper = new ObjectMapper();
objectMapper.enable(DeserializationFeature.USE_BIG_DECIMAL_FOR_FLOATS); // default is Double
configJsonProvider(objectMapper);
this.mockMvc.perform(get("/test/bigdecimal"))
.andDo(print())
.andExpect(jsonPath("$.value", is(ExampleController.VALUE_BIG_DECIMAL)));
}
private void configJsonProvider(ObjectMapper objectMapper) {
Configuration.setDefaults(new Configuration.Defaults() {
private final JsonProvider jsonProvider = new JacksonJsonProvider(objectMapper);
private final MappingProvider mappingProvider = new JacksonMappingProvider(objectMapper);
@Override
public JsonProvider jsonProvider() {
return jsonProvider;
}
@Override
public MappingProvider mappingProvider() {
return mappingProvider;
}
@Override
public Set<Option> options() {
return EnumSet.noneOf(Option.class);
}
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment