//Dstl (c) Crown Copyright 2017 package uk.gov.dstl.baleen.resources.gazetteer; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.uima.resource.ResourceInitializationException; import org.bson.Document; import org.junit.BeforeClass; import org.junit.Test; import com.mongodb.client.MongoCollection; import com.mongodb.client.MongoDatabase; import uk.gov.dstl.baleen.exceptions.BaleenException; import uk.gov.dstl.baleen.resources.SharedFongoResource; public class MongoGazetteerTest { private static final String EN_HELLO2 = "hello"; private static final String EN_HELLO = "howdy"; private static final String JP_HELLO = "konnbanwa"; private static final String DE_HELLO = "guten tag"; private static final String LANGUAGE = "language"; private static final String TRANSLATION = "translation"; private static final String VALUE = "value"; private static SharedFongoResource sfr; @BeforeClass public static void beforeClass() throws ResourceInitializationException{ sfr = new SharedFongoResource(); MongoDatabase db = sfr.getDB(); MongoCollection<Document> coll = db.getCollection("gazetteer"); coll.insertMany(Arrays.asList( new Document(VALUE, EN_HELLO2), new Document(VALUE, Arrays.asList("hi",EN_HELLO,"heya")), new Document(VALUE, Arrays.asList("konnichiwa",JP_HELLO)).append(LANGUAGE, "jp"), new Document(VALUE, Arrays.asList(DE_HELLO)).append(LANGUAGE, "de").append(TRANSLATION, "good day"), new Document(VALUE, Arrays.asList("hej")).append(LANGUAGE, "se") )); } @Test public void testGetValues() throws BaleenException{ MongoGazetteer gaz = new MongoGazetteer(); gaz.init(sfr, Collections.emptyMap()); List<String> values = Arrays.asList(gaz.getValues()); assertEquals(8, values.size()); assertTrue(values.contains(DE_HELLO)); assertTrue(values.contains(EN_HELLO2)); gaz.destroy(); } @Test public void testHasValue() throws BaleenException{ MongoGazetteer gaz = new MongoGazetteer(); gaz.init(sfr, Collections.emptyMap()); assertTrue(gaz.hasValue(EN_HELLO)); assertTrue(gaz.hasValue("hej")); assertTrue(gaz.hasValue("HEJ")); assertFalse(gaz.hasValue("good morning")); gaz.destroy(); } @Test public void testHasValueCaseSensitive() throws BaleenException{ MongoGazetteer gaz = new MongoGazetteer(); Map<String, Object> config = new HashMap<>(); config.put("caseSensitive", true); gaz.init(sfr, config); assertTrue(gaz.hasValue("hej")); assertFalse(gaz.hasValue("HEJ")); gaz.destroy(); } @Test public void testGetAliases() throws BaleenException{ MongoGazetteer gaz = new MongoGazetteer(); gaz.init(sfr, Collections.emptyMap()); String[] helloAliases = gaz.getAliases(EN_HELLO2); String[] hiAliases = gaz.getAliases("hi"); assertEquals(0, helloAliases.length); assertEquals(2, hiAliases.length); List<String> hiAliasesList = Arrays.asList(hiAliases); assertTrue(hiAliasesList.contains("heya")); assertTrue(hiAliasesList.contains(EN_HELLO)); gaz.destroy(); } @Test public void testGetAdditionalData() throws BaleenException{ MongoGazetteer gaz = new MongoGazetteer(); gaz.init(sfr, Collections.emptyMap()); Map<String, Object> helloData = gaz.getAdditionalData(EN_HELLO2); Map<String, Object> gutentagData = gaz.getAdditionalData(DE_HELLO); Map<String, Object> konnbanwaData = gaz.getAdditionalData(JP_HELLO); assertEquals(0, helloData.size()); assertEquals(2, gutentagData.size()); assertEquals(1, konnbanwaData.size()); assertTrue(gutentagData.containsKey(LANGUAGE)); assertEquals("de", gutentagData.get(LANGUAGE)); assertTrue(gutentagData.containsKey(TRANSLATION)); assertEquals("good day", gutentagData.get(TRANSLATION)); assertTrue(konnbanwaData.containsKey(LANGUAGE)); assertEquals("jp", konnbanwaData.get(LANGUAGE)); gaz.destroy(); } }