1 package org.cateproject.controller.taxon;
2
3 import java.util.ArrayList;
4 import java.util.List;
5 import java.util.UUID;
6
7
8 import org.cateproject.controller.speciespage.SpeciesPageController;
9 import org.cateproject.model.WebRevision;
10 import org.cateproject.service.WebRevisionService;
11 import org.cateproject.service.enumeration.NamedAreas;
12 import org.easymock.EasyMock;
13 import org.junit.Assert;
14 import org.junit.Before;
15 import org.junit.Test;
16 import org.springframework.mock.web.MockHttpServletRequest;
17 import org.springframework.mock.web.MockHttpServletResponse;
18 import org.springframework.test.web.ModelAndViewAssert;
19 import org.springframework.web.servlet.ModelAndView;
20 import org.unitils.UnitilsJUnit4;
21 import org.unitils.easymock.annotation.Mock;
22 import org.unitils.inject.annotation.InjectInto;
23 import org.unitils.inject.annotation.TestedObject;
24
25 import eu.etaxonomy.cdm.api.service.ITaxonService;
26 import eu.etaxonomy.cdm.api.service.pager.Pager;
27 import eu.etaxonomy.cdm.model.description.FeatureTree;
28 import eu.etaxonomy.cdm.model.location.NamedArea;
29 import eu.etaxonomy.cdm.model.name.Rank;
30 import eu.etaxonomy.cdm.model.reference.WebPage;
31 import eu.etaxonomy.cdm.model.taxon.Taxon;
32 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
33
34 public class TaxonRedirectorTest extends UnitilsJUnit4 {
35
36 @Mock
37 @InjectInto(property = "taxonService")
38 ITaxonService taxonService;
39
40 // @Mock
41 // @InjectInto(property = "namedAreas")
42 // NamedAreas namedAreas;
43
44 @Mock
45 @InjectInto(property = "webRevisionService")
46 WebRevisionService webRevisionService;
47
48 @TestedObject
49 private SpeciesPageController taxonRedirector;
50
51 private Pager<TaxonBase> result;
52 private List<TaxonBase> records;
53 private Taxon taxon;
54 private NamedArea geoScope;
55 private WebRevision webRevision;
56 private List<FeatureTree> taxonFeatureTrees;
57 private MockHttpServletRequest request;
58 private MockHttpServletResponse response;
59
60 @Before
61 public void setUp() {
62 taxonRedirector = new SpeciesPageController();
63 taxonService = EasyMock.createMock(ITaxonService.class);
64 // namedAreas = EasyMock.createMock(NamedAreas.class);
65 webRevisionService = EasyMock.createMock(WebRevisionService.class);
66 result = EasyMock.createMock(Pager.class);
67 taxon = Taxon.NewInstance(null, null);
68 taxon.setUuid(UUID.fromString("d7a99760-6aba-11dd-ad8b-0800200c9a66"));
69 records = new ArrayList<TaxonBase>();
70 records.add(taxon);
71 geoScope = new NamedArea();
72 geoScope.setUuid(UUID.fromString("f8e40a70-6acc-11dd-ad8b-0800200c9a66"));
73 taxonFeatureTrees = new ArrayList<FeatureTree>();
74 FeatureTree featureTree = FeatureTree.NewInstance();
75 featureTree.setUuid(UUID.fromString("cd1a8490-6acd-11dd-ad8b-0800200c9a66"));
76 taxonFeatureTrees.add(featureTree);
77
78 webRevision = new WebRevision();
79 webRevision.setCurrentConsensus(WebPage.NewInstance());
80 webRevision.setTaxonTopics(taxonFeatureTrees);
81
82 request = new MockHttpServletRequest();
83 response = new MockHttpServletResponse();
84 }
85
86 @Test
87 public void testMatchTrinomial() throws Exception {
88 // request.setServletPath("/taxonomy/Arum/italicum/canariense/Index.do");
89 //
90 // EasyMock.expect(taxonService.findTaxaByName(EasyMock.eq(Taxon.class),EasyMock.eq("Arum"),(String)EasyMock.isNull(),EasyMock.eq("italicum"),EasyMock.eq("canariense"),(Rank)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull())).andReturn(result);
91 // EasyMock.expect(result.getCount()).andReturn(1);
92 // EasyMock.expect(result.getRecords()).andReturn(records);
93 // EasyMock.expect(namedAreas.GLOBAL()).andReturn(geoScope);
94 // EasyMock.expect(webRevisionService.getWebRevision()).andReturn(webRevision).times(2);
95 //
96 // EasyMock.replay(taxonService, namedAreas, webRevisionService,result);
97 //
98 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
99 //
100 // EasyMock.verify(taxonService, namedAreas, webRevisionService,result);
101 //
102 // ModelAndViewAssert.assertViewName(modelAndView,"redirect:/description/TextData.do");
103 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "taxon", "d7a99760-6aba-11dd-ad8b-0800200c9a66");
104 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "geoScope", "f8e40a70-6acc-11dd-ad8b-0800200c9a66");
105 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree", "cd1a8490-6acd-11dd-ad8b-0800200c9a66");
106
107 }
108
109 // @Test
110 // public void testMatchBinomial() throws Exception {
111 // request.setServletPath("/taxonomy/Arum/italicum/Index.do");
112 //
113 // EasyMock.expect(taxonService.findTaxaByName(EasyMock.eq(Taxon.class),EasyMock.eq("Arum"),(String)EasyMock.isNull(),EasyMock.eq("italicum"),(String)EasyMock.isNull(),(Rank)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull())).andReturn(result);
114 // EasyMock.expect(result.getCount()).andReturn(1);
115 // EasyMock.expect(result.getRecords()).andReturn(records);
116 // EasyMock.expect(namedAreas.GLOBAL()).andReturn(geoScope);
117 // EasyMock.expect(webRevisionService.getWebRevision()).andReturn(webRevision).times(2);
118 //
119 // EasyMock.replay(taxonService, namedAreas, webRevisionService,result);
120 //
121 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
122 //
123 // EasyMock.verify(taxonService, namedAreas, webRevisionService,result);
124 //
125 // ModelAndViewAssert.assertViewName(modelAndView,"redirect:/description/TextData.do");
126 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "taxon", "d7a99760-6aba-11dd-ad8b-0800200c9a66");
127 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "geoScope", "f8e40a70-6acc-11dd-ad8b-0800200c9a66");
128 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree", "cd1a8490-6acd-11dd-ad8b-0800200c9a66");
129 // }
130 //
131 // @Test
132 // public void testMatchUninomial() throws Exception {
133 // request.setServletPath("/taxonomy/Arum/Index.do");
134 //
135 // EasyMock.expect(taxonService.findTaxaByName(EasyMock.eq(Taxon.class),EasyMock.eq("Arum"),(String)EasyMock.isNull(),(String)EasyMock.isNull(),(String)EasyMock.isNull(),(Rank)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull())).andReturn(result);
136 // EasyMock.expect(result.getCount()).andReturn(1);
137 // EasyMock.expect(result.getRecords()).andReturn(records);
138 // EasyMock.expect(namedAreas.GLOBAL()).andReturn(geoScope);
139 // EasyMock.expect(webRevisionService.getWebRevision()).andReturn(webRevision).times(2);
140 //
141 // EasyMock.replay(taxonService, namedAreas, webRevisionService,result);
142 //
143 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
144 //
145 // EasyMock.verify(taxonService, namedAreas, webRevisionService,result);
146 //
147 // ModelAndViewAssert.assertViewName(modelAndView,"redirect:/description/TextData.do");
148 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "taxon", "d7a99760-6aba-11dd-ad8b-0800200c9a66");
149 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "geoScope", "f8e40a70-6acc-11dd-ad8b-0800200c9a66");
150 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree", "cd1a8490-6acd-11dd-ad8b-0800200c9a66");
151 // }
152 //
153 // @Test
154 // public void testMatchSpeciesWithDash() throws Exception {
155 // request.setServletPath("/taxonomy/Anthurium/austin-smithii/Index.do");
156 //
157 // EasyMock.expect(taxonService.findTaxaByName(EasyMock.eq(Taxon.class),EasyMock.eq("Anthurium"),(String)EasyMock.isNull(),EasyMock.eq("austin-smithii"),(String)EasyMock.isNull(),(Rank)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull())).andReturn(result);
158 // EasyMock.expect(result.getCount()).andReturn(1);
159 // EasyMock.expect(result.getRecords()).andReturn(records);
160 // EasyMock.expect(namedAreas.GLOBAL()).andReturn(geoScope);
161 // EasyMock.expect(webRevisionService.getWebRevision()).andReturn(webRevision).times(2);
162 //
163 // EasyMock.replay(taxonService, namedAreas, webRevisionService,result);
164 //
165 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
166 //
167 // EasyMock.verify(taxonService, namedAreas, webRevisionService,result);
168 //
169 // ModelAndViewAssert.assertViewName(modelAndView,"redirect:/description/TextData.do");
170 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "taxon", "d7a99760-6aba-11dd-ad8b-0800200c9a66");
171 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "geoScope", "f8e40a70-6acc-11dd-ad8b-0800200c9a66");
172 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree", "cd1a8490-6acd-11dd-ad8b-0800200c9a66");
173 // }
174 //
175 // @Test
176 // public void testMatchSubspeciesWithDash() throws Exception {
177 // request.setServletPath("/taxonomy/Arisaema/consanguineum/kelung-insulare/Index.do");
178 //
179 // EasyMock.expect(taxonService.findTaxaByName(EasyMock.eq(Taxon.class),EasyMock.eq("Arisaema"),(String)EasyMock.isNull(),EasyMock.eq("consanguineum"),EasyMock.eq("kelung-insulare"),(Rank)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull())).andReturn(result);
180 // EasyMock.expect(result.getCount()).andReturn(1);
181 // EasyMock.expect(result.getRecords()).andReturn(records);
182 // EasyMock.expect(namedAreas.GLOBAL()).andReturn(geoScope);
183 // EasyMock.expect(webRevisionService.getWebRevision()).andReturn(webRevision).times(2);
184 //
185 // EasyMock.replay(taxonService, namedAreas, webRevisionService,result);
186 //
187 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
188 //
189 // EasyMock.verify(taxonService, namedAreas, webRevisionService,result);
190 //
191 // ModelAndViewAssert.assertViewName(modelAndView,"redirect:/description/TextData.do");
192 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "taxon", "d7a99760-6aba-11dd-ad8b-0800200c9a66");
193 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "geoScope", "f8e40a70-6acc-11dd-ad8b-0800200c9a66");
194 // ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree", "cd1a8490-6acd-11dd-ad8b-0800200c9a66");
195 // }
196 //
197 // @Test
198 // public void testMatchNone() throws Exception {
199 // request.setServletPath("/taxonomy/index.html");
200 //
201 // EasyMock.replay(taxonService);
202 //
203 // try {
204 // ModelAndView modelAndView = taxonRedirector.handleRequest(request, response);
205 // } catch(Exception e) {
206 // Assert.assertEquals(e.getMessage(),"TaxonRedirector.pageNotFound");
207 // }
208 //
209 // EasyMock.verify(taxonService);
210 // }
211 }