package org.bonitasoft.web.rest.server.datastore.bpm.cases;
import static org.junit.Assert.assertEquals;
import java.util.HashMap;
import org.bonitasoft.test.toolkit.bpm.TestCase;
import org.bonitasoft.test.toolkit.bpm.TestProcess;
import org.bonitasoft.test.toolkit.bpm.TestProcessFactory;
import org.bonitasoft.test.toolkit.organization.TestUser;
import org.bonitasoft.test.toolkit.organization.TestUserFactory;
import org.bonitasoft.web.rest.model.bpm.cases.ArchivedCaseItem;
import org.bonitasoft.web.rest.server.AbstractConsoleTest;
import org.bonitasoft.web.rest.server.framework.search.ItemSearchResult;
import org.junit.Ignore;
import org.junit.Test;
/**
* @author ROHART Bastien
*
*/
public class ArchivedCaseDatastoreIntegrationTest extends AbstractConsoleTest {
private ArchivedCaseDatastore archivedCaseDatastore;
/*
* (non-Javadoc)
* @see org.bonitasoft.console.server.AbstractConsoleTest#consoleTestSetUp()
*/
@Override
public void consoleTestSetUp() throws Exception {
archivedCaseDatastore = new ArchivedCaseDatastore(getInitiator().getSession());
}
/*
* (non-Javadoc)
* @see org.bonitasoft.test.toolkit.AbstractJUnitTest#getInitiator()
*/
@Override
protected TestUser getInitiator() {
return TestUserFactory.getJohnCarpenter();
}
@Test
@Ignore("fail but i don't know what's the cause. Anyway functionnality is ok. Test is wrong")
public void twoPoolsWithOneWithACallActivityArchivedCaseTest() throws Exception {
TestProcess process1 = TestProcessFactory.getDefaultHumanTaskProcess();
// start process1 case via call activity
TestProcess process2 = TestProcessFactory.getCallActivityProcess(process1.getProcessDefinition());
process2.addActor(getInitiator()).startCase();
Thread.sleep(1000); // asynchronous, wait process1 to start
// archive process 1 case
TestCase testCaseProcess1 = process1.listOpenCases().get(0);
testCaseProcess1.getNextHumanTask().assignTo(getInitiator()).archive();
Thread.sleep(1000); // asynchronous, wait process2 to be archived
// Filters for archived Cases
ItemSearchResult<ArchivedCaseItem> itemSearchResult = archivedCaseDatastore.search(0, 100, null, null, new HashMap<String, String>());
assertEquals("2 cases started but one via call activity so only 1 should be archived", 1, itemSearchResult.getResults().size());
}
}