package org.mafagafogigante.dungeon.schema.rules; import org.mafagafogigante.dungeon.schema.JsonRule; import com.eclipsesource.json.Json; import com.eclipsesource.json.JsonObject; import com.eclipsesource.json.JsonValue; import org.junit.Test; import java.util.HashMap; import java.util.Map; public class ObjectJsonRuleTest { @Test public void shouldPassObjectWithValidAttributes() { JsonObject object = new JsonObject(); object.add("favoriteInteger", 10); object.add("count", 1000); object.add("optionalInteger", 10); Map<String, JsonRule> rules = new HashMap<>(); rules.put("favoriteInteger", new IntegerJsonRule()); rules.put("count", new BoundIntegerJsonRule(0, 1000)); rules.put("optionalInteger", new OptionalJsonRule(new IntegerJsonRule())); JsonRule rule = new ObjectJsonRule(rules); rule.validate(object); } @Test(expected = IllegalArgumentException.class) public void shouldFailOnNonObjectValue() { JsonValue value = Json.value(true); Map<String, JsonRule> rules = new HashMap<>(); JsonRule rule = new ObjectJsonRule(rules); rule.validate(value); } @Test(expected = IllegalArgumentException.class) public void shouldFailOnObjectWithInvalidAttributes() { JsonObject object = new JsonObject(); object.add("id", "john"); Map<String, JsonRule> rules = new HashMap<>(); rules.put("id", new UppercaseStringJsonRule()); JsonRule rule = new ObjectJsonRule(rules); rule.validate(object); } }