Package org.onebusaway.transit_data_federation.bundle.tasks

Source Code of org.onebusaway.transit_data_federation.bundle.tasks.GenerateRouteCollectionSearchIndexTaskTest

/**
* Copyright (C) 2011 Google, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*         http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.onebusaway.transit_data_federation.bundle.tasks;

import static org.junit.Assert.assertEquals;
import static org.onebusaway.transit_data_federation.testing.UnitTestingSupport.routeCollection;

import java.io.File;
import java.io.IOException;
import java.util.Arrays;

import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.queryParser.ParseException;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.onebusaway.container.refresh.RefreshService;
import org.onebusaway.gtfs.model.AgencyAndId;
import org.onebusaway.transit_data_federation.impl.RefreshableResources;
import org.onebusaway.transit_data_federation.impl.RouteCollectionSearchServiceImpl;
import org.onebusaway.transit_data_federation.impl.transit_graph.RouteCollectionEntryImpl;
import org.onebusaway.transit_data_federation.model.SearchResult;
import org.onebusaway.transit_data_federation.model.narrative.RouteCollectionNarrative;
import org.onebusaway.transit_data_federation.services.FederatedTransitDataBundle;
import org.onebusaway.transit_data_federation.services.narrative.NarrativeService;
import org.onebusaway.transit_data_federation.services.transit_graph.RouteCollectionEntry;
import org.onebusaway.transit_data_federation.services.transit_graph.TransitGraphDao;

public class GenerateRouteCollectionSearchIndexTaskTest {

  private static final double MIN_SCORE = 0.4;

  private GenerateRouteCollectionSearchIndexTask _task;

  private TransitGraphDao _transitGraphDao;

  private NarrativeService _narrativeService;

  private FederatedTransitDataBundle _bundle;

  private RefreshService _refreshService;

  @Before
  public void setup() throws IOException {

    _task = new GenerateRouteCollectionSearchIndexTask();

    _bundle = Mockito.mock(FederatedTransitDataBundle.class);
    _task.setBundle(_bundle);

    File path = File.createTempFile(
        GenerateRouteCollectionSearchIndexTask.class.getName(), ".tmp");
    path.delete();
    path.deleteOnExit();
    Mockito.when(_bundle.getRouteSearchIndexPath()).thenReturn(path);

    _transitGraphDao = Mockito.mock(TransitGraphDao.class);
    _task.setTransitGraphDao(_transitGraphDao);

    _narrativeService = Mockito.mock(NarrativeService.class);
    _task.setNarrativeService(_narrativeService);

    _refreshService = Mockito.mock(RefreshService.class);
    _task.setRefreshService(_refreshService);
  }

  @Test
  public void testGenerateStopSearchIndex() throws CorruptIndexException,
      IOException, ParseException {

    RouteCollectionEntryImpl routeA = routeCollection("routeA");
    RouteCollectionEntryImpl routeB = routeCollection("routeB");
    RouteCollectionEntryImpl routeC = routeCollection("routeC");

    RouteCollectionNarrative.Builder routeNarrativeA = RouteCollectionNarrative.builder();
    routeNarrativeA.setShortName("10");
    routeNarrativeA.setLongName("El Diez");

    RouteCollectionNarrative.Builder routeNarrativeB = RouteCollectionNarrative.builder();
    routeNarrativeB.setShortName("11");
    routeNarrativeB.setLongName("El Once");

    RouteCollectionNarrative.Builder routeNarrativeC = RouteCollectionNarrative.builder();
    routeNarrativeC.setShortName("100");

    Mockito.when(_transitGraphDao.getAllRouteCollections()).thenReturn(
        Arrays.asList((RouteCollectionEntry) routeA, routeB, routeC));

    Mockito.when(_narrativeService.getRouteCollectionForId(routeA.getId())).thenReturn(
        routeNarrativeA.create());
    Mockito.when(_narrativeService.getRouteCollectionForId(routeB.getId())).thenReturn(
        routeNarrativeB.create());
    Mockito.when(_narrativeService.getRouteCollectionForId(routeC.getId())).thenReturn(
        routeNarrativeC.create());

    _task.run();

    Mockito.verify(_refreshService).refresh(
        RefreshableResources.ROUTE_COLLECTION_SEARCH_DATA);

    RouteCollectionSearchServiceImpl searchService = new RouteCollectionSearchServiceImpl();
    searchService.setBundle(_bundle);
    searchService.initialize();

    SearchResult<AgencyAndId> ids = searchService.searchForRoutesByName("10",
        10, MIN_SCORE);
    assertEquals(1, ids.size());
    assertEquals(routeA.getId(), ids.getResult(0));

    ids = searchService.searchForRoutesByName("el diez", 10, MIN_SCORE);
    assertEquals(1, ids.size());
    assertEquals(routeA.getId(), ids.getResult(0));

    ids = searchService.searchForRoutesByName("diez", 10, MIN_SCORE);
    assertEquals(1, ids.size());
    assertEquals(routeA.getId(), ids.getResult(0));

    ids = searchService.searchForRoutesByName("11", 10, MIN_SCORE);
    assertEquals(1, ids.size());
    assertEquals(routeB.getId(), ids.getResult(0));

    ids = searchService.searchForRoutesByName("100", 10, MIN_SCORE);
    assertEquals(1, ids.size());
    assertEquals(routeC.getId(), ids.getResult(0));

  }
}
TOP

Related Classes of org.onebusaway.transit_data_federation.bundle.tasks.GenerateRouteCollectionSearchIndexTaskTest

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.