View Javadoc

1   package org.cateproject.view.name;
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.controller.user.RegistrationForm;
9   import org.cateproject.view.CATEViewTest;
10  import org.cateproject.view.IndexPagesTest.MockRegistrationFormValidator;
11  import org.junit.Test;
12  import org.springframework.validation.Errors;
13  import org.springframework.validation.Validator;
14  import org.springframework.web.servlet.ModelAndView;
15  
16  import eu.etaxonomy.cdm.api.service.pager.Pager;
17  import eu.etaxonomy.cdm.api.service.pager.impl.DefaultPagerImpl;
18  import eu.etaxonomy.cdm.model.name.BotanicalName;
19  import eu.etaxonomy.cdm.model.name.HybridRelationship;
20  import eu.etaxonomy.cdm.model.name.NameRelationship;
21  import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
22  
23  public class NameViewsTest extends CATEViewTest {
24  	
25  	   @Test
26         public void testIndex() {
27  		   ModelAndView modelAndView = new ModelAndView("name/index");
28             modelAndView.addObject("object", dataSet.getTaxonomicNames().get(3));                
29             
30             outputMock(modelAndView,"target/generated-sources/mock/name/index.html");
31  	   }
32          
33          @Test
34          public void testTypeDesignations() {
35                  ModelAndView modelAndView = new ModelAndView("name/typeDesignations");
36                  modelAndView.addObject("object", dataSet.getTaxonomicNames().get(3));                
37          		
38                  Pager<TypeDesignationBase> typeDesignations = new DefaultPagerImpl<TypeDesignationBase>(0, 1, 30, dataSet.getTypeDesignations());
39                  modelAndView.addObject("pager",typeDesignations);
40                  
41                  outputMock(modelAndView,"target/generated-sources/mock/name/typeDesignations.html");
42          } 
43          
44          @Test
45          public void testNameRelations() {
46                  ModelAndView modelAndView = new ModelAndView("name/nameRelations");
47                  modelAndView.addObject("object", dataSet.getTaxonomicNames().get(3));                
48          		
49                  List<NameRelationship> nameRelationships = new ArrayList<NameRelationship>();
50                  nameRelationships.addAll(dataSet.getTaxonomicNames().get(3).getNameRelations());
51                  
52                  Pager<NameRelationship> result = new DefaultPagerImpl<NameRelationship>(0, 2, 30, nameRelationships);
53                  modelAndView.addObject("pager",result);
54                  
55                  outputMock(modelAndView,"target/generated-sources/mock/name/nameRelations.html");
56          } 
57          
58          @Test
59          public void testHybridRelationships() {
60                  ModelAndView modelAndView = new ModelAndView("name/hybridRelationships");
61                  modelAndView.addObject("object", dataSet.getTaxonomicNames().get(28));                
62          		
63                  List<HybridRelationship> hybridRelationships = new ArrayList<HybridRelationship>();
64                  hybridRelationships.addAll(((BotanicalName)dataSet.getTaxonomicNames().get(28)).getChildRelationships());
65                  
66                  Pager<HybridRelationship> result = new DefaultPagerImpl<HybridRelationship>(0, 2, 30, hybridRelationships);
67                  modelAndView.addObject("pager",result);
68                  
69                  outputMock(modelAndView,"target/generated-sources/mock/name/hybridRelationships.html");
70          } 
71          
72          @Test
73          public void testEditName() {
74          	Map<String,Object> referenceData = new HashMap<String,Object>();
75          	referenceData.put("flowExecutionUrl", "/name/edit?execution=e1s1");
76      		referenceData.put("parent",dataSet.getTaxonomicNames().get(0));
77          	outputForm("name/edit/edit",
78          			"target/generated-sources/mock/name/edit/edit.html",
79   				   "object", 
80   				   BotanicalName.class,
81   				   referenceData, 
82   				   "GET", 
83   				   null,
84   				   new HashMap<String,String>());
85          }
86          
87          @Test
88          public void testEditNameWithErrors() {
89          	Map<String,Object> referenceData = new HashMap<String,Object>();
90          	referenceData.put("flowExecutionUrl", "/name/edit?execution=e1s1");
91      		referenceData.put("parent",dataSet.getTaxonomicNames().get(0));
92      		Map<String,String> postValues = new HashMap<String,String>();
93      		postValues.put("genusOrUninomial", "lorem.ipsum@dolor.sit.amet");
94      		postValues.put("basionymAuthorTeam", "Lorem");
95      		postValues.put("nomenclaturalReference", "Sit Amet");
96          	outputForm("name/edit/edit",
97          			"target/generated-sources/mock/name/edit/edit_Errors.html",
98   				   "object", 
99   				   BotanicalName.class,
100  				   referenceData, 
101  				   "POST", 
102  				   new MockNameValidator(),
103  				   postValues);
104         }
105         
106         public class MockNameValidator implements Validator {
107 
108     		public boolean supports(Class clazz) {
109     			return clazz.equals(BotanicalName.class);
110     		}
111 
112     		public void validate(Object target, Errors errors) {
113     			errors.reject(null,"must not have the same uninomial, genus part, infra-generic epithet, specific epithet, infra-specific epithet, and rank as other names in the database.");
114     			errors.rejectValue("genusOrUninomial","NameValidator.genusOrUninomialNotEmpty","A name must have a uninomial or generic part");
115     		}
116     		
117     	}
118 }