package eu.scape_project.planning.xml;
import java.io.InputStream;
import java.util.List;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import eu.scape_project.planning.model.DigitalObject;
import eu.scape_project.planning.model.ExecutablePlanDefinition;
import eu.scape_project.planning.model.Plan;
import eu.scape_project.planning.model.PlanProperties;
import eu.scape_project.planning.model.PlanState;
import eu.scape_project.planning.model.PlatoException;
public class PlanParserTest {
@Before
public void setUp() {
}
@After
public void tearDown() {
}
@Test
public void importProjectsMinimalMainOjects() throws PlatoException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/PlanParserTest/PlanParserTest-PLAN_VALIDATED-minimal.xml");
List<Plan> plans = parser.importProjects(in);
Assert.assertTrue(plans.size() == 1);
Plan plan = plans.get(0);
Assert.assertNotNull(plan.getPlanProperties());
Assert.assertNotNull(plan.getSampleRecordsDefinition());
Assert.assertNotNull(plan.getProjectBasis());
Assert.assertNotNull(plan.getRequirementsDefinition());
Assert.assertNotNull(plan.getTree());
Assert.assertNotNull(plan.getAlternativesDefinition());
Assert.assertNotNull(plan.getEvaluation());
Assert.assertNotNull(plan.getTransformation());
Assert.assertNotNull(plan.getImportanceWeighting());
Assert.assertNotNull(plan.getRecommendation());
Assert.assertNotNull(plan.getDecision());
Assert.assertNotNull(plan.getExecutablePlanDefinition());
Assert.assertNotNull(plan.getPreservationActionPlan());
Assert.assertNotNull(plan.getPlanDefinition());
Assert.assertNotNull(plan.getChangeLog());
Assert.assertTrue(plan.getChangeLog().getCreatedBy().equals("test1"));
}
@Test
public void importProjectsMinimalPlanProperties() throws PlatoException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/PlanParserTest/PlanParserTest-PLAN_VALIDATED-minimal.xml");
List<Plan> plans = parser.importProjects(in);
Assert.assertTrue(plans.size() == 1);
Plan plan = plans.get(0);
PlanProperties pp = plan.getPlanProperties();
Assert.assertTrue("PlanParser Test - minimal".equals(pp.getName()));
Assert.assertTrue("Test".equals(pp.getDescription()));
Assert.assertTrue("Test1 Test1".equals(pp.getAuthor()));
Assert.assertTrue("TUW".equals(pp.getOrganization()));
Assert.assertTrue(pp.isPrivateProject());
Assert.assertFalse(pp.isReportPublic());
Assert.assertTrue(pp.getState() == PlanState.PLAN_VALIDATED);
Assert.assertTrue("test1".equals(pp.getOwner()));
Assert.assertNotNull(pp.getReportUpload());
Assert.assertTrue("".equals(pp.getOpenedByUser()));
Assert.assertNotNull(pp.getChangeLog());
Assert.assertTrue("test1".equals(pp.getChangeLog().getCreatedBy()));
}
@Test
public void importProjectsProfileSamplesPAPExecutablePlanDefinition() throws PlatoException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/PlanParserTest/PlanParserTest-PLAN_VALIDATED-ProfileSamplesPAP.xml");
List<Plan> plans = parser.importProjects(in);
Assert.assertTrue(plans.size() == 1);
Plan plan = plans.get(0);
ExecutablePlanDefinition ex = plan.getExecutablePlanDefinition();
Assert.assertNull(ex.getObjectPath());
Assert.assertTrue("".equals(ex.getToolParameters()));
Assert.assertTrue("".equals(ex.getTriggersConditions()));
Assert.assertTrue("".equals(ex.getValidateQA()));
Assert.assertNull(ex.getExecutablePlan());
DigitalObject t2flow = ex.getT2flowExecutablePlan();
Assert.assertNull(t2flow.getPid());
Assert.assertTrue("Create_tmp_file_and_convert_by_target_extension.t2flow".equals(t2flow.getFullname()));
Assert.assertTrue("application/vnd.taverna.t2flow+xml".equals(t2flow.getContentType()));
Assert.assertNull(t2flow.getJhoveXMLString());
Assert.assertNull(t2flow.getFitsXMLString());
Assert.assertNull(t2flow.getXcdlDescription());
Assert.assertNotNull(t2flow.getFormatInfo());
// FIXME why should these two be 0 when the workflow is present and contains data ?
// Assert.assertTrue(t2flow.getSizeInBytes() == 0);
// Assert.assertTrue(t2flow.getSizeInMB() == 0);
Assert.assertNotNull(t2flow.getData());
Assert.assertNotNull(t2flow.getData().getData());
Assert.assertTrue(t2flow.getData().getData().length > 0);
Assert.assertTrue(t2flow.getData().getSize() > 0);
Assert.assertNotNull(t2flow.getChangeLog());
Assert.assertNull(t2flow.getChangeLog().getCreatedBy());
Assert.assertNotNull(ex.getChangeLog());
Assert.assertTrue(ex.getChangeLog().getCreatedBy().equals("test1"));
}
@Test
public void importProjectsProfileSamplesPAPPreservationActionPlan() throws PlatoException {
PlanParser parser = new PlanParser();
InputStream in = Thread.currentThread().getContextClassLoader()
.getResourceAsStream("plans/PlanParserTest/PlanParserTest-PLAN_VALIDATED-ProfileSamplesPAP.xml");
List<Plan> plans = parser.importProjects(in);
Assert.assertTrue(plans.size() == 1);
Plan plan = plans.get(0);
DigitalObject pap = plan.getPreservationActionPlan();
Assert.assertNull(pap.getPid());
Assert.assertTrue("PreservationActionPlan.xml".equals(pap.getFullname()));
Assert.assertTrue("application/xml".equals(pap.getContentType()));
Assert.assertNull(pap.getJhoveXMLString());
Assert.assertNull(pap.getFitsXMLString());
Assert.assertNull(pap.getXcdlDescription());
Assert.assertNotNull(pap.getFormatInfo());
// FIXME why should these two be 0 when the workflow is present and contains data ?
// Assert.assertTrue(pap.getSizeInBytes() == 0);
// Assert.assertTrue(pap.getSizeInMB() == 0);
Assert.assertNotNull(pap.getData());
Assert.assertNotNull(pap.getData().getData());
Assert.assertTrue(pap.getData().getData().length > 0);
Assert.assertTrue(pap.getData().getSize() > 0);
Assert.assertNotNull(pap.getChangeLog());
Assert.assertNull(pap.getChangeLog().getCreatedBy());
}
}