package es.icarto.gvsig.navtableforms.domainvalidator;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import java.io.IOException;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.parsers.ParserConfigurationException;
import org.junit.Before;
import org.junit.Test;
import org.xml.sax.SAXException;
import es.icarto.gvsig.navtableforms.ormlite.ORMLite;
import es.icarto.gvsig.navtableforms.ormlite.XMLSAXParser;
import es.icarto.gvsig.navtableforms.ormlite.domainvalidator.rules.DateRule;
import es.icarto.gvsig.navtableforms.ormlite.domainvalidator.rules.DoublePositiveRule;
import es.icarto.gvsig.navtableforms.ormlite.domainvalidator.rules.MandatoryRule;
import es.icarto.gvsig.navtableforms.ormlite.domainvalidator.rules.ValidationRule;
public class ORMLiteAppDomainTests {
private ORMLite ormlite;
String xmlFile = "data-test/test-metadata.xml";
@Before
public void setUp() {
ormlite = new ORMLite(xmlFile);
}
@Test
public void isFileLoaded() {
assertTrue(ormlite.getAppDomain() != null);
}
@Test
public void isFileParsed() throws ParserConfigurationException,
SAXException, IOException {
XMLSAXParser p = new XMLSAXParser(xmlFile);
assertTrue(p.getAD() != null);
}
@Test
public void appDomainHasDomainValidators()
throws ParserConfigurationException, SAXException, IOException {
XMLSAXParser p = new XMLSAXParser(xmlFile);
assertTrue(5 == p.getAD().getDomainValidators().size());
}
@Test
public void hasFiveValidationsDefined() {
assertTrue(5 == ormlite.getAppDomain().getDomainValidators().size());
}
@Test
public void checkNumberOfValidations() {
assertFalse(!(5 == ormlite.getAppDomain().getDomainValidators().size()));
}
@Test
public void inventedFieldHasNoDomainValidator() {
assertTrue(ormlite.getAppDomain().getDomainValidatorForComponent("foo") == null);
}
@Test
public void fieldMyCodeHasDomainValidator() {
assertTrue(ormlite.getAppDomain().getDomainValidatorForComponent(
"my_code") != null);
}
@Test
public void fieldMyWidgetHasDependency() {
assertTrue(ormlite.getAppDomain().getDependencyValuesForComponent(
"my_widget") != null);
}
@Test
public void checkDependencyValuesOfMyWidget() {
Map<String, List<String>> conditions = ormlite.getAppDomain()
.getDependencyValuesForComponent("my_widget").getConditions();
assertTrue(conditions.keySet().size() == 1);
String component = conditions.keySet().toArray(new String[0])[0];
assertTrue(component.equalsIgnoreCase("other_widget"));
assertTrue(conditions.get(component).size() == 1);
String value = conditions.get(component).toArray(new String[0])[0];
assertTrue(value.equalsIgnoreCase("true"));
}
@Test
public void fieldMyCodeisNonEditable() {
assertTrue(ormlite.getAppDomain().isNonEditableComponent("my_code"));
}
@Test
public void fieldMyCodeHasRules() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_code").getRules() != null);
}
@Test
public void fieldMyCodeHasOneRule() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_code").getRules().size() == 1);
}
@Test
public void fieldMyCodeHasMandatoryRule() {
Set<ValidationRule> rules = ormlite.getAppDomain()
.getDomainValidatorForComponent("my_code").getRules();
boolean hasRule = false;
for (ValidationRule rule : rules) {
if (rule instanceof MandatoryRule) {
hasRule = true;
break;
}
}
assertTrue(hasRule);
}
@Test
public void fieldMyDoubleHasOneRule() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_double").getRules().size() == 1);
}
@Test
public void fieldMyDoubleHasDoubleRule() {
Set<ValidationRule> rules = ormlite.getAppDomain()
.getDomainValidatorForComponent("my_double").getRules();
boolean hasRule = false;
for (ValidationRule rule : rules) {
if (rule instanceof DoublePositiveRule) {
hasRule = true;
break;
}
}
assertTrue(hasRule);
}
@Test
public void fieldMyDateHasOneRule() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_date").getRules().size() == 1);
}
@Test
public void fieldMyDateHasDateRule() {
Set<ValidationRule> rules = ormlite.getAppDomain()
.getDomainValidatorForComponent("my_date").getRules();
boolean hasRule = false;
for (ValidationRule rule : rules) {
if (rule instanceof DateRule) {
hasRule = true;
break;
}
}
assertTrue(hasRule);
}
@Test
public void fieldMyDoubleMandatoryHasTwoRules() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_double_mandatory")
.getRules().size() == 2);
}
@Test
public void fieldMyDoubleMandatoryHasDoubleAndMandatoryRules() {
Set<ValidationRule> rules = ormlite.getAppDomain()
.getDomainValidatorForComponent("my_double_mandatory")
.getRules();
boolean hasRuleMandatory = false;
for (ValidationRule rule : rules) {
if (rule instanceof MandatoryRule) {
hasRuleMandatory = true;
break;
}
}
assertTrue(hasRuleMandatory);
boolean hasRuleDouble = false;
for (ValidationRule rule : rules) {
if (rule instanceof DoublePositiveRule) {
hasRuleDouble = true;
break;
}
}
assertTrue(hasRuleDouble);
}
@Test
public void fieldMyDateMandatoryHasTwoRules() {
assertTrue(ormlite.getAppDomain()
.getDomainValidatorForComponent("my_date_mandatory").getRules()
.size() == 2);
}
@Test
public void fieldMyDateMandatoryHasDoubleAndMandatoryRules() {
Set<ValidationRule> rules = ormlite.getAppDomain()
.getDomainValidatorForComponent("my_date_mandatory").getRules();
boolean hasRuleMandatory = false;
for (ValidationRule rule : rules) {
if (rule instanceof MandatoryRule) {
hasRuleMandatory = true;
break;
}
}
assertTrue(hasRuleMandatory);
boolean hasRuleDouble = false;
for (ValidationRule rule : rules) {
if (rule instanceof DateRule) {
hasRuleDouble = true;
break;
}
}
assertTrue(hasRuleDouble);
}
}