Merge branch '1.5.x'

This commit is contained in:
Madhura Bhave
2017-04-17 11:42:02 -07:00
7 changed files with 261 additions and 5 deletions

View File

@@ -64,3 +64,4 @@ public class ExampleObject {
}
}

View File

@@ -0,0 +1,75 @@
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.test.json;
import com.fasterxml.jackson.annotation.JsonView;
import org.springframework.util.ObjectUtils;
/**
* Example object used for serialization/deserialization with view.
*
* @author Madhura Bhave
*/
public class ExampleObjectWithView {
@JsonView(TestView.class)
private String name;
private int age;
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return this.age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public int hashCode() {
return 0;
}
@Override
public boolean equals(Object obj) {
if (obj == null || obj.getClass() != getClass()) {
return false;
}
ExampleObjectWithView other = (ExampleObjectWithView) obj;
return ObjectUtils.nullSafeEquals(this.name, other.name)
&& ObjectUtils.nullSafeEquals(this.age, other.age);
}
@Override
public String toString() {
return this.name + " " + this.age;
}
static class TestView {
}
}

View File

@@ -16,14 +16,19 @@
package org.springframework.boot.test.json;
import java.io.Reader;
import java.io.StringReader;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import com.fasterxml.jackson.databind.MapperFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.junit.Before;
import org.junit.Test;
import org.springframework.core.io.ByteArrayResource;
import static org.assertj.core.api.Assertions.assertThat;
/**
@@ -33,18 +38,27 @@ import static org.assertj.core.api.Assertions.assertThat;
*/
public class JacksonTesterIntegrationTests {
private JacksonTester<ExampleObject> simpleJson;
private JacksonTester<ExampleObjectWithView> jsonWithView;
private JacksonTester<List<ExampleObject>> listJson;
private JacksonTester<Map<String, Integer>> mapJson;
private ObjectMapper objectMapper;
private static final String JSON = "{\"name\":\"Spring\",\"age\":123}";
@Before
public void setup() {
JacksonTester.initFields(this, new ObjectMapper());
this.objectMapper = new ObjectMapper();
JacksonTester.initFields(this, this.objectMapper);
}
@Test
public void typicalListTest() throws Exception {
String example = "[{\"name\":\"Spring\",\"age\":123}]";
String example = "[" + JSON + "]";
assertThat(this.listJson.parse(example)).asList().hasSize(1);
assertThat(this.listJson.parse(example).getObject().get(0).getName())
.isEqualTo("Spring");
@@ -59,4 +73,39 @@ public class JacksonTesterIntegrationTests {
.isEqualTo(1);
}
@Test
public void writeWithView() throws Exception {
this.objectMapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
ExampleObjectWithView object = new ExampleObjectWithView();
object.setName("Spring");
object.setAge(123);
JsonContent<ExampleObjectWithView> content = this.jsonWithView.forView(
ExampleObjectWithView.TestView.class).write(object);
assertThat(content).extractingJsonPathStringValue("@.name")
.isEqualTo("Spring");
assertThat(content).doesNotHaveJsonPathValue("age");
}
@Test
public void readWithResourceAndView() throws Exception {
this.objectMapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
ByteArrayResource resource = new ByteArrayResource(JSON.getBytes());
ObjectContent<ExampleObjectWithView> content = this.jsonWithView.forView(
ExampleObjectWithView.TestView.class).read(resource);
assertThat(content.getObject().getName())
.isEqualTo("Spring");
assertThat(content.getObject().getAge()).isEqualTo(0);
}
@Test
public void readWithReaderAndView() throws Exception {
this.objectMapper.disable(MapperFeature.DEFAULT_VIEW_INCLUSION);
Reader reader = new StringReader(JSON);
ObjectContent<ExampleObjectWithView> content = this.jsonWithView.forView(
ExampleObjectWithView.TestView.class).read(reader);
assertThat(content.getObject().getName())
.isEqualTo("Spring");
assertThat(content.getObject().getAge()).isEqualTo(0);
}
}