package edu.harvard.iq.dataverse.engine.command.impl;
import edu.harvard.iq.dataverse.Dataset;
import edu.harvard.iq.dataverse.DatasetVersion;
import edu.harvard.iq.dataverse.mocks.MocksFactory;
import static edu.harvard.iq.dataverse.mocks.MocksFactory.makeRequest;
import edu.harvard.iq.dataverse.engine.TestCommandContext;
import edu.harvard.iq.dataverse.engine.TestDataverseEngine;
import edu.harvard.iq.dataverse.engine.command.exception.CommandException;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import static org.junit.Assert.*;
/**
*
* @author michael
*/
public class GetLatestPublishedDatasetVersionCommandTest {
TestDataverseEngine engine = new TestDataverseEngine( new TestCommandContext() );
@Test
public void testLatestPublishedNoDraft() throws CommandException {
Dataset ds = MocksFactory.makeDataset();
List<DatasetVersion> versions = make10Versions(ds);
ds.setVersions(versions);
assertEquals( 10l, engine.submit(new GetLatestPublishedDatasetVersionCommand(makeRequest(), ds)).getVersionNumber().longValue() );
assertTrue( "Published datasets should require no permissions to view",
engine.getReqiredPermissionsForObjects().get(ds).isEmpty() );
}
@Test
public void testLatestPublishedWithDraft() throws CommandException {
Dataset ds = MocksFactory.makeDataset();
List<DatasetVersion> versions = make10Versions(ds);
versions.add( MocksFactory.makeDatasetVersion(ds.getCategories()) );
ds.setVersions(versions);
assertEquals( 10l, engine.submit(new GetLatestPublishedDatasetVersionCommand(makeRequest(), ds)).getVersionNumber().longValue() );
assertTrue( "Published datasets should require no permissions to view",
engine.getReqiredPermissionsForObjects().get(ds).isEmpty() );
}
@Test
public void testLatestNonePublished() throws CommandException {
Dataset ds = MocksFactory.makeDataset();
assertNull( engine.submit(new GetLatestPublishedDatasetVersionCommand(makeRequest(), ds)) );
}
private List<DatasetVersion> make10Versions(Dataset ds) {
// setup: make 10 versions.
List<DatasetVersion> versions = new ArrayList<>(10);
for ( int i=10; i>0; i-- ) {
DatasetVersion v = MocksFactory.makeDatasetVersion(ds.getCategories());
v.setVersionNumber((long)i);
v.setMinorVersionNumber(0l);
v.setReleaseTime( MocksFactory.date(1990, i, 1) );
v.setVersionState(DatasetVersion.VersionState.RELEASED);
versions.add(v);
}
return versions;
}
}