/******************************************************************************* * Gisgraphy Project * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA * * Copyright 2008 Gisgraphy project * David Masclet <davidmasclet@gisgraphy.com> * * *******************************************************************************/ package com.gisgraphy.webapp.action; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.easymock.EasyMock; import org.junit.Assert; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import com.gisgraphy.domain.valueobject.StreetSearchResultsDto; import com.gisgraphy.street.IStreetSearchEngine; import com.gisgraphy.street.StreetSearchQuery; import com.gisgraphy.street.StreetSearchQueryHttpBuilder; import com.gisgraphy.street.StreetType; public class StreetSearchActionTest { @Test public void isDisplayResultsShouldReturnTrueIfThereIsSomeResults(){ StreetSearchAction streetSearchAction = new StreetSearchAction(); Assert.assertFalse("isDisplayResults sould be false if there is no results to display",streetSearchAction.isDisplayResults()); } @Test public void getStreetTypesShouldReturnStreetTypeEnumValues(){ StreetSearchAction streetSearchAction = new StreetSearchAction(); Assert.assertArrayEquals(StreetType.values(),streetSearchAction.getStreetTypes()); } @Test public void searchpopupShouldReturnCorrectView() throws Exception{ final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(StreetSearchQuery.LAT_PARAMETER, "3.2"); request.addParameter(StreetSearchQuery.LONG_PARAMETER, "1.5"); StreetSearchAction streetSearchAction = new StreetSearchAction(){ @Override protected HttpServletRequest getRequest() { return request; } }; IStreetSearchEngine streetSearchEngine = EasyMock.createMock(IStreetSearchEngine.class); EasyMock.expect(streetSearchEngine.executeQuery(StreetSearchQueryHttpBuilder.getInstance().buildFromHttpRequest(request))).andReturn(new StreetSearchResultsDto()); EasyMock.replay(streetSearchEngine); streetSearchAction.setStreetSearchEngine(streetSearchEngine); Assert.assertEquals(SearchAction.POPUP_VIEW,streetSearchAction.searchpopup()); } @Test public void searchShouldReturnCorrectView() throws Exception{ final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(StreetSearchQuery.LAT_PARAMETER, "3.2"); request.addParameter(StreetSearchQuery.LONG_PARAMETER, "1.5"); StreetSearchAction streetSearchAction = new StreetSearchAction(){ @Override protected HttpServletRequest getRequest() { return request; } }; IStreetSearchEngine streetSearchEngine = EasyMock.createMock(IStreetSearchEngine.class); EasyMock.expect(streetSearchEngine.executeQuery(StreetSearchQueryHttpBuilder.getInstance().buildFromHttpRequest(request))).andReturn(new StreetSearchResultsDto()); EasyMock.replay(streetSearchEngine); streetSearchAction.setStreetSearchEngine(streetSearchEngine); Assert.assertEquals(SearchAction.SUCCESS,streetSearchAction.search()); } @Test public void searchShouldSetErrorMassageIfAnErrorOccured() throws Exception{ final MockHttpServletRequest request = new MockHttpServletRequest(); request.addParameter(StreetSearchQuery.LAT_PARAMETER, "3.2"); request.addParameter(StreetSearchQuery.LONG_PARAMETER, "1.5"); StreetSearchAction streetSearchAction = new StreetSearchAction(){ @Override protected HttpServletRequest getRequest() { return request; } }; IStreetSearchEngine streetSearchEngine = EasyMock.createMock(IStreetSearchEngine.class); String errorMessage = "errorMessage"; EasyMock.expect(streetSearchEngine.executeQuery((StreetSearchQuery)EasyMock.anyObject())).andThrow(new RuntimeException(errorMessage)); EasyMock.replay(streetSearchEngine); streetSearchAction.setStreetSearchEngine(streetSearchEngine); Assert.assertEquals(SearchAction.SUCCESS,streetSearchAction.search()); Assert.assertEquals(errorMessage,streetSearchAction.getErrorMessage()); } @Test public void getNameOptionsShouldReturnCorrectValues(){ StreetSearchAction streetSearchAction = new StreetSearchAction(){ @Override public String getText(String textName) { if ("search.street.includeNoNameStreet".equals(textName)){ return "includeValue"; } if ("search.street.dont.includeNoNameStreet".equals(textName)){ return "notincludeValue"; } return null; } }; Map<String, String> nameOptions = streetSearchAction.getNameOptions(); Assert.assertEquals("includeValue", nameOptions.get("")); Assert.assertEquals("notincludeValue", nameOptions.get("%")); } }