package uk.ac.ox.zoo.seeg.abraid.mp.publicsite.validator;
import org.junit.Test;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseExtent;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.ValidatorDiseaseGroup;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests the DiseaseGroupForModelRunValidator class.
* Copyright (c) 2014 University of Oxford
*/
public class DiseaseGroupForModelRunValidatorTest {
@Test
public void diseaseGroupIsValid() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isNull();
}
@Test
public void publicNameIsMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setPublicName(null);
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("the public name is missing");
}
@Test
public void shortNameIsMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setShortName(" ");
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("the short name is missing");
}
@Test
public void abbreviationIsMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setAbbreviation("");
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("the abbreviation is missing");
}
@Test
public void globalOrTropicalIsMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setGlobal(null);
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("global/tropical is missing");
}
@Test
public void validatorDiseaseGroupIsMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setValidatorDiseaseGroup(null);
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("the validator disease group is missing");
}
@Test
public void diseaseExtentParametersAreMissing() {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setDiseaseExtentParameters(null);
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("the disease extent parameters are missing");
}
@Test
public void parameterMinValidationWeightingIsMissing() {
parameterIsMissing(new DiseaseExtent(new DiseaseGroup(), null, 36, 1, 2), "minimum validation weighting");
}
@Test
public void parameterMaximumMonthsAgoForHigherOccurrenceScoreIsMissing() {
parameterIsMissing(new DiseaseExtent(new DiseaseGroup(), 0.6, null, 1, 2), "maximum months ago for higher occurrence score");
}
@Test
public void parameterLowerOccurrenceScoreIsMissing() {
parameterIsMissing(new DiseaseExtent(new DiseaseGroup(), 0.6, 36, null, 2), "lower occurrence score");
}
@Test
public void parameterHigherOccurrenceScoreIsMissing() {
parameterIsMissing(new DiseaseExtent(new DiseaseGroup(), 0.6, 36, 1, null), "higher occurrence score");
}
private void parameterIsMissing(DiseaseExtent parameters, String missingParameterName) {
// Arrange
DiseaseGroup diseaseGroup = createDiseaseGroup();
diseaseGroup.setDiseaseExtentParameters(parameters);
DiseaseGroupForModelRunValidator validator = new DiseaseGroupForModelRunValidator(diseaseGroup);
// Act
String errorMessage = validator.validate();
// Assert
assertThat(errorMessage).isEqualTo("a disease extent parameter (" + missingParameterName + ") is missing");
}
private DiseaseGroup createDiseaseGroup() {
DiseaseGroup diseaseGroup = new DiseaseGroup(87);
diseaseGroup.setName("Test name");
diseaseGroup.setPublicName("Test public name");
diseaseGroup.setShortName("Test short name");
diseaseGroup.setAbbreviation("Test abbreviation");
diseaseGroup.setGlobal(false);
diseaseGroup.setValidatorDiseaseGroup(new ValidatorDiseaseGroup());
diseaseGroup.setDiseaseExtentParameters(new DiseaseExtent(new DiseaseGroup(), 0.6, 36, 1, 2));
return diseaseGroup;
}
}