package org.gbif.ipt.action.manage;
import org.gbif.api.model.common.DOI;
import org.gbif.ipt.config.AppConfig;
import org.gbif.ipt.config.ConfigWarnings;
import org.gbif.ipt.model.Resource;
import org.gbif.ipt.model.voc.IdentifierStatus;
import org.gbif.ipt.service.admin.RegistrationManager;
import org.gbif.ipt.service.admin.VocabulariesManager;
import org.gbif.ipt.service.manage.ResourceManager;
import org.gbif.ipt.struts2.SimpleTextProvider;
import org.gbif.ipt.utils.MapUtils;
import java.util.LinkedHashMap;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
public class MetadataActionTest {
MetadataAction action;
Map<String, String> datasetSubtypes;
@Before
public void setup() {
// initiate action
action = new MetadataAction(mock(SimpleTextProvider.class), mock(AppConfig.class), mock(RegistrationManager.class),
mock(ResourceManager.class), mock(VocabulariesManager.class), mock(ConfigWarnings.class));
// mock creation of datasetSubtypes Map, with 2 occurrence subtypes, and 6 checklist subtypes
datasetSubtypes = new LinkedHashMap<String, String>();
datasetSubtypes.put("", "Select a subtype");
datasetSubtypes.put("taxonomicAuthority", "Taxonomic Authority");
datasetSubtypes.put("nomenclatorAuthority", "Nomenclator Authority");
datasetSubtypes.put("inventoryThematic", "Inventory Thematic");
datasetSubtypes.put("inventoryRegional", "Inventory Regional");
datasetSubtypes.put("globalSpeciesDataset", "Global Species Dataset");
datasetSubtypes.put("derivedFromOccurrence", "Derived from Occurrence");
datasetSubtypes.put("specimen", "Specimen");
datasetSubtypes.put("observation", "Observation");
// set Map
action.setDatasetSubtypes(datasetSubtypes);
// make all keys lower case in datasetSubtypes Map
action.setDatasetSubtypes(MapUtils.getMapWithLowercaseKeys(datasetSubtypes));
}
@Test
public void testGroupChecklistSubtypeKeysatasetSubtypes() {
action.groupDatasetSubtypes();
assertEquals(2, action.getOccurrenceSubtypeKeys().size());
assertEquals(6, action.getChecklistSubtypeKeys().size());
}
@Test
public void testGetOccurrenceSubtypesMap() {
action.groupDatasetSubtypes();
assertEquals(3, action.getOccurrenceSubtypesMap().size());
}
@Test
public void testGetChecklistSubtypesMap() {
action.groupDatasetSubtypes();
assertEquals(7, action.getChecklistSubtypesMap().size());
}
@Test
public void testHasDoiReservedOrAssigned() {
Resource resource = new Resource();
resource.setDoi(new DOI("doi:10.1594/KHU654"));
resource.setIdentifierStatus(IdentifierStatus.UNRESERVED);
assertFalse(action.hasDoiReservedOrAssigned(resource));
resource.setIdentifierStatus(IdentifierStatus.PUBLIC);
assertTrue(action.hasDoiReservedOrAssigned(resource));
resource.setIdentifierStatus(IdentifierStatus.PUBLIC_PENDING_PUBLICATION);
assertTrue(action.hasDoiReservedOrAssigned(resource));
resource.setIdentifierStatus(IdentifierStatus.UNAVAILABLE);
assertTrue(action.hasDoiReservedOrAssigned(resource));
}
@Test
public void testLicensesProperties() {
assertEquals(6, MetadataAction.licenseProperties().size());
}
@Test
public void testLoadLicensesMaps() {
MetadataAction.loadLicenseMaps("Select a license");
assertEquals(4, action.getLicenses().size()); // includes "select a license"
assertEquals("Select a license", action.getLicenses().get(""));
assertEquals(3, action.getLicenseTexts().size());
}
@Test
public void testDirectoriesProperties() {
assertEquals(4, MetadataAction.directoriesProperties().size());
}
@Test
public void testLoadDirectoriesMap() {
MetadataAction.loadDirectories("Select a directory");
assertEquals(5, action.getUserIdDirectories().size()); // includes "select a license"
assertEquals("Select a directory", action.getUserIdDirectories().get(""));
}
@Test
public void testRemoveNewlineCharacters() {
String withNewline = "Copyright Creative Commons Attribution-Share Alike License © 2011. \n"
+ "http://creativecommons.org/licenses/by-sa/3.0/";
assertEquals("Copyright Creative Commons Attribution-Share Alike License © 2011. http://creativecommons.org/licenses/by-sa/3.0/", action.removeNewlineCharacters(withNewline));
withNewline = "Copyright Creative Commons Attribution-Share Alike License © 2011. \r\n"
+ "http://creativecommons.org/licenses/by-sa/3.0/";
assertEquals("Copyright Creative Commons Attribution-Share Alike License © 2011. http://creativecommons.org/licenses/by-sa/3.0/", action.removeNewlineCharacters(withNewline));
withNewline = "Copyright Creative Commons Attribution-Share Alike License © 2011. \r"
+ "http://creativecommons.org/licenses/by-sa/3.0/";
assertEquals("Copyright Creative Commons Attribution-Share Alike License © 2011. http://creativecommons.org/licenses/by-sa/3.0/", action.removeNewlineCharacters(withNewline));
}
}