View Javadoc

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 }