package net.sourceforge.seqware.common.business.impl;
import io.seqware.common.model.WorkflowRunStatus;
import java.util.Date;
import java.util.List;
import java.util.SortedSet;
import net.sourceforge.seqware.common.BaseUnit;
import net.sourceforge.seqware.common.business.IUSService;
import net.sourceforge.seqware.common.business.LaneService;
import net.sourceforge.seqware.common.business.WorkflowRunService;
import net.sourceforge.seqware.common.factory.BeanFactory;
import net.sourceforge.seqware.common.hibernate.InSessionExecutions;
import net.sourceforge.seqware.common.model.IUS;
import net.sourceforge.seqware.common.model.Lane;
import net.sourceforge.seqware.common.model.WorkflowRun;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import org.junit.Test;
/**
* <p>
* WorkflowRunServiceImplTest class.
* </p>
*
* @author boconnor
* @version $Id: $Id
* @since 0.13.3
*/
public class WorkflowRunServiceImplTest extends BaseUnit {
/**
* <p>
* Constructor for WorkflowRunServiceImplTest.
* </p>
*
* @throws java.lang.Exception
* if any.
*/
public WorkflowRunServiceImplTest() throws Exception {
super();
}
/**
* <p>
* testParentLanes.
* </p>
*/
@Test
public void testParentLanes() {
InSessionExecutions.bindSessionToThread();
WorkflowRunService wfService = BeanFactory.getWorkflowRunServiceBean();
WorkflowRun wfRun = wfService.findByID(22);
SortedSet<Lane> lanes = wfRun.getLanes();
assertNotNull(lanes);
System.out.print(lanes.size());
// Let's try to add new lane to wfRun
LaneService laneService = BeanFactory.getLaneServiceBean();
Lane lane = laneService.findByID(3);
lanes.add(lane);
wfRun.setLanes(lanes);
wfService.update(wfRun);
InSessionExecutions.unBindSessionFromTheThread();
// Let's open new session
InSessionExecutions.bindSessionToThread();
wfRun = wfService.findByID(22);
lanes = wfRun.getLanes();
System.out.print(lanes.size());
assertEquals(1, lanes.size());
InSessionExecutions.unBindSessionFromTheThread();
}
/**
* <p>
* testParentIus.
* </p>
*/
@Test
public void testParentIus() {
InSessionExecutions.bindSessionToThread();
WorkflowRunService wfService = BeanFactory.getWorkflowRunServiceBean();
WorkflowRun wfRun = wfService.findByID(22);
SortedSet<IUS> ius = wfRun.getIus();
assertNotNull(ius);
assertEquals(0, ius.size());
// Get some IUS
IUSService iusService = BeanFactory.getIUSServiceBean();
IUS someIus = iusService.findByID(4);
ius.add(someIus);
wfRun.setIus(ius);
wfService.update(wfRun);
InSessionExecutions.unBindSessionFromTheThread();
InSessionExecutions.bindSessionToThread();
wfRun = wfService.findByID(22);
ius = wfRun.getIus();
assertNotNull(ius);
assertEquals(1, ius.size());
InSessionExecutions.unBindSessionFromTheThread();
}
/**
* <p>
* testAttachNewlyCreatedWorkflowRun.
* </p>
*/
@Test
public void testAttachNewlyCreatedWorkflowRun() {
// Suppose we created or get WorkflowRun object which is hibernate outbound
InSessionExecutions.bindSessionToThread();
WorkflowRun createdWorkflowRun = new WorkflowRun();
createdWorkflowRun.setWorkflowRunId(22);
createdWorkflowRun.setIniFile("newIniFile"); // <-- ini file has been
// updated
createdWorkflowRun.setStatus(WorkflowRunStatus.completed);
createdWorkflowRun.setStatusCmd("newCommand"); // <-- command has been
// updated
createdWorkflowRun.setSeqwareRevision("2305M");
createdWorkflowRun.setSwAccession(64);
createdWorkflowRun.setCreateTimestamp(new Date());
createdWorkflowRun.setUpdateTimestamp(new Date());
WorkflowRunService wfService = BeanFactory.getWorkflowRunServiceBean();
wfService.updateDetached(createdWorkflowRun);
InSessionExecutions.unBindSessionFromTheThread();
}
/**
* <p>
* testFindByCriteria.
* </p>
*/
@Test
public void testFindByCriteria() {
WorkflowRunService wfService = BeanFactory.getWorkflowRunServiceBean();
List<WorkflowRun> found = wfService.findByCriteria("NC_001807", false);
assertEquals(4, found.size());
// Case sensitive
found = wfService.findByCriteria("ExomesOrHg19Tumour", true);
assertEquals(1, found.size());
found = wfService.findByCriteria("exomesOrHg19Tumour", true);
assertEquals(0, found.size());
// SWID
found = wfService.findByCriteria("2862", true);
assertEquals(1, found.size());
}
}