1 |
d2a09415
|
Andreas Kohlbecker
|
/**
|
2 |
|
|
* Copyright (C) 2009 EDIT
|
3 |
|
|
* European Distributed Institute of Taxonomy
|
4 |
|
|
* http://www.e-taxonomy.eu
|
5 |
|
|
*
|
6 |
|
|
* The contents of this file are subject to the Mozilla Public License Version 1.1
|
7 |
|
|
* See LICENSE.TXT at the top of this package for the full license terms.
|
8 |
|
|
*/
|
9 |
|
|
package eu.etaxonomy.dataportal.selenium.tests.cichorieae;
|
10 |
|
|
|
11 |
|
|
import java.net.MalformedURLException;
|
12 |
|
|
import java.util.List;
|
13 |
|
|
import java.util.UUID;
|
14 |
|
|
|
15 |
f64f32be
|
Andreas Müller
|
import org.apache.logging.log4j.LogManager;
|
16 |
|
|
import org.apache.logging.log4j.Logger;
|
17 |
d2a09415
|
Andreas Kohlbecker
|
import org.junit.Before;
|
18 |
|
|
import org.junit.Test;
|
19 |
|
|
import org.openqa.selenium.By;
|
20 |
|
|
import org.openqa.selenium.NoSuchElementException;
|
21 |
|
|
import org.openqa.selenium.WebElement;
|
22 |
|
|
|
23 |
fadab744
|
Andreas Kohlbecker
|
import eu.etaxonomy.dataportal.DataPortalSite;
|
24 |
d2a09415
|
Andreas Kohlbecker
|
import eu.etaxonomy.dataportal.elements.FeatureBlock;
|
25 |
|
|
import eu.etaxonomy.dataportal.elements.ImgElement;
|
26 |
|
|
import eu.etaxonomy.dataportal.elements.LinkElement;
|
27 |
|
|
import eu.etaxonomy.dataportal.elements.MultipartDescriptionElementRepresentation;
|
28 |
|
|
import eu.etaxonomy.dataportal.junit.CdmDataPortalTestBase;
|
29 |
|
|
import eu.etaxonomy.dataportal.junit.DataPortalContextSuite.DataPortalContexts;
|
30 |
|
|
import eu.etaxonomy.dataportal.pages.TaxonProfilePage;
|
31 |
|
|
|
32 |
|
|
/**
|
33 |
|
|
* @author a.kohlbecker
|
34 |
|
|
*/
|
35 |
fadab744
|
Andreas Kohlbecker
|
@DataPortalContexts( { DataPortalSite.cichorieae })
|
36 |
d2a09415
|
Andreas Kohlbecker
|
public class Lactuca_triquetra_TaxonProfileTest extends CdmDataPortalTestBase{
|
37 |
|
|
|
38 |
f64f32be
|
Andreas Müller
|
private static final Logger logger = LogManager.getLogger();
|
39 |
d2a09415
|
Andreas Kohlbecker
|
|
40 |
|
|
static UUID taxonUuid = UUID.fromString("ecb7a76e-694a-4706-b1ab-a2eb334173ff");
|
41 |
|
|
|
42 |
|
|
TaxonProfilePage p = null;
|
43 |
|
|
|
44 |
|
|
@Before
|
45 |
|
|
public void setUp() throws MalformedURLException {
|
46 |
|
|
|
47 |
|
|
if(p != null && driver != null ){
|
48 |
|
|
logger.debug("TaxonProfilePage p:" + p.getPageURL() + ", driver is at " + driver.getCurrentUrl());
|
49 |
|
|
}
|
50 |
|
|
p = new TaxonProfilePage(driver, getContext(), taxonUuid);
|
51 |
|
|
|
52 |
|
|
}
|
53 |
|
|
|
54 |
|
|
|
55 |
|
|
@Test
|
56 |
|
|
public void testTitleAndTabs() {
|
57 |
|
|
|
58 |
|
|
assertEquals(getContext().prepareTitle("Lactuca triquetra"), p.getTitle());
|
59 |
|
|
assertNull("Authorship information should be hidden", p.getAuthorInformationText());
|
60 |
|
|
|
61 |
|
|
List<LinkElement> primaryTabs = p.getPrimaryTabs();
|
62 |
|
|
int tabId = 0;
|
63 |
a947cfbd
|
Andreas Kohlbecker
|
if(p.isZenTheme()) {
|
64 |
8e677507
|
Andreas Kohlbecker
|
assertEquals("General\n(active tab)", primaryTabs.get(tabId++).getText());
|
65 |
a947cfbd
|
Andreas Kohlbecker
|
} else {
|
66 |
|
|
// old garland theme
|
67 |
8e677507
|
Andreas Kohlbecker
|
assertEquals("General", primaryTabs.get(tabId++).getText());
|
68 |
a947cfbd
|
Andreas Kohlbecker
|
}
|
69 |
d2a09415
|
Andreas Kohlbecker
|
assertEquals("Synonymy", primaryTabs.get(tabId++).getText());
|
70 |
|
|
assertEquals("Images", primaryTabs.get(tabId++).getText());
|
71 |
|
|
assertEquals("Specimens", primaryTabs.get(tabId++).getText());
|
72 |
|
|
assertEquals("Expecting " + tabId + " tabs", tabId, primaryTabs.size());
|
73 |
|
|
|
74 |
|
|
}
|
75 |
|
|
|
76 |
|
|
@Test
|
77 |
|
|
public void testProfileImage() {
|
78 |
|
|
ImgElement profileImage = p.getProfileImage();
|
79 |
|
|
assertNotNull("Expecting profile images to be switched on", profileImage);
|
80 |
|
|
assertTrue("Expecting image Lactuca_triquetra_Bc_01.jpg but was " + profileImage.getSrcUrl().toString(), profileImage.getSrcUrl().toString().matches("(?i).*Lactuca_triquetra_Bc_01\\.jpg.*"));
|
81 |
|
|
}
|
82 |
|
|
|
83 |
|
|
|
84 |
|
|
@Test
|
85 |
|
|
public void testFeatures() {
|
86 |
|
|
assertEquals("Content", p.getTableOfContentHeader());
|
87 |
|
|
List<LinkElement> links = p.getTableOfContentLinks();
|
88 |
|
|
assertNotNull("Expecting a list of TOC links in the profile page.", links);
|
89 |
|
|
|
90 |
|
|
FeatureBlock featureBlock;
|
91 |
|
|
int featureId = 0;
|
92 |
|
|
|
93 |
eea102b4
|
Andreas Kohlbecker
|
int descriptionElementFontSize = p.isZenTheme() ? 14 : 12;
|
94 |
d2a09415
|
Andreas Kohlbecker
|
String expectedCssDisplay = "inline";
|
95 |
|
|
String expectedListStyleType = "none";
|
96 |
|
|
String expectedListStylePosition = "outside";
|
97 |
|
|
String expectedListStyleImage = "none";
|
98 |
|
|
int indent = 0;
|
99 |
|
|
|
100 |
|
|
/* Description */
|
101 |
|
|
String featureClass = "description";
|
102 |
|
|
String featureLabel = "Description";
|
103 |
|
|
String blockTextFull = null;
|
104 |
|
|
String blockTextBegin = featureLabel + "\nHerb, perennial, scoparious, 40-80 cm high. Flowering stems erect, triangular, medullary, glaucous-green, soon leafless, strongly branched; branches erect, slender. Cauline leaves few, glabrous.";
|
105 |
|
|
String blockTextEnd = "Pappus white, 6.0-7.0 mm long, persistent, fragile, shortly barbellate or scabridulous.\n\nbased on: Meikle, R.D. 1985: Flora auf Cyprus 2. - Kew (as Prenanthes triquetra).";
|
106 |
|
|
expectedListStyleType = "none";
|
107 |
|
|
|
108 |
|
|
p.testTableOfContentEntry(featureId++,featureLabel, featureClass);
|
109 |
|
|
featureBlock = p.getFeatureBlockAt(featureId, featureClass, "div", "span");
|
110 |
|
|
|
111 |
|
|
assertTrue(featureBlock.getText().startsWith(blockTextBegin));
|
112 |
|
|
assertTrue(featureBlock.getText().endsWith(blockTextEnd));
|
113 |
|
|
featureBlock.testDescriptionElementLayout(0, indent, descriptionElementFontSize, expectedCssDisplay, expectedListStyleType, expectedListStylePosition, expectedListStyleImage);
|
114 |
|
|
assertEquals(0, featureBlock.getOriginalSourcesSections().size());
|
115 |
|
|
|
116 |
|
|
/* Distribution */
|
117 |
|
|
expectedCssDisplay = "block";
|
118 |
|
|
featureClass = "distribution";
|
119 |
|
|
featureLabel = "Distribution";
|
120 |
|
|
// below some assertions have been adapted to a bug in the library: TODO remove below comments when ticket is reviewed
|
121 |
|
|
// see #3475 (DescriptionServiceImpl.getOrderedDistributions loses distributions)
|
122 |
|
|
//
|
123 |
|
|
// original expectation disabled as bug occured:
|
124 |
|
|
// blockTextFull = featureLabel + "\nAsia-Temperate:\nCyprus 1,2; Lebanon-Syria (Lebanon 3,4,5); Palestine (Israel 5,6).\n1. Meikle, R. D., Flora of Cyprus 2. 1985, 2. Osorio-Tafall, B. H. & Serafim, G. M., List of the vascular plants of Cyprus. 1973, 3. Mouterde, P., Nouvelle flore du Liban et de la Syrie. Texte 3. 1978-1984, 4. Boissier, E., Flora Orientalis 3. 1875, 5. Post, G. E. , Flora of Syria, Palestine, and Sinai 2. 1933, 6. Zohary, M. & Feinbrun-Dothan, N., Flora Palaestina 3. 1978)";
|
125 |
|
|
// interim expectation as long bug was not fixed:
|
126 |
|
|
// blockTextFull = featureLabel + "\n\n\nAsia-Temperate:\nCyprus 1,2; Lebanon-Syria (Lebanon 3,4,5); Palestine (Israel 6).\n1. Meikle, R. D., Flora of Cyprus 2. 1985, 2. Osorio-Tafall, B. H. & Serafim, G. M., List of the vascular plants of Cyprus. 1973, 3. Mouterde, P., Nouvelle flore du Liban et de la Syrie. Texte 3. 1978-1984, 4. Boissier, E., Flora Orientalis 3. 1875, 5. Post, G. E. , Flora of Syria, Palestine, and Sinai 2. 1933, 6. Zohary, M. & Feinbrun-Dothan, N., Flora Palaestina 3. 1978";
|
127 |
|
|
// after fixig the bug #3475, more sources are now displayed than ever before:
|
128 |
|
|
// after layout changes there is an additional space: blockTextFull = featureLabel + "\n\nAsia-Temperate:\nCyprus 1,2; Lebanon-Syria (Lebanon 3,4,5); Palestine (Israel 5,6,7).\n1. Meikle, R. D., Flora of Cyprus 2. 1985, 2. Osorio-Tafall, B. H. & Serafim, G. M., List of the vascular plants of Cyprus. 1973, 3. Mouterde, P., Nouvelle flore du Liban et de la Syrie. Texte 3. 1978-1984, 4. Boissier, E., Flora Orientalis 3. 1875, 5. Post, G. E. , Flora of Syria, Palestine, and Sinai 2. 1933, 7. Zohary, M. & Feinbrun-Dothan, N., Flora Palaestina 3. 19786. (N)";
|
129 |
|
|
blockTextFull = featureLabel + "\n\nAsia-Temperate:\nCyprus A,B; Lebanon-Syria (Lebanon C,D,E); Palestine (Israel E,1,F).\n"
|
130 |
|
|
+ "A. Meikle, R. D., Flora of Cyprus 2. 1985 (as Prenanthes triquetra), B. Osorio-Tafall, B. H. & Serafim, G. M., List of the vascular plants of Cyprus. 1973, C. Mouterde, P., Nouvelle flore du Liban et de la Syrie. Texte 3. 1978-1984 (as Scariola triquetra), D. Boissier, E., Flora Orientalis 3. 1875, E. Post, G. E. , Flora of Syria, Palestine, and Sinai 2. 1933, F. Zohary, M. & Feinbrun-Dothan, N., Flora Palaestina 3. 1978\n1. (N)";
|
131 |
|
|
p.testTableOfContentEntry(featureId++, featureLabel, featureClass);
|
132 |
|
|
featureBlock = p.getFeatureBlockAt(featureId, featureClass, "div", "dt", "dd");
|
133 |
|
|
|
134 |
|
|
// TODO after #4166 (Map legend causes inconsistent spacing below map) is fixed the below trick which relaxes this test can be removed
|
135 |
|
|
String relaxedBlockText = featureBlock.getText().replaceFirst("\n\n\n", "\n\n");
|
136 |
|
|
|
137 |
|
|
// FIXME ignore until #4411 is decided
|
138 |
|
|
boolean is4411_OK = false;
|
139 |
|
|
if(is4411_OK ) {
|
140 |
|
|
assertEquals(blockTextFull, relaxedBlockText);
|
141 |
|
|
|
142 |
|
|
MultipartDescriptionElementRepresentation descriptionElement = (MultipartDescriptionElementRepresentation) featureBlock.getDescriptionElement(0);
|
143 |
|
|
logger.info(descriptionElement.getText());
|
144 |
|
|
featureBlock.testDescriptionElementLayout(0, indent, descriptionElementFontSize, expectedCssDisplay, expectedListStyleType, expectedListStylePosition, expectedListStyleImage);
|
145 |
|
|
assertEquals(0, featureBlock.getOriginalSourcesSections().size());
|
146 |
|
|
// assertEquals("Expecting 7 FootnoteKeys", 7, featureBlock.getFootNoteKeys().size()); //original version
|
147 |
|
|
// assertEquals("Expecting 6 FootnoteKeys", 6, featureBlock.getFootNoteKeys().size()); //version after bug #3475
|
148 |
|
|
assertEquals("Expecting 8 FootnoteKeys", 8, featureBlock.countFootNoteKeys()); // new version #3475 fixed
|
149 |
|
|
assertEquals("Expecting 7 Footnotes", 7, featureBlock.countFootNotes());
|
150 |
|
|
}
|
151 |
|
|
|
152 |
669f08ee
|
Andreas Kohlbecker
|
assertNotNull("Expecting an OpenLayers map", featureBlock.getElement().findElement(By.id("openlayers-map-distribution")));
|
153 |
d2a09415
|
Andreas Kohlbecker
|
WebElement mapCaptionElement = null;
|
154 |
|
|
try {
|
155 |
|
|
mapCaptionElement = featureBlock.getElement().findElement(By.className("distribution_map_caption"));
|
156 |
|
|
} catch (NoSuchElementException e){
|
157 |
|
|
/* IGNORE */
|
158 |
|
|
}
|
159 |
|
|
assertNull(mapCaptionElement);
|
160 |
|
|
|
161 |
|
|
/* Uses */
|
162 |
|
|
featureClass = "ecology";
|
163 |
|
|
featureLabel = "Ecology";
|
164 |
|
|
blockTextFull = featureLabel + "\n500 m. On chalky cliffs or in flushes on serpentine.\n\nfrom: Meikle, R. D. 1985: Flora of Cyprus 2. – Kew. (as Prenanthes triquetra)";
|
165 |
|
|
expectedCssDisplay = "inline";
|
166 |
|
|
|
167 |
|
|
p.testTableOfContentEntry(featureId++, featureLabel, featureClass);
|
168 |
|
|
featureBlock = p.getFeatureBlockAt(featureId, featureClass, "div", "span");
|
169 |
|
|
|
170 |
|
|
assertEquals(blockTextFull, featureBlock.getText());
|
171 |
|
|
featureBlock.testDescriptionElementLayout(0, indent, descriptionElementFontSize, expectedCssDisplay, expectedListStyleType, expectedListStylePosition, expectedListStyleImage);
|
172 |
|
|
assertEquals(0, featureBlock.getOriginalSourcesSections().size());
|
173 |
|
|
assertEquals("Expecting no FootnoteKeys", 0, featureBlock.countFootNoteKeys());
|
174 |
|
|
assertEquals("Expecting no Footnotes", 0, featureBlock.countFootNotes());
|
175 |
|
|
|
176 |
|
|
|
177 |
|
|
/* Common names */
|
178 |
|
|
featureClass = "common-names";
|
179 |
|
|
featureLabel = "Common names";
|
180 |
|
|
expectedCssDisplay = "block";
|
181 |
|
|
// after bug #3475 was fixed the number of footnotes increased by one
|
182 |
50d53301
|
Andreas Müller
|
blockTextFull = featureLabel + "\nArabic (Lebanon): سْكَرْيولَة ثُلاثِيَّة الأَرْكانG,2\nG. Nehmé, M. 2000: Dictionnaire Etymologique de la Flore du Liban (as Scariola triquetra (Labill.) Soják)\n2. recommended";
|
183 |
d2a09415
|
Andreas Kohlbecker
|
|
184 |
|
|
p.testTableOfContentEntry(featureId++, featureLabel, featureClass);
|
185 |
dfc49afb
|
Andreas Kohlbecker
|
featureBlock = p.getFeatureBlockAt(featureId, featureClass, "div", "span");
|
186 |
d2a09415
|
Andreas Kohlbecker
|
|
187 |
|
|
assertEquals(blockTextFull, featureBlock.getText());
|
188 |
|
|
|
189 |
|
|
|
190 |
7635cc7d
|
Andreas Kohlbecker
|
/* Credits */
|
191 |
d2a09415
|
Andreas Kohlbecker
|
featureClass = "credits";
|
192 |
|
|
featureLabel = "Credits";
|
193 |
cb80ef0b
|
Andreas Kohlbecker
|
blockTextFull = featureLabel + " Christodoulou C. S. 2009: Images (1 added). Makris C. 2009: Images (1 added).";
|
194 |
|
|
if(p.isZenTheme()) {
|
195 |
|
|
expectedCssDisplay = "inline";
|
196 |
|
|
} else {
|
197 |
|
|
// old garland theme
|
198 |
|
|
expectedCssDisplay = "block";
|
199 |
|
|
}
|
200 |
d2a09415
|
Andreas Kohlbecker
|
|
201 |
|
|
p.testTableOfContentEntry(featureId++, featureLabel, featureClass);
|
202 |
|
|
featureBlock = p.getFeatureBlockAt(featureId, featureClass, "div", "span");
|
203 |
|
|
|
204 |
cb80ef0b
|
Andreas Kohlbecker
|
assertEquals(blockTextFull, featureBlock.getText().replaceAll("\\n", " "));
|
205 |
d2a09415
|
Andreas Kohlbecker
|
featureBlock.testDescriptionElementLayout(0, indent, descriptionElementFontSize, expectedCssDisplay, expectedListStyleType, expectedListStylePosition, expectedListStyleImage);
|
206 |
|
|
assertEquals(0, featureBlock.getOriginalSourcesSections().size());
|
207 |
|
|
assertEquals("Expecting no FootnoteKeys", 0, featureBlock.countFootNoteKeys());
|
208 |
|
|
assertEquals("Expecting no Footnotes", 0, featureBlock.countFootNotes());
|
209 |
|
|
|
210 |
|
|
}
|
211 |
|
|
|
212 |
|
|
}
|