package uk.ac.ox.zoo.seeg.abraid.mp.common.dao;
import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;
import uk.ac.ox.zoo.seeg.abraid.mp.common.AbstractCommonSpringIntegrationTests;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.CovariateFile;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.CovariateSubFile;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.CovariateValueBin;
import uk.ac.ox.zoo.seeg.abraid.mp.common.domain.DiseaseGroup;
import java.util.Arrays;
import java.util.Collection;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
/**
* Tests for the CovariateFileDao class.
* Copyright (c) 2014 University of Oxford
*/
public class CovariateFileDaoTest extends AbstractCommonSpringIntegrationTests {
@Autowired
private CovariateFileDao covariateFileDao;
@Autowired
private DiseaseGroupDao diseaseGroupDao;
@Test
public void getAllReturnsAll() {
assertThat(covariateFileDao.getAll()).hasSize(22);
}
@Test
public void getCovariateFilesByDiseaseGroupReturnsCorrectSet() {
assertThat(covariateFileDao.getCovariateFilesByDiseaseGroup(diseaseGroupDao.getById(87))).hasSize(8);
}
@Test
public void getCovariateFilesByDiseaseGroupExcludesHidden() {
CovariateFile file = covariateFileDao.getById(1);
file.setHide(true);
covariateFileDao.save(file);
assertThat(covariateFileDao.getCovariateFilesByDiseaseGroup(diseaseGroupDao.getById(87))).hasSize(7);
}
@Test
public void saveAndReload() {
// Arrange
CovariateFile covariateFile = new CovariateFile("NAME", true, true, "INFO");
Collection<DiseaseGroup> enabledDiseaseGroups = Arrays.asList(diseaseGroupDao.getById(87), diseaseGroupDao.getById(60));
Collection<CovariateValueBin> bins = Arrays.asList(new CovariateValueBin(covariateFile, 0, 5, 10), new CovariateValueBin(covariateFile, 5, 10, 1), new CovariateValueBin(covariateFile, 10, 10, 10));
List<CovariateSubFile> subFiles = Arrays.asList(new CovariateSubFile(covariateFile, "QUALIFIER", "FILE"));
covariateFile.setFiles(subFiles);
covariateFile.setEnabledDiseaseGroups(enabledDiseaseGroups);
covariateFile.setCovariateValueHistogramData(bins);
// Act
covariateFileDao.save(covariateFile);
// Assert
Integer id = covariateFile.getId();
flushAndClear();
covariateFile = covariateFileDao.getById(id);
assertThat(covariateFile.getName()).isEqualTo("NAME");
assertThat(covariateFile.getInfo()).isEqualTo("INFO");
assertThat(covariateFile.getFiles()).hasSize(1);
CovariateSubFile subfile = covariateFile.getFiles().get(0);
assertThat(subfile.getFile()).isEqualTo("FILE");
assertThat(subfile.getQualifier()).isEqualTo("QUALIFIER");
assertThat(covariateFile.getHide()).isEqualTo(true);
assertThat(covariateFile.getEnabledDiseaseGroups()).containsAll(enabledDiseaseGroups);
assertThat(covariateFile.getEnabledDiseaseGroups()).hasSameSizeAs(enabledDiseaseGroups);
assertThat(covariateFile.getCovariateValueHistogramData()).hasSameSizeAs(bins);
}
}