1 package org.cateproject.controller.upload;
2
3 import static org.junit.Assert.assertEquals;
4 import static org.junit.Assert.assertFalse;
5 import static org.junit.Assert.assertNull;
6 import static org.junit.Assert.assertTrue;
7
8 import java.util.ArrayList;
9 import java.util.List;
10
11 import org.cateproject.controller.flow.action.AbstractUploadAction;
12 import org.cateproject.controller.flow.action.upload.HeaderPath;
13 import org.joda.time.Partial;
14 import org.junit.Test;
15
16 import eu.etaxonomy.cdm.model.agent.AgentBase;
17 import eu.etaxonomy.cdm.model.agent.Contact;
18 import eu.etaxonomy.cdm.model.agent.TeamOrPersonBase;
19 import eu.etaxonomy.cdm.model.common.DefinedTermBase;
20 import eu.etaxonomy.cdm.model.common.LanguageString;
21 import eu.etaxonomy.cdm.model.common.Representation;
22 import eu.etaxonomy.cdm.model.common.TermVocabulary;
23 import eu.etaxonomy.cdm.model.description.Feature;
24 import eu.etaxonomy.cdm.model.name.NonViralName;
25 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
26 import eu.etaxonomy.cdm.model.name.TypeDesignationBase;
27 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationBase;
28 import eu.etaxonomy.cdm.model.reference.Article;
29
30 public class HeaderPathTest {
31
32 @Test
33 public void testSimpleObject() {
34 HeaderPath path = new HeaderPath(Article.class,"titleCache");
35
36 assertTrue(path.isTerminating());
37 assertFalse(path.isCollection());
38 assertFalse(path.isMap());
39 assertFalse(path.isIndexed());
40 assertEquals(path.getClazz(),Article.class);
41 assertEquals(path.getPropertyType(),String.class);
42 assertEquals(path.getProperty(),"titleCache");
43 assertNull(path.getRemainingPath());
44 }
45
46 @Test
47 public void testSimpleCollection() {
48 HeaderPath path = new HeaderPath(Contact.class,"faxNumbers[0]");
49
50 assertTrue(path.isTerminating());
51 assertTrue(path.isCollection());
52 assertFalse(path.isMap());
53 assertTrue(path.isIndexed());
54 assertEquals(path.getIndex(),"0");
55 assertEquals(path.getClazz(),Contact.class);
56 assertEquals(path.getPropertyType(),String.class);
57 assertEquals(path.getProperty(),"faxNumbers");
58 assertNull(path.getRemainingPath());
59 }
60
61 @Test
62 public void testEmbeddedObject() {
63 HeaderPath path = new HeaderPath(Article.class,"datePublished.start");
64
65 assertTrue(path.isTerminating());
66 assertFalse(path.isCollection());
67 assertFalse(path.isMap());
68 assertFalse(path.isIndexed());
69 assertEquals(path.getClazz(),Article.class);
70 assertEquals(path.getPropertyType(),Partial.class);
71 assertEquals(path.getProperty(),"datePublished.start");
72 assertNull(path.getRemainingPath());
73 }
74
75 @Test
76 public void calculateNestedPaths() {
77 HeaderPath path = new HeaderPath(Article.class,"authorTeam.titleCache");
78 assertFalse(path.isTerminating());
79 assertEquals(path.getProperty(),"authorTeam");
80 assertEquals(path.getPropertyType(),TeamOrPersonBase.class);
81 assertEquals(path.getRemainingPath(),"titleCache");
82
83 }
84
85 @Test
86 public void calculateSubclassProperty() {
87 HeaderPath path = new HeaderPath(AgentBase.class,AbstractUploadAction.TYPES.get(AgentBase.class),"nomenclaturalTitle");
88 assertTrue(path.isTerminating());
89 assertEquals(path.getProperty(),"nomenclaturalTitle");
90 assertEquals(path.getPropertyType(),String.class);
91 }
92
93 @Test
94 public void calculateCollectionProperty() {
95 HeaderPath path = new HeaderPath(TaxonNameBase.class,AbstractUploadAction.TYPES.get(NonViralName.class),"typeDesignations[0].class");
96 assertFalse(path.isTerminating());
97 assertEquals(path.getProperty(),"typeDesignations");
98 assertTrue(path.isCollection());
99 assertTrue(path.isSet());
100 assertTrue(path.isIndexed());
101 assertEquals(path.getPropertyType(),TypeDesignationBase.class);
102 }
103
104 @Test
105 public void calculateMapProperty() {
106
107 HeaderPath path = new HeaderPath(SpecimenOrObservationBase.class,AbstractUploadAction.TYPES.get(SpecimenOrObservationBase.class),"description[e9f8cdb7-6819-44e8-95d3-e2d0690c3523].text");
108 assertFalse(path.isTerminating());
109 assertEquals(path.getProperty(),"description");
110 assertTrue(path.isCollection());
111 assertTrue(path.isMap());
112 assertFalse(path.isIndexed());
113 assertEquals(path.getPropertyType(),LanguageString.class);
114 }
115
116 @Test
117 public void calculateTermProperty() {
118
119 HeaderPath path = new HeaderPath(DefinedTermBase.class,AbstractUploadAction.TYPES.get(DefinedTermBase.class),"representations[0].text");
120 assertFalse(path.isTerminating());
121 assertEquals(path.getProperty(),"representations");
122 assertTrue(path.isCollection());
123 assertTrue(path.isSet());
124 assertTrue(path.isIndexed());
125 assertEquals(path.getPropertyType(),Representation.class);
126 }
127
128 @Test
129 public void calculateTermProperty2() {
130 Feature feature = new Feature();
131
132 List<Class> classes = new ArrayList<Class>();
133 classes.add(Feature.class);
134
135 HeaderPath path = new HeaderPath(DefinedTermBase.class,classes,"supportedCategoricalEnumerations[0]");
136 assertTrue(path.isTerminating());
137 assertEquals(path.getProperty(),"supportedCategoricalEnumerations");
138 assertTrue(path.isCollection());
139 assertTrue(path.isSet());
140 assertTrue(path.isIndexed());
141 assertEquals(path.getPropertyType(),TermVocabulary.class);
142 }
143 }