package org.mafagafogigante.dungeon.io;
import org.mafagafogigante.dungeon.schema.JsonRule;
import org.mafagafogigante.dungeon.schema.rules.JsonRuleFactory;
import com.eclipsesource.json.JsonObject;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
public class WikiJsonFileTest extends ResourcesTypeTest {
private static final String TITLE_FIELD = "title";
private static final String CONTENT_FIELD = "content";
private static final String SEE_ALSO_FIELD = "seeAlso";
private static final String ARTICLES_FIELD = "articles";
private static final String WIKI_JSON_FILE_NAME = "wiki.json";
@Test
public void testIsFileHasValidStructure() {
JsonRule variableStringArrayRule = JsonRuleFactory.makeVariableArrayRule(JsonRuleFactory.makeStringRule());
JsonRule seeAlsoOptionalRule = JsonRuleFactory.makeOptionalRule(variableStringArrayRule);
JsonRule articleRuleObject = getArticleRuleObject(seeAlsoOptionalRule);
JsonRule wikiFileRuleObject = getWikiFileRuleObject(articleRuleObject);
JsonObject wikiFileJsonObject = getJsonObjectByJsonFile(WIKI_JSON_FILE_NAME);
wikiFileRuleObject.validate(wikiFileJsonObject);
}
private JsonRule getWikiFileRuleObject(JsonRule articleRuleObject) {
Map<String, JsonRule> wikiFileRules = new HashMap<>();
wikiFileRules.put(ARTICLES_FIELD, JsonRuleFactory.makeVariableArrayRule(articleRuleObject));
return JsonRuleFactory.makeObjectRule(wikiFileRules);
}
private JsonRule getArticleRuleObject(JsonRule seeAlsoJsonRule) {
Map<String, JsonRule> articleRules = new HashMap<>();
JsonRule stringRule = JsonRuleFactory.makeStringRule();
articleRules.put(TITLE_FIELD, stringRule);
articleRules.put(CONTENT_FIELD, stringRule);
articleRules.put(SEE_ALSO_FIELD, seeAlsoJsonRule);
return JsonRuleFactory.makeObjectRule(articleRules);
}
}