mirror of
https://github.com/DSpace/DSpace.git
synced 2025-10-07 10:04:21 +00:00
168 lines
7.0 KiB
Java
168 lines
7.0 KiB
Java
/**
|
|
* 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.apache.log4j.Logger;
|
|
import org.dspace.AbstractUnitTest;
|
|
import org.dspace.authorize.AuthorizeException;
|
|
import org.dspace.content.factory.ContentServiceFactory;
|
|
import org.dspace.content.service.*;
|
|
import org.dspace.core.ConfigurationManager;
|
|
import org.dspace.handle.factory.HandleServiceFactory;
|
|
import org.dspace.handle.service.HandleService;
|
|
import org.dspace.versioning.Version;
|
|
import org.dspace.versioning.VersionHistory;
|
|
import org.dspace.versioning.factory.VersionServiceFactory;
|
|
import org.dspace.versioning.service.VersionHistoryService;
|
|
import org.dspace.versioning.service.VersioningService;
|
|
import org.junit.After;
|
|
import org.junit.Before;
|
|
import org.junit.Test;
|
|
|
|
import java.sql.SQLException;
|
|
|
|
import static org.hamcrest.CoreMatchers.*;
|
|
import static org.junit.Assert.assertThat;
|
|
import static org.junit.Assert.assertTrue;
|
|
import static org.junit.Assert.fail;
|
|
|
|
|
|
/**
|
|
* Unit Tests for versioning
|
|
*
|
|
* @author Fabio Bolognesi (fabio at atmire dot com)
|
|
* @author Mark Diggory (markd at atmire dot com)
|
|
* @author Ben Bosman (ben at atmire dot com)
|
|
*/
|
|
public class VersioningTest extends AbstractUnitTest {
|
|
|
|
private static final Logger log = Logger.getLogger(VersioningTest.class);
|
|
|
|
private String originalHandle;
|
|
private Item originalItem;
|
|
private Item versionedItem;
|
|
private String summary = "Unit test version";
|
|
protected CommunityService communityService = ContentServiceFactory.getInstance().getCommunityService();
|
|
protected CollectionService collectionService = ContentServiceFactory.getInstance().getCollectionService();
|
|
protected InstallItemService installItemService = ContentServiceFactory.getInstance().getInstallItemService();
|
|
protected ItemService itemService = ContentServiceFactory.getInstance().getItemService();
|
|
protected HandleService handleService = HandleServiceFactory.getInstance().getHandleService();
|
|
protected WorkspaceItemService workspaceItemService = ContentServiceFactory.getInstance().getWorkspaceItemService();
|
|
protected VersioningService versionService = VersionServiceFactory.getInstance().getVersionService();
|
|
protected VersionHistoryService versionHistoryService = VersionServiceFactory.getInstance().getVersionHistoryService();
|
|
|
|
//A regex that can be used to see if a handle contains the format of handle created by the org.dspace.identifier.VersionedHandleIdentifierProvider
|
|
protected String versionedHandleRegex = ConfigurationManager.getProperty("handle.prefix") + "\\/[0-9]*\\.[0-9]";
|
|
|
|
/**
|
|
* 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
|
|
{
|
|
context.turnOffAuthorisationSystem();
|
|
Community community = communityService.create(null, context);
|
|
|
|
Collection col = collectionService.create(context, community);
|
|
WorkspaceItem is = workspaceItemService.create(context, col, false);
|
|
|
|
originalItem = installItemService.installItem(context, is);
|
|
originalHandle = originalItem.getHandle();
|
|
|
|
Version version = versionService.createNewVersion(context, originalItem, summary);
|
|
WorkspaceItem wsi = workspaceItemService.findByItem(context, version.getItem());
|
|
|
|
versionedItem = installItemService.installItem(context, wsi);
|
|
context.restoreAuthSystemState();
|
|
}
|
|
catch (AuthorizeException ex)
|
|
{
|
|
log.error("Authorization Error in init", ex);
|
|
fail("Authorization Error in init: " + ex.getMessage());
|
|
}
|
|
catch (SQLException ex)
|
|
{
|
|
log.error("SQL Error in init", ex);
|
|
fail("SQL Error in init: " + ex.getMessage());
|
|
}
|
|
|
|
}
|
|
|
|
/**
|
|
* 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()
|
|
{
|
|
context.abort();
|
|
super.destroy();
|
|
}
|
|
|
|
|
|
@Test
|
|
public void testVersionFind() throws SQLException
|
|
{
|
|
VersionHistory versionHistory = versionHistoryService.findByItem(context, originalItem);
|
|
assertThat("testFindVersionHistory", versionHistory, notNullValue());
|
|
Version version = versionHistoryService.getVersion(context, versionHistory, versionedItem);
|
|
assertThat("testFindVersion", version, notNullValue());
|
|
}
|
|
|
|
/**
|
|
* Test of installItem method, of class InstallItem.
|
|
*/
|
|
@Test
|
|
public void testVersionSummary() throws Exception
|
|
{
|
|
//Start by creating a new item !
|
|
VersionHistory versionHistory = versionHistoryService.findByItem(context, originalItem);
|
|
Version version = versionHistoryService.getVersion(context, versionHistory, versionedItem);
|
|
assertThat("Test_version_summary", summary, equalTo(version.getSummary()));
|
|
}
|
|
|
|
@Test
|
|
public void testVersionHandle() throws Exception {
|
|
/*
|
|
Verify the handles assigned to an item, the original item should get a single handle
|
|
while the versioned item should get 2 handles, the original handle & a versioned one.
|
|
*/
|
|
assertThat("Test_version_handle 1", versionedItem.getHandle(), notNullValue());
|
|
assertThat("Test_version_handle 2", originalItem.getHandle(), notNullValue());
|
|
assertTrue("Test_version_handle 3 ", originalItem.getHandles().size() == 1);
|
|
assertTrue("Test_version_handle 4 ", versionedItem.getHandles().size() == 2);
|
|
assertTrue("Test_version_handle 5 ", originalItem.getHandle().matches(versionedHandleRegex));
|
|
assertTrue("Test_version_handle 6 ", originalItem.getHandle().startsWith(originalHandle + "."));
|
|
//The getHandle method should always return the original handle
|
|
assertTrue("Test_version_handle 7 ", versionedItem.getHandle().equals(originalHandle));
|
|
assertTrue("Test_version_handle 8 ", versionedItem.getHandles().get(1).getHandle().startsWith(originalHandle + "."));
|
|
assertTrue("Test_version_handle 9 ", versionedItem.getHandles().get(1).getHandle().matches(versionedHandleRegex));
|
|
}
|
|
|
|
@Test
|
|
public void testVersionDelete() throws Exception {
|
|
context.turnOffAuthorisationSystem();
|
|
versionService.removeVersion(context, versionedItem);
|
|
assertThat("Test_version_delete", itemService.find(context, versionedItem.getID()), nullValue());
|
|
assertThat("Test_version_handle_delete", handleService.resolveToObject(context, versionedItem.getHandle()), nullValue());
|
|
context.restoreAuthSystemState();
|
|
}
|
|
}
|