View Javadoc

1   package org.cateproject.view;
2   
3   import java.util.ArrayList;
4   import java.util.HashMap;
5   import java.util.HashSet;
6   import java.util.Iterator;
7   import java.util.List;
8   import java.util.Map;
9   
10  import org.cateproject.controller.GenericController;
11  import org.cateproject.controller.captcha.CaptchaChallenge;
12  import org.cateproject.controller.description.FeatureNodeWithLevel;
13  import org.cateproject.controller.speciespage.SpeciesPage;
14  import org.cateproject.controller.user.RegistrationForm;
15  import org.junit.Test;
16  import org.springframework.validation.Errors;
17  import org.springframework.validation.Validator;
18  import org.springframework.web.multipart.MaxUploadSizeExceededException;
19  import org.springframework.web.servlet.ModelAndView;
20  import org.springframework.webflow.execution.repository.snapshot.SnapshotNotFoundException;
21  
22  import eu.etaxonomy.cdm.api.service.pager.Pager;
23  import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
24  import eu.etaxonomy.cdm.api.service.pager.impl.StringLabelPagerImpl;
25  import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
26  import eu.etaxonomy.cdm.model.description.Feature;
27  import eu.etaxonomy.cdm.model.description.FeatureNode;
28  import eu.etaxonomy.cdm.model.description.FeatureTree;
29  import eu.etaxonomy.cdm.model.description.TaxonDescription;
30  import eu.etaxonomy.cdm.model.description.TaxonNameDescription;
31  import eu.etaxonomy.cdm.model.description.TextData;
32  import eu.etaxonomy.cdm.model.name.BotanicalName;
33  import eu.etaxonomy.cdm.model.name.HybridRelationship;
34  import eu.etaxonomy.cdm.model.name.NameRelationship;
35  import eu.etaxonomy.cdm.model.name.NonViralName;
36  import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
37  import eu.etaxonomy.cdm.model.taxon.Synonym;
38  import eu.etaxonomy.cdm.model.taxon.SynonymRelationship;
39  import eu.etaxonomy.cdm.model.taxon.Taxon;
40  import eu.etaxonomy.cdm.model.taxon.TaxonRelationship;
41  
42  
43  
44  public class IndexPagesTest extends CATEViewTest {
45  	public static String[] descriptions = {"Index","Nomenclature","Taxonomy","Description","Discussion"}; 
46  
47  	@Test
48  	public void testIndexPage()  {
49  		ModelAndView modelAndView = new ModelAndView("index");
50  		String staticResponse = "<h1 class=\"article-heading\">CATE Mock web pages</h1><p class=\"paragraph\">These demonstrate mock pages with some working functionality. Some links on these pages will not work, or will take you to a page different from what you might have expected</p>"
51                  ;
52  		
53  		modelAndView.addObject( "static", staticResponse );
54  		
55  		outputMock(modelAndView,"target/generated-sources/mock/index.html");
56  	}
57  	
58  	@Test
59  	public void testHelpPage()  {
60  		ModelAndView modelAndView = new ModelAndView("help/page");
61  		String helpPage = "/help/javahelp/ch01.html";
62  		
63  		modelAndView.addObject( "helpPage", helpPage );
64  		
65  		outputMock(modelAndView,"target/generated-sources/mock/help/page.html");
66  	}
67  
68  	
69  	@Test
70  	public void testLogonPage() {
71  	    ModelAndView modelAndView = new ModelAndView("logon");
72  	
73  	    outputMock(modelAndView,"target/generated-sources/mock/logon.html");
74      }
75  	
76  	@Test
77  	public void testXsltStylesheetPage() {
78  		
79  	    ModelAndView modelAndView = new ModelAndView("human");
80  	
81  	    outputSingleRequest(modelAndView,"target/generated-sources/mock/human.xsl");
82      }
83  	
84  	@Test
85  	public void testRegistrationPage() {
86  		CaptchaChallenge captchaChallenge = new CaptchaChallenge();
87  		String captchaId = java.util.UUID.randomUUID().toString();
88  		String captchaQuestion = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";
89  		captchaChallenge.setId(captchaId);
90  		captchaChallenge.setQuestion(captchaQuestion);
91  
92  		Map<String,Object> referenceData = new HashMap<String,Object>();
93  		referenceData.put("captcha",captchaChallenge);
94  		outputForm("user/register",
95  				   "target/generated-sources/mock/user/register.html",
96  				   "registrationForm", 
97  				   RegistrationForm.class,
98  				   referenceData, 
99  				   "GET", 
100 				   null,
101 				   new HashMap<String,String>());
102 	}
103 	
104 	@Test
105 	public void testRegistrationPageWithErrors() {
106 		CaptchaChallenge captchaChallenge = new CaptchaChallenge();
107 		String captchaId = java.util.UUID.randomUUID().toString();
108 		String captchaQuestion = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit";
109 		captchaChallenge.setId(captchaId);
110 		captchaChallenge.setQuestion(captchaQuestion);
111 
112 		Map<String,Object> referenceData = new HashMap<String,Object>();
113 		Map<String,String> postValues = new HashMap<String,String>();
114 		postValues.put("emailAddress", "lorem.ipsum@dolor.sit.amet");
115 		postValues.put("surname", "Lorem");
116 		postValues.put("givenNames", "Sit Amet");
117 		referenceData.put("captcha",captchaChallenge);
118 		outputForm("user/register", 
119 				   "target/generated-sources/mock/user/register_withErrors.html",
120 				   "registrationForm", 
121 				   RegistrationForm.class,
122 				   referenceData,
123 				   "POST",
124 				   new MockRegistrationFormValidator(),
125 				   postValues);
126 	}
127 	
128 	public class MockRegistrationFormValidator implements Validator {
129 
130 		public boolean supports(Class clazz) {
131 			return clazz.equals(RegistrationForm.class);
132 		}
133 
134 		public void validate(Object target, Errors errors) {
135 			errors.rejectValue("captchaResponse","invalid.captchaResponse");
136 			errors.rejectValue("emailAddress","invalid.emailAddress");
137 			errors.rejectValue("confirmPassword","passwords.do.not.match");
138 		}
139 		
140 	}
141 	
142 	@Test
143 	public void testSnapshotNotFoundErrorPage() {
144 		ModelAndView modelAndView = new ModelAndView("exception/snapshotNotFound.html");
145 		
146 		modelAndView.addObject("exception",new SnapshotNotFoundException("e1"));
147 		
148 		outputMock(modelAndView,"target/generated-sources/mock/SnapshotNotFound.html");
149 	}
150 	
151 	
152     @Test
153     public void testDescriptionPage() {
154             ModelAndView modelAndView = new ModelAndView("speciesPage");
155             
156             SpeciesPage speciesPage = new SpeciesPage();
157             speciesPage.setTaxonBase(dataSet.getTaxonBases().get(0));    		
158     		      
159             TaxonDescription taxonDescription = ((Taxon)dataSet.getTaxonBases().get(0)).getDescriptions().iterator().next();
160             speciesPage.setTaxonDescription(taxonDescription);
161            
162             FeatureTree featureTree = dataSet.getFeatureTrees().get(0);
163             
164             speciesPage.setTaxonDescriptionSections(constructDescriptionElementsWithLevels(new ArrayList<DescriptionElementBase>(taxonDescription.getElements()),getFeatures(featureTree.getRoot(),new HashSet<Feature>()),featureTree));
165             
166             
167             final List<SynonymRelationship> results = new ArrayList<SynonymRelationship>();
168             results.addAll(((Taxon)dataSet.getTaxonBases().get(0)).getSynonymRelations());
169             Pager<SynonymRelationship> synonyms = new StringLabelPagerImpl<SynonymRelationship>(0, 21, 30, results) {
170                     protected String getLabel(Integer i) {
171                             Synonym s = results.get(i).getSynonym();
172                             return s.getName().getTitleCache();
173                     }
174             };
175             speciesPage.setSynonyms(synonyms);
176             
177             final List<TaxonRelationship> taxonResults = new ArrayList<TaxonRelationship>();
178             taxonResults.addAll(((Taxon)dataSet.getTaxonBases().get(1)).getRelationsToThisTaxon());
179             
180             Pager<TaxonRelationship> taxa = new StringLabelPagerImpl<TaxonRelationship>(0, 3, 30, taxonResults) {
181                     protected String getLabel(Integer i) {
182                             NonViralName n = (NonViralName)taxonResults.get(i).getFromTaxon().getName();
183                             return n.getSpecificEpithet();
184                     }
185             };
186             speciesPage.setTaxonRelations(taxa);
187          
188             speciesPage.setNameDescriptionSections(constructDescriptionElementsWithLevels(new ArrayList<DescriptionElementBase>(taxonDescription.getElements()),getFeatures(featureTree.getRoot(),new HashSet<Feature>()),featureTree));
189             speciesPage.setNameDescription(TaxonNameDescription.NewInstance(dataSet.getTaxonBases().get(0).getName()));
190             speciesPage.setOtherNameTopics(dataSet.getFeatureTrees().subList(1, 4));   
191             
192             speciesPage.setTypeDesignations(new DefaultPagerImpl<TypeDesignationBase>(0, 1, 30, dataSet.getTypeDesignations()));
193             List<NameRelationship> nameRelationships = new ArrayList<NameRelationship>();
194             nameRelationships.addAll(dataSet.getTaxonomicNames().get(3).getNameRelations());
195             
196             speciesPage.setNameRelationships(new DefaultPagerImpl<NameRelationship>(0, 2, 30, nameRelationships));
197             
198             List<HybridRelationship> hybridRelationships = new ArrayList<HybridRelationship>();
199             hybridRelationships.addAll(((BotanicalName)dataSet.getTaxonomicNames().get(28)).getChildRelationships());
200 
201             speciesPage.setHybridRelationships(new DefaultPagerImpl<HybridRelationship>(0, 2, 30, hybridRelationships));
202  
203             modelAndView.addObject(GenericController.RESOURCE_KEY,speciesPage);
204             outputMock(modelAndView,"target/generated-sources/mock/speciesPage.html");
205     }
206 }