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 }