package org.gbif.checklistbank.service.mybatis.mapper; import org.gbif.api.model.checklistbank.TypeSpecimen; import org.gbif.api.model.common.paging.PagingRequest; import org.gbif.api.vocabulary.Rank; import org.gbif.api.vocabulary.TypeDesignationType; import org.gbif.api.vocabulary.TypeStatus; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; public class TypeSpecimenMapperTest extends MapperITBase<TypeSpecimenMapper> { public TypeSpecimenMapperTest() { super(TypeSpecimenMapper.class, true); } @Test public void testMapper() throws Exception { assertTrue(mapper.listByChecklistUsage(usageKey, new PagingRequest()).isEmpty()); assertTrue(mapper.listByNubUsage(usageKey, new PagingRequest()).isEmpty()); TypeSpecimen obj = new TypeSpecimen(); obj.setScientificName("Abies alba"); obj.setTypeDesignatedBy("Markus"); obj.setTypeDesignationType(TypeDesignationType.ORIGINAL_DESIGNATION); obj.setTaxonRank(Rank.SPECIES); // these are legacy properties not stored in CLB - we only store type species/genus records, not specimens as these are occurrences! obj.setTypeStatus(TypeStatus.TYPE_SPECIES); obj.setCitation(citation2); obj.setLocality("locality"); obj.setCatalogNumber("catNum177"); // these should get ignored obj.setSource("sourcy s"); obj.setSourceTaxonKey(123); mapper.insert(usageKey, obj, citationKey1); TypeSpecimen obj2 = mapper.listByChecklistUsage(usageKey, new PagingRequest()).get(0); assertEquals(obj.getScientificName(), obj2.getScientificName()); assertEquals(obj.getTypeDesignatedBy(), obj2.getTypeDesignatedBy()); assertEquals(obj.getTypeDesignationType(), obj2.getTypeDesignationType()); assertEquals(obj.getTaxonRank(), obj2.getTaxonRank()); // deprecated fields assertNull(obj2.getTypeStatus()); assertNull(obj2.getCitation()); assertNull(obj2.getLocality()); assertNull(obj2.getCatalogNumber()); assertNull(obj2.getRecordedBy()); // these are handled special assertEquals(citation1, obj2.getSource()); assertNull(obj2.getSourceTaxonKey()); TypeSpecimen obj3 = mapper.listByNubUsage(nubKey, new PagingRequest()).get(0); assertEquals(obj.getScientificName(), obj3.getScientificName()); assertEquals(obj.getTypeDesignatedBy(), obj3.getTypeDesignatedBy()); assertEquals(obj.getTypeDesignationType(), obj3.getTypeDesignationType()); assertEquals(obj.getTaxonRank(), obj3.getTaxonRank()); // deprecated fields assertNull(obj3.getTypeStatus()); assertNull(obj3.getCitation()); assertNull(obj3.getLocality()); assertNull(obj3.getCatalogNumber()); assertNull(obj3.getRecordedBy()); // these are now nub source usage values assertEquals(datasetTitle, obj3.getSource()); assertEquals((Integer) usageKey, obj3.getSourceTaxonKey()); } }