/**
* Copyright (C) 2011 Brian Ferris <bdferris@onebusaway.org>
* 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.impl.beans;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mockito;
import org.onebusaway.gtfs.model.AgencyAndId;
import org.onebusaway.transit_data.model.RouteBean;
import org.onebusaway.transit_data.model.StopBean;
import org.onebusaway.transit_data_federation.impl.transit_graph.StopEntryImpl;
import org.onebusaway.transit_data_federation.model.narrative.StopNarrative;
import org.onebusaway.transit_data_federation.services.AgencyAndIdLibrary;
import org.onebusaway.transit_data_federation.services.RouteService;
import org.onebusaway.transit_data_federation.services.beans.RouteBeanService;
import org.onebusaway.transit_data_federation.services.narrative.NarrativeService;
import org.onebusaway.transit_data_federation.services.transit_graph.TransitGraphDao;
public class StopBeanServiceImplTest {
private StopBeanServiceImpl _service;
private TransitGraphDao _transitGraphDao;
private NarrativeService _narrativeService;
private RouteService _routeService;
private RouteBeanService _routeBeanService;
@Before
public void setup() {
_service = new StopBeanServiceImpl();
_transitGraphDao = Mockito.mock(TransitGraphDao.class);
_service.setTranstiGraphDao(_transitGraphDao);
_narrativeService = Mockito.mock(NarrativeService.class);
_service.setNarrativeService(_narrativeService);
_routeService = Mockito.mock(RouteService.class);
_service.setRouteService(_routeService);
_routeBeanService = Mockito.mock(RouteBeanService.class);
_service.setRouteBeanService(_routeBeanService);
}
@Test
public void testGetStopForId() {
AgencyAndId stopId = new AgencyAndId("29", "1109");
StopEntryImpl stopEntry = new StopEntryImpl(stopId, 47.1, -122.1);
Mockito.when(_transitGraphDao.getStopEntryForId(stopId)).thenReturn(
stopEntry);
StopNarrative.Builder builder = StopNarrative.builder();
builder.setCode("1109-b");
builder.setDescription("stop description");
builder.setLocationType(0);
builder.setName("stop name");
builder.setUrl("http://some/url");
builder.setDirection("N");
StopNarrative stop = builder.create();
Mockito.when(_narrativeService.getStopForId(stopId)).thenReturn(stop);
AgencyAndId routeId = new AgencyAndId("1", "route");
Set<AgencyAndId> routeIds = new HashSet<AgencyAndId>();
routeIds.add(routeId);
Mockito.when(_routeService.getRouteCollectionIdsForStop(stopId)).thenReturn(
routeIds);
RouteBean.Builder routeBuilder = RouteBean.builder();
routeBuilder.setId(AgencyAndIdLibrary.convertToString(routeId));
RouteBean route = routeBuilder.create();
Mockito.when(_routeBeanService.getRouteForId(routeId)).thenReturn(route);
StopBean stopBean = _service.getStopForId(stopId);
assertNotNull(stopBean);
assertEquals(stopId.toString(), stopBean.getId());
assertEquals(stop.getName(), stopBean.getName());
assertEquals(stopEntry.getStopLat(), stopBean.getLat(), 0.0);
assertEquals(stopEntry.getStopLon(), stopBean.getLon(), 0.0);
assertEquals(stop.getCode(), stopBean.getCode());
assertEquals(stop.getLocationType(), stopBean.getLocationType());
List<RouteBean> routes = stopBean.getRoutes();
assertEquals(1, routes.size());
assertSame(route, routes.get(0));
}
}