/** * The contents of this file are subject to the license and copyright * detailed in the LICENSE and NOTICE files at the root of the source * tree and available online at * * http://www.dspace.org/license/ */ package org.dspace.content; import org.dspace.eperson.Supervisor; import java.io.IOException; import java.sql.SQLException; import org.dspace.authorize.AuthorizeException; import org.dspace.AbstractUnitTest; import org.dspace.eperson.EPerson; import org.dspace.eperson.Group; import org.junit.*; import static org.hamcrest.CoreMatchers.*; import org.apache.log4j.Logger; import static org.junit.Assert.*; /** * * @author pvillega */ public class SupervisedItemTest extends AbstractUnitTest { /** log4j category */ private static final Logger log = Logger.getLogger(SupervisedItemTest.class); /** * SupervisedItem instance for the tests */ private SupervisedItem si; /** * Group instance for the tests */ private Group gr; /** * WorkspaceItem instance for the tests */ private WorkspaceItem wi; /** * This method will be run before every test as per @Before. It will * initialize resources required for the tests. * * Other methods can be annotated with @Before here or in subclasses * but no execution order is guaranteed */ @Before @Override public void init() { super.init(); try { //we have to create a new community in the database context.turnOffAuthorisationSystem(); Collection col = Collection.create(context); wi = WorkspaceItem.create(context, col, false); gr = Group.create(context); gr.addMember(context.getCurrentUser()); gr.update(); //set a supervisor as editor Supervisor.add(context, gr.getID(), wi.getID(), 1); SupervisedItem[] found = SupervisedItem.getAll(context); for(SupervisedItem sia: found) { if(sia.getID() == wi.getID()) { si = sia; } } //we need to commit the changes so we don't block the table for testing context.restoreAuthSystemState(); context.commit(); } catch (IOException ex) { log.error("IO Error in init", ex); fail("IO Error in init"); } catch (AuthorizeException ex) { log.error("Authorization Error in init", ex); fail("Authorization Error in init"); } catch (SQLException ex) { log.error("SQL Error in init", ex); fail("SQL Error in init"); } } /** * This method will be run after every test as per @After. It will * clean resources initialized by the @Before methods. * * Other methods can be annotated with @After here or in subclasses * but no execution order is guaranteed */ @After @Override public void destroy() { si = null; wi = null; gr = null; super.destroy(); } /** * Test of getAll method, of class SupervisedItem. */ @Test public void testGetAll() throws Exception { SupervisedItem[] found = SupervisedItem.getAll(context); assertThat("testGetAll 0", found, notNullValue()); assertTrue("testGetAll 1", found.length >= 1); boolean added = false; for(SupervisedItem sia: found) { if(sia.equals(si)) { added = true; } } assertTrue("testGetAll 2",added); } /** * Test of getSupervisorGroups method, of class SupervisedItem. */ @Test public void testGetSupervisorGroups_Context_int() throws Exception { Group[] found = si.getSupervisorGroups(context, wi.getID()); assertThat("testGetSupervisorGroups_Context_int 0", found, notNullValue()); assertTrue("testGetSupervisorGroups_Context_int 1", found.length == 1); assertThat("testGetSupervisorGroups_Context_int 2", found[0].getID(), equalTo(gr.getID())); } /** * Test of getSupervisorGroups method, of class SupervisedItem. */ @Test public void testGetSupervisorGroups_0args() throws Exception { Group[] found = si.getSupervisorGroups(); assertThat("testGetSupervisorGroups_0args 0", found, notNullValue()); assertTrue("testGetSupervisorGroups_0args 1", found.length == 1); boolean added = false; for(Group g: found) { if(g.equals(gr)) { added = true; } } assertTrue("testGetSupervisorGroups_0args 2",added); } /** * Test of findbyEPerson method, of class SupervisedItem. */ @Test public void testFindbyEPerson() throws Exception { context.turnOffAuthorisationSystem(); SupervisedItem[] found = SupervisedItem.findbyEPerson(context, EPerson.create(context)); assertThat("testFindbyEPerson 0", found, notNullValue()); assertTrue("testFindbyEPerson 1", found.length == 0); found = SupervisedItem.findbyEPerson(context, context.getCurrentUser()); assertThat("testFindbyEPerson 2", found, notNullValue()); assertTrue("testFindbyEPerson 3", found.length >= 1); boolean added = false; for(SupervisedItem sia: found) { if(sia.equals(si)) { added = true; } } assertTrue("testFindbyEPerson 4",added); context.restoreAuthSystemState(); } }