1 package org.cateproject.view.taxon;
2
3 import java.util.ArrayList;
4 import java.util.HashMap;
5 import java.util.List;
6 import java.util.Map;
7
8 import org.cateproject.view.CATEViewTest;
9 import org.junit.Test;
10 import org.springframework.web.servlet.ModelAndView;
11
12 import eu.etaxonomy.cdm.api.service.pager.Pager;
13 import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
14 import eu.etaxonomy.cdm.api.service.pager.impl.StringLabelPagerImpl;
15 import eu.etaxonomy.cdm.model.name.BotanicalName;
16 import eu.etaxonomy.cdm.model.name.NonViralName;
17 import eu.etaxonomy.cdm.model.taxon.Synonym;
18 import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
19 import eu.etaxonomy.cdm.model.taxon.Taxon;
20 import eu.etaxonomy.cdm.model.taxon.TaxonBase;
21 import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
22 import eu.etaxonomy.cdm.strategy.cache.name.INonViralNameCacheStrategy;
23
24 public class TaxonViewsTest extends CATEViewTest {
25
26 @Test
27 public void testSynonymsPage() {
28 ModelAndView modelAndView = new ModelAndView("taxon/synonyms");
29 modelAndView.addObject("object", dataSet.getTaxonBases().get(0));
30 final List<SynonymRelationship> results = new ArrayList<SynonymRelationship>();
31 results.addAll(((Taxon)dataSet.getTaxonBases().get(0)).getSynonymRelations());
32 Pager<SynonymRelationship> synonyms = new StringLabelPagerImpl<SynonymRelationship>(0, 21, 30, results) {
33 protected String getLabel(Integer i) {
34 Synonym s = results.get(i).getSynonym();
35 return s.getName().getTitleCache();
36 }
37 };
38
39 modelAndView.addObject("synonyms",synonyms);
40 outputMock(modelAndView,"target/generated-sources/mock/taxon/synonyms.html");
41 }
42
43 @Test
44 public void testSynonymsByTypePage() {
45 ModelAndView modelAndView = new ModelAndView("taxon/synonyms");
46 modelAndView.addObject("object", dataSet.getTaxonBases().get(0));
47 final List<SynonymRelationship> results = new ArrayList<SynonymRelationship>();
48 results.addAll(((Taxon)dataSet.getTaxonBases().get(0)).getSynonymRelations());
49 Pager<SynonymRelationship> synonyms = new StringLabelPagerImpl<SynonymRelationship>(0, 21, 6, results) {
50 protected String getLabel(Integer i) {
51 Synonym s = results.get(i).getSynonym();
52 return s.getTitleCache();
53 }
54 };
55
56 modelAndView.addObject("synonyms",synonyms);
57 modelAndView.addObject("type",dataSet.getTerms().get(12));
58 outputMock(modelAndView,"target/generated-sources/mock/taxon/synonyms_taxonomic.html");
59 }
60
61 @Test
62 public void testRelatedTaxaPage() {
63 ModelAndView modelAndView = new ModelAndView("taxon/toTaxonRelationships");
64 modelAndView.addObject("object", dataSet.getTaxonBases().get(1));
65 final List<TaxonRelationship> results = new ArrayList<TaxonRelationship>();
66 results.addAll(((Taxon)dataSet.getTaxonBases().get(1)).getRelationsToThisTaxon());
67
68 Pager<TaxonRelationship> taxa = new StringLabelPagerImpl<TaxonRelationship>(0, 3, 30, results) {
69 protected String getLabel(Integer i) {
70 NonViralName n = (NonViralName)results.get(i).getFromTaxon().getName();
71 return n.getSpecificEpithet();
72 }
73 };
74
75 modelAndView.addObject("relatedTaxa",taxa);
76 modelAndView.addObject("type",dataSet.getTerms().get(1));
77
78 outputMock(modelAndView,"target/generated-sources/mock/taxon/toTaxonRelationships.html");
79 }
80
81 @Test
82 public void testIndex() {
83 ModelAndView modelAndView = new ModelAndView("taxon/index");
84 modelAndView.addObject("object",dataSet.getTaxonBases().get(0));
85
86
87 outputMock(modelAndView,"target/generated-sources/mock/taxon/index.html");
88 }
89
90 @Test
91 public void testIndexWithSynonym() {
92 ModelAndView modelAndView = new ModelAndView("taxon/index");
93 modelAndView.addObject("object",dataSet.getTaxonBases().get(5));
94
95 outputMock(modelAndView,"target/generated-sources/mock/taxon/index_synonym.html");
96 }
97
98 @Test
99 public void testListOfSynonyms() {
100 ModelAndView modelAndView = new ModelAndView("taxon/list");
101 final List<Synonym> results = (List)dataSet.getTaxonBases().subList(4, 25);
102 Pager<Synonym> synonyms = new StringLabelPagerImpl<Synonym>(0, 21, 30, results){
103 protected String getLabel(Integer i) {
104 Synonym s = results.get(i);
105 return s.getTitleCache();
106 }
107 };
108
109 modelAndView.addObject("pager",synonyms);
110 modelAndView.addObject("class",Synonym.class);
111
112 outputMock(modelAndView,"target/generated-sources/mock/taxon/list_synonyms.html");
113 }
114
115 @Test
116 public void testListOfTaxa() {
117 ModelAndView modelAndView = new ModelAndView("taxon/list");
118 final List<Taxon> results = (List)dataSet.getTaxonBases().subList(0, 4);
119 Pager<Taxon> taxa = new DefaultPagerImpl<Taxon>(0, 4, 30, results){
120 protected String getLabel(Integer i) {
121 Taxon t = results.get(i);
122 return t.getTitleCache();
123 }
124 };
125
126 modelAndView.addObject("pager",taxa);
127 modelAndView.addObject("class",Taxon.class);
128
129 outputMock(modelAndView,"target/generated-sources/mock/taxon/list_accepted.html");
130 }
131
132 @Test
133 public void testList() {
134 ModelAndView modelAndView = new ModelAndView("taxon/list");
135 final List<TaxonBase> all = dataSet.getTaxonBases();
136 Pager<TaxonBase> pager = new DefaultPagerImpl<TaxonBase>(0, 25, 30, all){
137 protected String getLabel(Integer i) {
138 TaxonBase t = all.get(i);
139 return t.getTitleCache();
140 }
141 };
142
143 modelAndView.addObject("pager",pager);
144
145 outputMock(modelAndView,"target/generated-sources/mock/taxon/list.html");
146 }
147
148 @Test
149 public void testListAtom() {
150 ModelAndView modelAndView = new ModelAndView("taxon/list");
151 final List<TaxonBase> all = dataSet.getTaxonBases();
152 Pager<TaxonBase> pager = new DefaultPagerImpl<TaxonBase>(0, 25, 5, all){
153 protected String getLabel(Integer i) {
154 TaxonBase t = all.get(i);
155 return t.getTitleCache();
156 }
157 };
158
159 modelAndView.addObject("pager",pager);
160
161 outputSingleRequest(modelAndView,"target/generated-sources/mock/taxon/list.atom");
162 }
163
164 @Test
165 public void testEditTaxon() {
166 Map<String,Object> referenceData = new HashMap<String,Object>();
167 referenceData.put("flowExecutionUrl", "/taxon/edit?execution=e1s1");
168 referenceData.put("parent",dataSet.getTaxonBases().get(0));
169 outputForm("taxon/edit/edit",
170 "target/generated-sources/mock/taxon/edit/edit.html",
171 "object",
172 Taxon.class,
173 referenceData,
174 "GET",
175 null,
176 new HashMap<String,String>());
177 }
178
179 @Test
180 public void testConfirmRemoveSynonym() {
181 Map<String,Object> referenceData = new HashMap<String,Object>();
182 referenceData.put("flowExecutionUrl", "/taxon/delete?execution=e1s1");
183 referenceData.put("object",dataSet.getTaxonBases().get(5));
184 outputForm("taxon/delete/confirmRemoveSynonym",
185 "target/generated-sources/mock/taxon/delete/confirmRemoveSynonym.html",
186 "object",
187 Synonym.class,
188 referenceData,
189 "GET",
190 null,
191 new HashMap<String,String>());
192 }
193
194 @Test
195 public void testSummaryPage() {
196 ModelAndView modelAndView = new ModelAndView("taxon/summary");
197
198 List<Object[]> taxaSummary = new ArrayList<Object[]>();
199 taxaSummary.add(new Object[] {4484 ,"Taxon"});
200 taxaSummary.add(new Object[] {3473,"Synonym"});
201 modelAndView.addObject("byClass", taxaSummary);
202
203 List<Object[]> nameByGenus = new ArrayList<Object[]>();
204 nameByGenus.add(new Object[] {891,"Manduca"});
205 nameByGenus.add(new Object[] {487,"Acherontia"});
206 nameByGenus.add(new Object[] {288,"Atropos"});
207 nameByGenus.add(new Object[] {191,"Aus"});
208 nameByGenus.add(new Object[] {120,"Smerinthus"});
209 nameByGenus.add(new Object[] {104,"Acosmeryx"});
210 nameByGenus.add(new Object[] {97,"Agrius"});
211 nameByGenus.add(new Object[] {75,"Akbesia"});
212 nameByGenus.add(new Object[] {72,"Brachyglossa"});
213 nameByGenus.add(new Object[] {70,"Callambulyx"});
214 nameByGenus.add(new Object[] {68,"Clarina"});
215 nameByGenus.add(new Object[] {56,"Cryptocoryne"});
216 nameByGenus.add(new Object[] {48,"Daphnis"});
217 modelAndView.addObject("byGenusOrUninomial", nameByGenus);
218
219 List<Object[]> taxaOverTime = new ArrayList<Object[]>();
220 taxaOverTime.add(new Object[] {2002,12,1});
221 taxaOverTime.add(new Object[] {2003,4,1});
222 taxaOverTime.add(new Object[] {2003,8,1});
223 taxaOverTime.add(new Object[] {2007,12,3});
224 taxaOverTime.add(new Object[] {2008,1,3});
225 taxaOverTime.add(new Object[] {2008,2,3});
226 taxaOverTime.add(new Object[] {2008,3,3});
227 taxaOverTime.add(new Object[] {2008,4,1});
228 taxaOverTime.add(new Object[] {2008,5,2});
229 taxaOverTime.add(new Object[] {2008,6,2});
230 taxaOverTime.add(new Object[] {2008,7,3});
231 taxaOverTime.add(new Object[] {2008,8,1});
232 taxaOverTime.add(new Object[] {2008,9,2});
233 taxaOverTime.add(new Object[] {2008,10,2});
234 taxaOverTime.add(new Object[] {2008,11,1});
235 taxaOverTime.add(new Object[] {2008,12,4});
236 taxaOverTime.add(new Object[] {2009,11,2});
237 taxaOverTime.add(new Object[] {2009,12,3});
238
239
240 outputMock(modelAndView,"target/generated-sources/mock/taxon/Summary.html");
241 }
242 }