package test.com.uaihebert.uaimockserver.validation.body; import com.uaihebert.uaimockserver.validator.body.UaiJSONComparator; import com.uaihebert.uaimockserver.validator.body.UaiJSONCompareWrapper; import org.json.JSONException; import org.junit.Test; import org.skyscreamer.jsonassert.FieldComparisonFailure; import org.skyscreamer.jsonassert.JSONCompareMode; import org.skyscreamer.jsonassert.JSONCompareResult; import org.skyscreamer.jsonassert.comparator.JSONComparator; import java.util.List; import static junit.framework.Assert.fail; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class UaiJSONComparatorErrorTest { private static final JSONComparator STRICT_COMPARATOR = new UaiJSONComparator(JSONCompareMode.STRICT); @Test public void isNotFailingWhenThereIsNoValue() throws JSONException { final JSONCompareResult jsonCompareResult = UaiJSONCompareWrapper.compareJSON("{}", "{}", STRICT_COMPARATOR); assertFalse("should not fail", jsonCompareResult.failed()); } @Test public void isListingWhenAttributeIsNotPresent() { final JSONCompareResult jsonCompareResult = UaiJSONCompareWrapper.compareJSON("{id:1}", "{}", STRICT_COMPARATOR); final List<FieldComparisonFailure> failureList = jsonCompareResult.getFieldFailures(); assertFalse("should list a missing field as field failure", failureList.isEmpty()); final FieldComparisonFailure failure = failureList.get(0); assertEquals("the id field should be listed", "id", failure.getField()); } @Test public void isListingMoreThanOneNotPresentAttribute() { final JSONCompareResult jsonCompareResult = UaiJSONCompareWrapper.compareJSON("{id:1, age:1, aNumber:1}", "{name:\"JC\"}", STRICT_COMPARATOR); final List<FieldComparisonFailure> failureList = jsonCompareResult.getFieldFailures(); assertTrue("all the missing fields should be present", failureList.size() > 1); } @Test public void isThrowingRuntimeWhenSomethingWrongsHappen() { try { final String badFormattedJSON = ""; UaiJSONCompareWrapper.compareJSON("{id:1, age:1, aNumber:1}", badFormattedJSON, STRICT_COMPARATOR); fail("should have an error"); } catch (final IllegalStateException ex) { // its the expected error } } @Test public void isListingErrorWithWrongValueInAttribute() { final JSONCompareResult jsonCompareResult = UaiJSONCompareWrapper.compareJSON("{id:1}", "{id:2}", STRICT_COMPARATOR); final List<FieldComparisonFailure> failureList = jsonCompareResult.getFieldFailures(); assertTrue("all the missing fields should be present", failureList.size() == 1); } @Test public void isComparingWithLine() { final String jsonWithoutLines = "{id:1,age:33}"; final String jsonWithLines = "" + "{" + " id:1," + " age:33" + "}"; final JSONCompareResult jsonCompareResult = UaiJSONCompareWrapper.compareJSON(jsonWithoutLines, jsonWithLines, STRICT_COMPARATOR); final List<FieldComparisonFailure> failureList = jsonCompareResult.getFieldFailures(); assertTrue("Should not have any error", failureList.isEmpty()); } }