package com.jayway.jsonpath.old.internal; import com.jayway.jsonpath.Configuration; import com.jayway.jsonpath.JsonPath; import com.jayway.jsonpath.Option; import com.jayway.jsonpath.PathNotFoundException; import org.junit.Test; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.List; import static junit.framework.Assert.assertNull; import static org.assertj.core.api.Assertions.assertThat; public class PropertyPathTokenTest { private static final Logger logger = LoggerFactory.getLogger(PropertyPathTokenTest.class); private String SIMPLE_MAP = "{\n" + " \"foo\" : \"foo-val\",\n" + " \"bar\" : \"bar-val\",\n" + " \"baz\" : {\"baz-child\" : \"baz-child-val\"}\n" + "}"; private String SIMPLE_ARRAY = "[" + "{\n" + " \"foo\" : \"foo-val-0\",\n" + " \"bar\" : \"bar-val-0\",\n" + " \"baz\" : {\"baz-child\" : \"baz-child-val\"}\n" + "}," + "{\n" + " \"foo\" : \"foo-val-1\",\n" + " \"bar\" : \"bar-val-1\",\n" + " \"baz\" : {\"baz-child\" : \"baz-child-val\"}\n" + "}" + "]"; @Test public void property_not_found() { //String result = JsonPath.read(SIMPLE_MAP, "$.not-found"); //assertThat(result).isNull(); Configuration configuration = Configuration.builder().options(Option.SUPPRESS_EXCEPTIONS).build(); String json = "{\"a\":{\"b\":1,\"c\":2}}"; assertNull(JsonPath.parse(SIMPLE_MAP, configuration).read("$.not-found")); } @Test(expected = PathNotFoundException.class) public void property_not_found_deep() { String result = JsonPath.read(SIMPLE_MAP, "$.foo.not-found"); assertThat(result).isNull(); } @Test(expected = PathNotFoundException.class) public void property_not_found_option_throw() { //String result = JsonPath.using(Configuration.defaultConfiguration().setOptions(Option.THROW_ON_MISSING_PROPERTY)).parse(SIMPLE_MAP).read("$.not-found"); String result = JsonPath.using(Configuration.defaultConfiguration()).parse(SIMPLE_MAP).read("$.not-found"); assertThat(result).isNull(); } @Test public void map_value_can_be_read_from_map() { String result = JsonPath.read(SIMPLE_MAP, "$.foo"); assertThat(result).isEqualTo("foo-val"); } @Test public void map_value_can_be_read_from_array() { List<String> result = JsonPath.read(SIMPLE_ARRAY, "$[*].foo"); assertThat(result).containsOnly("foo-val-0", "foo-val-1"); } @Test public void map_value_can_be_read_from_child_map() { String result = JsonPath.read(SIMPLE_MAP, "$.baz.baz-child"); assertThat(result).isEqualTo("baz-child-val"); } }