1 package org.cateproject.controller.description;
2
3 import static org.junit.Assert.assertEquals;
4
5 import java.util.ArrayList;
6 import java.util.List;
7 import java.util.Set;
8 import java.util.UUID;
9
10 import org.easymock.EasyMock;
11 import org.junit.Before;
12 import org.junit.Ignore;
13 import org.junit.Test;
14 import org.springframework.test.web.ModelAndViewAssert;
15 import org.springframework.web.servlet.ModelAndView;
16 import org.unitils.UnitilsJUnit4;
17 import org.unitils.easymock.annotation.Mock;
18 import org.unitils.inject.annotation.InjectInto;
19 import org.unitils.inject.annotation.TestedObject;
20
21 import eu.etaxonomy.cdm.api.service.IDescriptionService;
22 import eu.etaxonomy.cdm.api.service.IFeatureTreeService;
23 import eu.etaxonomy.cdm.api.service.ITermService;
24 import eu.etaxonomy.cdm.api.service.pager.Pager;
25 import eu.etaxonomy.cdm.model.common.Language;
26 import eu.etaxonomy.cdm.model.common.LanguageString;
27 import eu.etaxonomy.cdm.model.description.CommonTaxonName;
28 import eu.etaxonomy.cdm.model.description.DescriptionElementBase;
29 import eu.etaxonomy.cdm.model.description.Distribution;
30 import eu.etaxonomy.cdm.model.description.Feature;
31 import eu.etaxonomy.cdm.model.description.FeatureNode;
32 import eu.etaxonomy.cdm.model.description.FeatureTree;
33 import eu.etaxonomy.cdm.model.description.TaxonDescription;
34 import eu.etaxonomy.cdm.model.description.TextData;
35
36 @Ignore
37 public class DescriptionControllerTest extends UnitilsJUnit4 {
38
39 @Mock
40 @InjectInto(property = "service")
41 private IDescriptionService descriptionService;
42
43 @Mock
44 @InjectInto(property = "featureTreeService")
45 private IFeatureTreeService featureTreeService;
46
47 @Mock
48 @InjectInto(property = "termService")
49 ITermService termService;
50
51 @TestedObject
52 private DescriptionController descriptionController;
53
54 private FeatureTree featureTree;
55 private TaxonDescription taxonDescription;
56 private Pager<DescriptionElementBase> textDatas;
57 private List<DescriptionElementBase> textDataList;
58 private Feature feature;
59
60
61 private UUID uuid;
62 private UUID featureTreeUUID;
63
64 @Before
65 public void setUp() {
66 uuid = UUID.randomUUID();
67 featureTreeUUID = UUID.randomUUID();
68 descriptionController = new DescriptionController();
69 descriptionService = EasyMock.createMock(IDescriptionService.class);
70 termService = EasyMock.createMock(ITermService.class);
71 featureTreeService = EasyMock.createMock(IFeatureTreeService.class);
72
73 textDatas = EasyMock.createMock(Pager.class);
74
75 textDataList = new ArrayList<DescriptionElementBase>();
76
77 featureTree = FeatureTree.NewInstance();
78 featureTree.setRoot(FeatureNode.NewInstance(Feature.NewInstance()));
79
80 taxonDescription = new TaxonDescription();
81
82 feature = new Feature();
83 Language language = new Language();
84
85 List<DescriptionElementBase> textDataResults = new ArrayList<DescriptionElementBase>();
86 for(int i = 0; i < 4; i++) {
87 TextData td = new TextData();
88 LanguageString ls = LanguageString.NewInstance("<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Morbi orci ligula, vestibulum ut, suscipit non, sodales sit amet, mi. Etiam eget purus. Sed venenatis augue ac ligula. Donec enim ligula, auctor ac, sodales vel, ornare volutpat, diam. Aliquam eget mauris. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Etiam eget justo id diam interdum porta. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Phasellus mi lectus, lacinia eget, pretium vitae, interdum eget, leo. Ut consectetuer, lorem non euismod consequat, quam nunc ullamcorper neque, nec imperdiet ante sem non ligula. Morbi vel justo. Integer vitae nunc. Donec sodales neque mattis augue.</p> <p>Vivamus in lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean lorem felis, vehicula sed, ultrices quis, porttitor vel, tortor. Etiam tristique massa vitae sem. Mauris congue. Phasellus quis nisi. Donec nec leo non est porttitor molestie. Aenean at arcu at libero vulputate semper. Aenean adipiscing, libero pellentesque iaculis elementum, est ligula aliquet sem, ut bibendum felis lorem eget metus. Maecenas vehicula. Sed aliquam scelerisque lorem.</p> <p>Nulla vulputate, augue ut sagittis porttitor, nisl diam tincidunt est, at tincidunt metus felis nec lacus. Nulla facilisi. Etiam mollis, quam in egestas ultrices, augue nisl sagittis orci, vel lacinia odio lacus a lorem. Fusce non risus. Mauris malesuada sagittis leo. Nullam rutrum metus in mi. Aliquam laoreet convallis nisl. Cras sollicitudin pede. Sed hendrerit libero at sem. In hac habitasse platea dictumst. Ut rutrum enim a felis. Cras pretium sapien a arcu. Donec sit amet ante.</p>", language);
89 td.getMultilanguageText().put(language, ls);
90 td.setFeature(feature);
91 textDataResults.add(td);
92 }
93 }
94
95 @Test
96 public void testTextData(){
97 EasyMock.expect(descriptionService.load(EasyMock.eq(uuid),EasyMock.isA(List.class))).andReturn(taxonDescription);
98 EasyMock.expect(featureTreeService.load(EasyMock.eq(featureTreeUUID), EasyMock.isA(List.class))).andReturn(featureTree);
99 EasyMock.expect(descriptionService.getDescriptionElements(EasyMock.eq(taxonDescription),EasyMock.isA(Set.class),(Class)EasyMock.isNull(),(Integer)EasyMock.isNull(),(Integer)EasyMock.isNull(),EasyMock.isA(List.class))).andReturn(textDatas);
100 EasyMock.expect(textDatas.getRecords()).andReturn(textDataList);
101
102 EasyMock.replay(descriptionService,termService,textDatas);
103
104 ModelAndView modelAndView = descriptionController.getElements(uuid, featureTreeUUID);
105
106 EasyMock.verify(descriptionService,termService,textDatas);
107
108 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "object", taxonDescription);
109 ModelAndViewAssert.assertModelAttributeAvailable(modelAndView, "pager");
110 ModelAndViewAssert.assertModelAttributeValue(modelAndView, "featureTree",featureTree);
111 }
112
113 @Test
114 public void testFeatureNodeWithLevel() {
115 FeatureNodeWithLevel featureNodeWithLevel = new FeatureNodeWithLevel(FeatureNode.NewInstance(), 0);
116 featureNodeWithLevel.addElement(Distribution.NewInstance());
117 featureNodeWithLevel.addElement(Distribution.NewInstance());
118 featureNodeWithLevel.addElement(TextData.NewInstance());
119 featureNodeWithLevel.addElement(Distribution.NewInstance());
120 featureNodeWithLevel.addElement(Distribution.NewInstance());
121 featureNodeWithLevel.addElement(Distribution.NewInstance());
122 featureNodeWithLevel.addElement(TextData.NewInstance());
123 featureNodeWithLevel.addElement(Distribution.NewInstance());
124 featureNodeWithLevel.addElement(Distribution.NewInstance());
125 featureNodeWithLevel.addElement(Distribution.NewInstance());
126 featureNodeWithLevel.addElement(Distribution.NewInstance());
127 featureNodeWithLevel.addElement(TextData.NewInstance());
128 featureNodeWithLevel.addElement(CommonTaxonName.NewInstance(null, null));
129
130 assertEquals(featureNodeWithLevel.getTextData().size(),3);
131 }
132 }