com.yahoo.test.json.JsonTestHelper Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testutil Show documentation
Show all versions of testutil Show documentation
Library of useful Hamcrest matchers.
// Copyright 2017 Yahoo Holdings. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
package com.yahoo.test.json;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.base.Joiner;
import org.hamcrest.MatcherAssert;
import java.io.UncheckedIOException;
import static uk.co.datumedge.hamcrest.json.SameJSONAs.sameJSONAs;
/**
* @author Vegard Sjonfjell
*/
public class JsonTestHelper {
private static final ObjectMapper mapper = new ObjectMapper();
/**
* Convenience method to input JSON without escaping double quotes and newlines
* Each parameter represents a line of JSON encoded data
* The lines are joined with newline and single quotes are replaced with double quotes
*/
public static String inputJson(String... lines) {
return Joiner.on("\n").join(lines).replaceAll("'", "\"");
}
/** Structurally compare two JSON encoded strings */
public static void assertJsonEquals(String inputJson, String expectedJson) {
MatcherAssert.assertThat(inputJson, sameJSONAs(expectedJson));
}
/** Structurally compare a {@link JsonNode} and a JSON string. */
public static void assertJsonEquals(JsonNode left, String rightJson) {
try {
String leftJson = mapper.writeValueAsString(left);
assertJsonEquals(leftJson, rightJson);
} catch (JsonProcessingException e) {
throw new UncheckedIOException(e);
}
}
/** Structurally compare two {@link JsonNode}s. */
public static void assertJsonEquals(JsonNode left, JsonNode right) {
try {
String leftJson = mapper.writeValueAsString(left);
String rightJson = mapper.writeValueAsString(right);
assertJsonEquals(leftJson, rightJson);
} catch (JsonProcessingException e) {
throw new UncheckedIOException(e);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy