View Javadoc

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 }