Package com.findwise.hydra.output.solr

Source Code of com.findwise.hydra.output.solr.SolrOutputStageTest

package com.findwise.hydra.output.solr;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.solr.client.solrj.SolrServer;
import org.apache.solr.common.SolrInputDocument;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;

import com.findwise.hydra.Document.Action;
import com.findwise.hydra.local.LocalDocument;

public class SolrOutputStageTest {

  SolrOutputStage solrOutput;
  SolrServer mockServer;

  @Before
  public void setUp() throws Exception {
    solrOutput = new SolrOutputStage();
    mockServer = Mockito.mock(SolrServer.class);
    solrOutput.setSolrServer(mockServer);
  }

  @After
  public void tearDown() throws Exception {
  }

  @Test
  public void testAdd() throws Exception {
    solrOutput.setFieldMappings(new HashMap<String, Object>());

    LocalDocument doc = new LocalDocument();
    doc.setAction(Action.ADD);
    doc.putContentField("name", "jonas");
    solrOutput.output(doc);
    Mockito.verify(mockServer).add(
        Mockito.any(SolrInputDocument.class));
  }

  @Test
  public void testDelete() throws Exception {
    LocalDocument doc = new LocalDocument();
    doc.setAction(Action.DELETE);
    doc.putContentField("name", "jonas");
    try {
      solrOutput.output(doc);
    } catch(Exception e) {}
    Mockito.verify(mockServer, Mockito.never()).deleteById(Mockito.any(String.class));
   
    doc.putContentField("id", "someid");
    solrOutput.output(doc);
    Mockito.verify(mockServer).deleteById(Mockito.any(String.class));
  }
 
  @Test
  public void testCommitWithin() throws Exception {
    solrOutput.setFieldMappings(new HashMap<String, Object>());
    solrOutput.setCommitWithin(1337);
    LocalDocument doc = new LocalDocument();
    doc.setAction(Action.ADD);
    doc.putContentField("name", "one");
    solrOutput.output(doc);
    Mockito.verify(mockServer, Mockito.times(1)).add(
        Mockito.any(SolrInputDocument.class), Mockito.eq(1337));
  }

  @Test
  public void testFieldConfig() throws Exception {
    LocalDocument doc = new LocalDocument();
    doc.putContentField("name", "jens");
    doc.putContentField("reference", "http://www.giantbomb.com");
    List<String> multiValued = new ArrayList<String>();
    multiValued.add("james bond");
    multiValued.add("heman");
    doc.putContentField("hero", multiValued);
    doc.putContentField("explode", "boom");

    Map<String, Object> fieldMappings = new HashMap<String, Object>();
    fieldMappings.put("name", "fullname");
    fieldMappings.put("reference", "url");
    fieldMappings.put("doesnotexist", "doesnotmatter");
    fieldMappings.put("hero", "heroes");
    fieldMappings.put("explode", Arrays.asList(new String[] {"explode1", "explode2", "explode3"}));

    solrOutput.setFieldMappings(fieldMappings);
    SolrInputDocument inputDoc = solrOutput
        .createSolrInputDocumentWithFieldConfig(doc);

    org.junit.Assert.assertEquals(inputDoc.getFieldValue("fullname"), doc
        .getContentField("name").toString());

    org.junit.Assert.assertArrayEquals(multiValued.toArray(), inputDoc
        .getFieldValues("heroes").toArray());
   
    org.junit.Assert.assertEquals(inputDoc.getFieldValue("explode1"), doc.getContentField("explode"));
    org.junit.Assert.assertEquals(inputDoc.getFieldValue("explode2"), doc.getContentField("explode"));
    org.junit.Assert.assertEquals(inputDoc.getFieldValue("explode3"), doc.getContentField("explode"));
  }

  @Test
  public void testFieldConfigWithSendallTrue() throws Exception {
    LocalDocument doc = new LocalDocument();
    doc.putContentField("name", "jens");
    doc.putContentField("reference", "http://www.giantbomb.com");
    List<String> multiValued = new ArrayList<String>();
    multiValued.add("james bond");
    multiValued.add("heman");
    doc.putContentField("hero", multiValued);
    solrOutput.setSendAll(true);
    SolrInputDocument inputDoc = solrOutput
        .createSolrInputDocumentWithFieldConfig(doc);

    org.junit.Assert.assertEquals(inputDoc.getFieldValue("name"), doc
        .getContentField("name").toString());

    org.junit.Assert.assertEquals(inputDoc.getFieldValue("reference"), doc
        .getContentField("reference").toString());

    org.junit.Assert.assertArrayEquals(((ArrayList<?>) doc
        .getContentField("hero")).toArray(),
        inputDoc.getFieldValues("hero").toArray());

  }
}
TOP

Related Classes of com.findwise.hydra.output.solr.SolrOutputStageTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.