package org.gbif.checklistbank.service.mybatis;
import org.gbif.api.model.checklistbank.NameUsageMediaObject;
import org.gbif.api.model.common.paging.Pageable;
import org.gbif.api.model.common.paging.PagingRequest;
import org.gbif.api.service.checklistbank.MultimediaService;
import org.gbif.api.vocabulary.MediaType;
import java.net.URI;
import java.util.List;
import org.apache.commons.lang3.time.DateFormatUtils;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
public class MultimediaServiceMyBatisIT extends MyBatisServiceITBase<MultimediaService> {
public MultimediaServiceMyBatisIT() {
super(MultimediaService.class);
}
private final Integer USAGE_ID = 100000025;
@Test
public void testListByChecklistUsage() {
List<NameUsageMediaObject> images = service.listByUsage(USAGE_ID, null).getResults();
assertEquals(8, images.size());
for (NameUsageMediaObject m : images) {
assertNotNull(m.getIdentifier());
assertNotNull(m.getType());
}
NameUsageMediaObject image = images.get(0); // 100010
assertNull(image.getSourceTaxonKey());
assertEquals("2008-01-01", DateFormatUtils.ISO_DATE_FORMAT.format(image.getCreated()));
assertEquals("Prashanthns", image.getCreator());
assertEquals("Eurasian Red Squirrel", image.getTitle());
assertEquals("A Eurasian Red Squirrel seen from below. Photographed in Wagenigen, Nederlands.",
image.getDescription());
assertEquals(URI.create("http://upload.wikimedia.org/wikipedia/commons/e/e2/Eurasian_Red_Squirrel.jpg"),
image.getIdentifier());
assertEquals("Creative Commons Attribution 3.0 Unported", image.getLicense());
assertNull(image.getPublisher());
assertEquals(URI.create("http://en.wikipedia.org/wiki/File:Eurasian_Red_Squirrel.jpg"), image.getReferences());
// TEST PAGING
Pageable page = new PagingRequest(0, 1);
NameUsageMediaObject d1 = service.listByUsage(USAGE_ID, page).getResults().get(0);
page = new PagingRequest(1, 1);
NameUsageMediaObject d2 = service.listByUsage(USAGE_ID, page).getResults().get(0);
assertEquals(d1, images.get(0));
assertEquals(d2, images.get(1));
}
@Test
public void testBadUri() {
List<NameUsageMediaObject> media = service.listByUsage(100000030, null).getResults();
assertEquals(2, media.size());
// http less URL, should work
NameUsageMediaObject img = media.get(0);
assertNotNull(img);
assertEquals(89, img.getCreated().getYear());
assertEquals(10, img.getCreated().getMonth());
assertEquals(URI.create(
"http://www.wikimedia.org/wikipedia/commons/thumb/d/d8/Sciurus_anomalus_-_Jeita_Grotto.jpg/724px-Sciurus_anomalus_-_Jeita_Grotto.jpg"),
img.getIdentifier());
assertEquals(URI.create("http://www.gbif.org"), img.getReferences());
assertEquals("Persian Squirrel in a cage", img.getDescription());
assertEquals(MediaType.StillImage, img.getType());
// citation instead of URI, should be ignored
img = media.get(1);
assertNotNull(img);
assertEquals(89, img.getCreated().getYear());
assertEquals(10, img.getCreated().getMonth());
assertEquals("Persian Squirrel in a cage", img.getDescription());
assertNull(img.getIdentifier());
assertNull(img.getReferences());
assertNull(img.getType());
}
}