1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 package com.gisgraphy.webapp.action;
24
25 import static org.junit.Assert.assertEquals;
26
27 import java.util.ArrayList;
28 import java.util.List;
29
30 import org.easymock.classextension.EasyMock;
31 import org.junit.Before;
32 import org.junit.Test;
33
34 import com.gisgraphy.domain.geoloc.service.fulltextsearch.FulltextQuery;
35 import com.gisgraphy.domain.geoloc.service.fulltextsearch.IFullTextSearchEngine;
36 import com.gisgraphy.domain.valueobject.FulltextResultsDto;
37 import com.gisgraphy.domain.valueobject.SolrResponseDto;
38
39 public class DisplayFeatureActionTest {
40
41 DisplayFeatureAction action;
42 List<SolrResponseDto> results;
43 IFullTextSearchEngine mockSearchEngine;
44 FulltextResultsDto mockResultDTO;
45
46 @Before
47 public void setup() {
48 results = new ArrayList<SolrResponseDto>();
49 action = new DisplayFeatureAction();
50 mockSearchEngine = EasyMock.createMock(IFullTextSearchEngine.class);
51 action.setFullTextSearchEngine(mockSearchEngine);
52 mockResultDTO = EasyMock.createMock(FulltextResultsDto.class);
53 EasyMock.expect(mockResultDTO.getResults()).andReturn(results);
54 }
55
56 @Test
57 public void getPreferedNameShouldReturnFullyQualyfiedNameIfExists()
58 throws Exception {
59 action.setFeatureId("3");
60 String fullyQualifedName = "fully";
61 SolrResponseDto mockSolrResponseDto = EasyMock
62 .createMock(SolrResponseDto.class);
63 EasyMock.expect(mockSolrResponseDto.getFully_qualified_name())
64 .andReturn(fullyQualifedName);
65 EasyMock.replay(mockSolrResponseDto);
66 results.add(mockSolrResponseDto);
67 EasyMock.replay(mockResultDTO);
68 EasyMock.expect(
69 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
70 .anyObject())).andReturn(mockResultDTO);
71 EasyMock.replay(mockSearchEngine);
72 action.execute();
73 assertEquals(fullyQualifedName, action.getPreferedName());
74 }
75
76 @Test
77 public void getPreferedNameShouldReturnNameWhenNoFullyQualyfiedNameExists()
78 throws Exception {
79 action.setFeatureId("3");
80 String fullyQualifedName = "";
81 String name = "the name";
82 SolrResponseDto mockSolrResponseDto = EasyMock
83 .createMock(SolrResponseDto.class);
84 EasyMock.expect(mockSolrResponseDto.getFully_qualified_name())
85 .andReturn(fullyQualifedName);
86 EasyMock.expect(mockSolrResponseDto.getName()).andReturn(name);
87 EasyMock.replay(mockSolrResponseDto);
88 results.add(mockSolrResponseDto);
89 EasyMock.replay(mockResultDTO);
90 EasyMock.expect(
91 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
92 .anyObject())).andReturn(mockResultDTO);
93 EasyMock.replay(mockSearchEngine);
94 action.execute();
95 assertEquals(name, action.getPreferedName());
96 }
97
98 @Test
99 public void executeWithOutFeatureId() throws Exception {
100 SolrResponseDto mockSolrResponseDto = EasyMock
101 .createMock(SolrResponseDto.class);
102 EasyMock.replay(mockSolrResponseDto);
103 results.add(mockSolrResponseDto);
104 EasyMock.replay(mockResultDTO);
105 EasyMock.expect(
106 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
107 .anyObject())).andReturn(mockResultDTO);
108 EasyMock.replay(mockSearchEngine);
109 String returnAction = action.execute();
110 assertEquals(DisplayFeatureAction.ERROR, returnAction);
111 assertEquals(DisplayFeatureAction.ERROR_REF_REQUIRED_FEATURE_ID, action
112 .getErrorRef());
113 }
114
115 @Test
116 public void executeWithNonNumericFeatureId() throws Exception {
117 action.setFeatureId("a");
118 SolrResponseDto mockSolrResponseDto = EasyMock
119 .createMock(SolrResponseDto.class);
120 EasyMock.replay(mockSolrResponseDto);
121 results.add(mockSolrResponseDto);
122 EasyMock.replay(mockResultDTO);
123 EasyMock.expect(
124 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
125 .anyObject())).andReturn(mockResultDTO);
126 EasyMock.replay(mockSearchEngine);
127 String returnAction = action.execute();
128 assertEquals(DisplayFeatureAction.ERROR, returnAction);
129 assertEquals(DisplayFeatureAction.ERROR_REF_NON_NUMERIC_FEATUREID,
130 action.getErrorRef());
131 }
132
133 @Test
134 public void executeWithNonUniqueResult() throws Exception {
135 action.setFeatureId("1");
136 SolrResponseDto mockSolrResponseDto = EasyMock
137 .createMock(SolrResponseDto.class);
138 EasyMock.replay(mockSolrResponseDto);
139 results.add(mockSolrResponseDto);
140 results.add(mockSolrResponseDto);
141 EasyMock.replay(mockResultDTO);
142 EasyMock.expect(
143 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
144 .anyObject())).andReturn(mockResultDTO);
145 EasyMock.replay(mockSearchEngine);
146 String returnAction = action.execute();
147 assertEquals(DisplayFeatureAction.ERROR, returnAction);
148 assertEquals(DisplayFeatureAction.ERROR_REF_NON_UNIQUE_RESULT, action
149 .getErrorRef());
150 }
151
152 @Test
153 public void executeWithNoResult() throws Exception {
154 action.setFeatureId("1");
155 EasyMock.replay(mockResultDTO);
156 String errorMessage = "Message";
157 EasyMock.expect(
158 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
159 .anyObject())).andThrow(
160 new RuntimeException(errorMessage));
161 EasyMock.replay(mockSearchEngine);
162 String returnAction = action.execute();
163 assertEquals(DisplayFeatureAction.ERROR, returnAction);
164 assertEquals(DisplayFeatureAction.ERROR_REF_GENERAL_ERROR, action
165 .getErrorRef());
166 assertEquals(errorMessage, action.getErrorMessage());
167 }
168
169 @Test
170 public void execute() throws Exception {
171 action.setFeatureId("1");
172 SolrResponseDto mockSolrResponseDto = EasyMock
173 .createMock(SolrResponseDto.class);
174 EasyMock.replay(mockSolrResponseDto);
175 results.add(mockSolrResponseDto);
176 EasyMock.replay(mockResultDTO);
177 EasyMock.expect(
178 mockSearchEngine.executeQuery((FulltextQuery) EasyMock
179 .anyObject())).andReturn(mockResultDTO);
180 EasyMock.replay(mockSearchEngine);
181 String returnAction = action.execute();
182 assertEquals(DisplayFeatureAction.SUCCESS, returnAction);
183 assertEquals("", action.getErrorRef());
184 assertEquals(mockSolrResponseDto, action.getResult());
185 assertEquals("", action.getErrorMessage());
186 }
187
188 }