package org.gbif.ipt.utils;
import org.gbif.ipt.config.Constants;
import org.gbif.metadata.eml.Eml;
import org.gbif.metadata.eml.KeywordSet;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class EmlUtilsTest {
private Eml eml;
@Before
public void setup() {
eml = new Eml();
}
@Test
public void testAddOrUpdateKeywordSet() {
// start with empty List
List<KeywordSet> keywords = eml.getKeywords();
// add KeywordSet for dataset type Occurrence
EmlUtils.addOrUpdateKeywordSet(keywords, "Occurrencia", Constants.THESAURUS_DATASET_TYPE);
assertEquals(1, keywords.size());
assertEquals("Occurrencia", keywords.get(0).getKeywordsString());
assertEquals(Constants.THESAURUS_DATASET_TYPE, keywords.get(0).getKeywordThesaurus());
// ensure calling same method, doesn't replace keywordString
EmlUtils.addOrUpdateKeywordSet(keywords, "Occurrence", Constants.THESAURUS_DATASET_TYPE);
assertEquals(1, keywords.size());
assertEquals("Occurrencia", keywords.get(0).getKeywordsString());
}
@Test
public void testAddOrUpdateKeywordSetFails() {
// start with empty List
List<KeywordSet> keywords = eml.getKeywords();
// add KeywordSet for empty dataset type - should fail
EmlUtils.addOrUpdateKeywordSet(keywords, "", Constants.THESAURUS_DATASET_TYPE);
assertEquals(0, keywords.size());
}
@Test
public void testRemoveKeywordSet() {
// start with pre-populated List
List<KeywordSet> keywords = new ArrayList<KeywordSet>();
KeywordSet ks1 = new KeywordSet();
ks1.setKeywordsString("Occurrence");
ks1.setKeywordThesaurus(Constants.THESAURUS_DATASET_TYPE);
keywords.add(ks1);
KeywordSet ks2 = new KeywordSet();
ks2.setKeywordsString("Birds of prey");
ks2.setKeywordThesaurus("Bird Types Thesaurus");
keywords.add(ks2);
KeywordSet ks3 = new KeywordSet();
ks3.setKeywordsString("Checklist");
ks3.setKeywordThesaurus(Constants.THESAURUS_DATASET_TYPE);
keywords.add(ks3);
assertEquals(3, keywords.size());
EmlUtils.removeKeywordSet(keywords, Constants.THESAURUS_DATASET_TYPE);
// should be left with 1
assertEquals(1, keywords.size());
}
}