SiLeBAT/FSK-Lab

View on GitHub
de.bund.bfr.knime.fsklab.metadata.model.tests/src/metadata/swagger/GenericModelSheetImporterTest.java

Summary

Maintainability
A
3 hrs
Test Coverage
package metadata.swagger;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;

import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;

import org.apache.poi.ss.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Workbook;
import org.apache.poi.ss.usermodel.WorkbookFactory;
import org.junit.Test;
import org.threeten.bp.LocalDate;

import de.bund.bfr.metadata.swagger.GenericModel;
import de.bund.bfr.metadata.swagger.GenericModelDataBackground;
import de.bund.bfr.metadata.swagger.GenericModelGeneralInformation;
import de.bund.bfr.metadata.swagger.GenericModelModelMath;
import de.bund.bfr.metadata.swagger.GenericModelScope;

public class GenericModelSheetImporterTest {

    @SuppressWarnings("static-method")
    @Test
    public void test() throws Exception {
        Sheet sheet;
        try (InputStream stream = Files.newInputStream(Paths.get("files/annotation_v1.0.4.xlsx"));
                Workbook workbook = WorkbookFactory.create(stream)) {
            sheet = workbook.getSheet("Generic Metadata Schema");
        }

        GenericModel model = (GenericModel) new GenericModelSheetImporter().retrieveModel(sheet);
        test(model.getGeneralInformation());
        test(model.getScope());
        test(model.getDataBackground());
        test(model.getModelMath());
    }

    private static void test(GenericModelGeneralInformation information) throws Exception {
        assertEquals("Listeria Monocytogenes (DR of gQMRA)", information.getName());
        assertEquals("PUBLISHED SCIENTIFIC STUDIES", information.getSource());
        assertEquals("DR000001", information.getIdentifier());
        assertEquals(6, information.getAuthor().size());
        assertEquals(6, information.getCreator().size());
        assertEquals(LocalDate.of(2018, 3, 30), information.getCreationDate());
        assertNull(information.getModificationDate()); // Not set
        assertEquals("CC0", information.getRights());
        assertEquals("Open access", information.getAvailability());
        assertEquals("http://onlinelibrary.wiley.com/doi/10.2903/sp.efsa.2017.EN-1252/abstract", information.getUrl());
        assertEquals(".fskx", information.getFormat());
        assertEquals(3, information.getReference().size());
        assertEquals("English", information.getLanguage());
        assertEquals("FSK-Lab", information.getSoftware());
        assertEquals("R 3", information.getLanguageWrittenIn());
        assertNotNull(information.getModelCategory());
        assertEquals("Uncurated", information.getStatus());
        assertNull(information.getObjective()); // Not set
        assertNull(information.getDescription()); // Not set
        
        TestUtils.testFirstCreator(information.getCreator().get(0));
        TestUtils.testFirstAuthor(information.getAuthor().get(0));
        TestUtils.testFirstReference(information.getReference().get(0));
    }

    private static void test(GenericModelScope scope) {
        assertEquals(12, scope.getProduct().size());
        assertEquals(1, scope.getHazard().size());
        assertEquals(1, scope.getPopulationGroup().size());
        assertNull(scope.getGeneralComment());
        assertNull(scope.getTemporalInformation());
        // TODO: spatial information: String*
        
        TestUtils.testFirstProduct(scope.getProduct().get(0));
        TestUtils.testFirstHazard(scope.getHazard().get(0));
        TestUtils.testFirstPopulationGroup(scope.getPopulationGroup().get(0));
    }

    private static void test(GenericModelDataBackground background) {
        assertNotNull(background.getStudy());
        assertEquals(3, background.getStudySample().size());
        assertEquals(3, background.getDietaryAssessmentMethod().size());
        assertEquals(3, background.getLaboratory().size());
        assertEquals(3, background.getAssay().size());
        
        TestUtils.testFirstStudySample(background.getStudySample().get(0));
        TestUtils.testFirstAssay(background.getAssay().get(0));
    }

    private static void test(GenericModelModelMath math) {
        assertEquals(9, math.getParameter().size());
        assertEquals(1, math.getQualityMeasures().size());
        assertNull(math.getModelEquation());
        assertNull(math.getFittingProcedure());
        assertNull(math.getExposure());
        assertNull(math.getEvent());
        
        TestUtils.testFirstParameter(math.getParameter().get(0));
    }
}