1
package by.andd3dfx.helper;
3
import static org.hamcrest.CoreMatchers.is;
4
import static org.hamcrest.MatcherAssert.assertThat;
6
import by.andd3dfx.dto.MethodCallRecord;
7
import com.fasterxml.jackson.databind.ObjectMapper;
8
import java.time.LocalDateTime;
9
import java.util.HashMap;
11
import org.junit.jupiter.api.BeforeEach;
12
import org.junit.jupiter.api.Test;
16
private JsonHelper jsonHelper;
20
jsonHelper = new JsonHelper(new ObjectMapper());
24
public void objectToString() {
25
final MethodCallRecord record = new MethodCallRecord();
26
record.setName("Name");
27
record.setArgs(new HashMap<String, Object>() {{
29
put("param2", "Some string");
31
record.setResult("Result");
32
record.setTimestamp(LocalDateTime.parse("2007-12-03T10:15:30"));
33
record.setIsSucceed(true);
35
String resultJsonString = jsonHelper.objectToString(record);
37
assertThat(resultJsonString,
38
is("{\"name\":\"Name\",\"args\":{\"param1\":35,\"param2\":\"Some string\"},\"result\":\"Result\",\"timestamp\":\"2007-12-03T10:15:30Z\",\"isSucceed\":true}"));
42
public void jsonStringToMap() {
43
Map<String, Object> resultMap = jsonHelper.jsonStringToMap("{\"param1\":35,\"param2\":\"Some string\"}");
45
Map<String, Object> expectedMap = new HashMap<String, Object>() {{
47
put("param2", "Some string");
49
checkAreMapsEqual(resultMap, expectedMap);
53
public void jsonStringToDefiniteType() {
54
String jsonString = "{\"name\":\"Name\",\"args\":{\"param1\":35,\"param2\":\"Some string\"},\"result\":\"Result\",\"timestamp\":\"2007-12-03T10:15:30Z\"}";
55
String className = MethodCallRecord.class.getName();
56
Map<String, Object> expectedMap = new HashMap<String, Object>() {{
58
put("param2", "Some string");
61
Object resultObject = jsonHelper.jsonStringToDefiniteType(jsonString, className);
63
MethodCallRecord methodCallRecord = (MethodCallRecord) resultObject;
64
assertThat(methodCallRecord.getName(), is("Name"));
65
checkAreMapsEqual(methodCallRecord.getArgs(), expectedMap);
66
assertThat(methodCallRecord.getResult(), is("Result"));
67
assertThat(methodCallRecord.getTimestamp(), is(LocalDateTime.parse("2007-12-03T10:15:30")));
70
private void checkAreMapsEqual(Map<String, Object> map1, Map<String, Object> map2) {
71
assertThat(map1.keySet().equals(map2.keySet()), is(true));
72
map1.keySet().stream().forEach(key -> {
73
assertThat(map1.get(key), is(map2.get(key)));