Project

General

Profile

Download (16.9 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2020 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.reference;
10

    
11
import java.io.IOException;
12
import java.net.MalformedURLException;
13
import java.util.UUID;
14

    
15
import org.apache.log4j.Level;
16
import org.apache.log4j.Logger;
17
import org.junit.Before;
18
import org.junit.Test;
19
import org.openqa.selenium.By;
20
import org.openqa.selenium.WebElement;
21

    
22
import eu.etaxonomy.dataportal.DataPortalSite;
23
import eu.etaxonomy.dataportal.DrupalVars;
24
import eu.etaxonomy.dataportal.elements.BaseElement;
25
import eu.etaxonomy.dataportal.elements.DerivedUnitTree;
26
import eu.etaxonomy.dataportal.elements.DerivedUnitTreeNode;
27
import eu.etaxonomy.dataportal.elements.DetailsTable;
28
import eu.etaxonomy.dataportal.elements.LinkElement;
29
import eu.etaxonomy.dataportal.junit.CdmDataPortalTestBase;
30
import eu.etaxonomy.dataportal.junit.DataPortalContextSuite.DataPortalContexts;
31
import eu.etaxonomy.dataportal.pages.TaxonPage;
32
import eu.etaxonomy.drush.DrushExecuter;
33
import eu.etaxonomy.drush.DrushExecutionFailure;
34

    
35
/**
36
 * @author a.kohlbecker
37
 * @since Aug 11, 2020
38
 */
39
@DataPortalContexts( { DataPortalSite.reference })
40
public class SpecimensTreeViewTest extends CdmDataPortalTestBase {
41

    
42
    public static final Logger logger = Logger.getLogger(DrushExecuter.class);
43

    
44
    private static final UUID glenodinium_apiculatum_t = UUID.fromString("d245083e-3bda-435f-9bb3-bdc2249ff23c");
45

    
46
    private TaxonPage p;
47

    
48
    DerivedUnitTree duTree;
49

    
50
    @Before
51
    public void switchToView() throws IOException, InterruptedException, DrushExecutionFailure {
52
        Logger.getLogger(DrushExecuter.class).setLevel(Level.DEBUG);
53
        setDrupalVar(DrupalVars.CDM_DATAPORTAL_TAXONPAGE_TABS, "1");
54
        setDrupalVar(DrupalVars.CDM_SPECIMEN_LIST_VIEW_MODE, "derivate_tree");
55
        setDrupalVarJson(DrupalVars.CDM_SPECIMEN_DERIVATE_TREE_OPTIONS, "{\"field_unit_short_label\":1}");
56
        loadPage();
57
    }
58

    
59
    // must be called after setting the drupal vars
60
    public void loadPage() throws MalformedURLException {
61
        p = new TaxonPage(driver, getContext(), glenodinium_apiculatum_t, "specimens");
62
        WebElement treeElement = p.getDataPortalContent().getElement().findElement(By.cssSelector(".item-tree"));
63
        duTree = DerivedUnitTree.from(treeElement);
64
    }
65

    
66
    @Test
67
    public void testPage() {
68

    
69
        assertEquals(3, duTree.getRootNodes().size());
70
        BaseElement rootNodeHeader1 = duTree.getRootNodes().get(0).getHeader();
71
        assertEquals("B SP-99999", rootNodeHeader1.getText());
72
        BaseElement rootNodeHeader2 = duTree.getRootNodes().get(1).getHeader();
73
        assertEquals("Germany, Berlin, 2 Apr 1835.", rootNodeHeader2.getText());
74
        BaseElement rootNodeHeader3 = duTree.getRootNodes().get(2).getHeader();
75
        assertEquals("Ehrenberg, C.G. D047", rootNodeHeader3.getText());
76
    }
77

    
78

    
79
    @Test
80
    public void testDerivationTree1() {
81

    
82

    
83
        DerivedUnitTreeNode rootNode = duTree.getRootNodes().get(0);
84
        DerivedUnitTreeNode subNode1 = rootNode.getSubNodes().get(0);
85
        DerivedUnitTreeNode subNode2 = rootNode.getSubNodes().get(1);
86
        DerivedUnitTreeNode subNode3 = rootNode.getSubNodes().get(2);
87

    
88
        assertEquals("B SP-99999", rootNode.getHeader().getText());
89
        assertFalse("sub node 1 initially invisible", subNode1.getElement().isDisplayed());
90
        rootNode.getTreeNodeSymbol().click();
91
        assertTrue("sub node 1 visible after click", subNode1.getElement().isDisplayed());
92
        assertEquals("B B-923845", subNode1.getHeader().getText());
93
        assertEquals("B DNA-9098080", subNode2.getHeader().getText());
94
        assertEquals("B_SP-99999", subNode3.getHeader().getText());
95

    
96
        // NOTE we are only testing subnode 1 here as all other details are tested in other methods
97

    
98
        // ---- sub node 1
99
        subNode1.getHeader().getElement().click(); // make the  content visible
100
        LinkElement pageLink = subNode1.getHeader().getLinksInElement().get(0);
101
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/2d424df6-f927-472a-8fb5-4c2d2eeb4484"));
102

    
103
        // THIS THE THE MOST IMORTANT detail to test here
104
        assertEquals("Preparation: Liebm., Botanic Garden and Botanical Museum Berlin-Dahlem (BGBM), 2020-01-03", subNode1.getDerivationEvent());
105

    
106
        DetailsTable tissueSampleTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Tissue Sample"));
107
        assertEquals("Tissue Sample", tissueSampleTable.getHeaderText());
108
        assertEquals("fruit", tissueSampleTable.getDetailsValueCellText("Kind of unit"));
109
        assertEquals("B-923845", tissueSampleTable.getDetailsValueCellText("Accession number"));
110
        assertEquals("B", tissueSampleTable.getDetailsValueCellText("Collection"));
111

    
112
    }
113

    
114

    
115
    @Test
116
    public void testDerivationTree2() {
117

    
118
        DerivedUnitTreeNode rootNode = duTree.getRootNodes().get(1);
119
        DerivedUnitTreeNode subNode1 = rootNode.getSubNodes().get(0);
120

    
121
        assertEquals("Germany, Berlin, 2 Apr 1835.", rootNode.getHeader().getText());
122
        assertFalse("sub node 1 initially invisible", subNode1.getElement().isDisplayed());
123
        rootNode.getTreeNodeSymbol().click();
124
        assertTrue("sub node 1 visible after click", subNode1.getElement().isDisplayed());
125
        assertEquals("BHUPM 671", subNode1.getHeader().getText());
126

    
127
        // ---- root node
128
        rootNode.getHeader().getElement().click(); // make the  content visible
129
        LinkElement pageLink = rootNode.getHeader().getLinksInElement().get(0);
130
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/75b73483-7ee6-4c2c-8826-1e58a0ed18e0"));
131

    
132
        DetailsTable fieldUnitTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Field Unit"));
133
        assertEquals("Field Unit", fieldUnitTable.getHeaderText());
134
        assertEquals("field note 1", fieldUnitTable.getDetailsValueCellText("Field notes"));
135

    
136
        DetailsTable gatheringTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Gathering & Location"));
137
        assertEquals("Gathering & Location", gatheringTable.getHeaderText());
138
        assertEquals("Germany", gatheringTable.getDetailsValueCellText("Country"));
139
        assertEquals("Berlin", gatheringTable.getDetailsValueCellText("Locality"));
140
        assertEquals("1835-04-02", gatheringTable.getDetailsValueCellText("Date"));
141

    
142
        // ---- sub node 1
143
        subNode1.getHeader().getElement().click(); // make the  content visible
144
        pageLink = subNode1.getHeader().getLinksInElement().get(0);
145
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/eb729673-5206-49fb-b902-9214d8bdbb51"));
146

    
147
        assertEquals("Gathering in-situ", subNode1.getDerivationEvent());
148

    
149
        DetailsTable imageTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Still Image"));
150
        assertEquals("Still Image", imageTable.getHeaderText());
151
        assertEquals("Unpublished image", imageTable.getDetailsValueCellText("Kind of unit"));
152
        assertEquals("671", imageTable.getDetailsValueCellText("Accession number"));
153
        assertEquals("BHUPM", imageTable.getDetailsValueCellText("Collection"));
154

    
155
        DetailsTable typeDesignationsTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Type designations"));
156
        assertEquals("Lectotype (designated by Kretschmann, J., Žerdoner ?alasan, A. & Kusber, W.-H. 20171)",
157
                typeDesignationsTable.getBodyCellText(0, 0));
158

    
159
        DetailsTable mediaTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Media"));
160

    
161
    }
162

    
163

    
164
    @Test
165
    public void testDerivationTree3() {
166

    
167
        DerivedUnitTreeNode rootNode = duTree.getRootNodes().get(2);
168
        DerivedUnitTreeNode subNode1 = rootNode.getSubNodes().get(0);
169
        DerivedUnitTreeNode subNode1_1 = subNode1.getSubNodes().get(0);
170
        DerivedUnitTreeNode subNode1_2 = subNode1.getSubNodes().get(1);
171
        DerivedUnitTreeNode subNode1_3 = subNode1.getSubNodes().get(2);
172
        DerivedUnitTreeNode subNode1_4 = subNode1.getSubNodes().get(3);
173
        DerivedUnitTreeNode subNode2 = rootNode.getSubNodes().get(1);
174

    
175
        assertEquals("Ehrenberg, C.G. D047", rootNode.getHeader().getText());
176

    
177
        assertFalse("sub node 1 initially invisible", subNode1.getElement().isDisplayed());
178
        rootNode.getTreeNodeSymbol().click();
179
        assertTrue("sub node 1 visible after click", subNode1.getElement().isDisplayed());
180
        assertEquals("CEDiT 2017E68", subNode1.getHeader().getText());
181

    
182
        assertFalse("sub node 1 initially invisible", subNode1_1.getElement().isDisplayed());
183
        subNode1.getTreeNodeSymbol().click();
184
        assertTrue("sub node 1 visible after click", subNode1_1.getElement().isDisplayed());
185
        assertEquals("10.5555 (JSTOR image viewer)", subNode1_1.getHeader().getText());
186
        assertEquals("B IMG 99999", subNode1_2.getHeader().getText());
187
        assertEquals("M M0093531 (Erigeron annus)", subNode1_3.getHeader().getText());
188
        assertEquals("XKCD MASKS 2X (Masks)", subNode1_4.getHeader().getText());
189
        assertEquals("M M-0289351", subNode2.getHeader().getText());
190

    
191
        // --- Root note
192
        rootNode.getHeader().getElement().click(); // make the  content visible
193
        LinkElement pageLink = rootNode.getHeader().getLinksInElement().get(0);
194
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/89d36e79-3e80-4468-986e-411ca391452e"));
195

    
196
        DetailsTable fieldUnitTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Field Unit"));
197
        assertEquals("Field Unit", fieldUnitTable.getHeaderText());
198
        assertEquals("D047", fieldUnitTable.getDetailsValueCellText("Collecting number"));
199

    
200
        DetailsTable gatheringTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Gathering & Location"));
201
        assertEquals("Gathering & Location", gatheringTable.getHeaderText());
202
        assertEquals("2016-03-28", gatheringTable.getDetailsValueCellText("Date"));
203
        assertEquals("Ehrenberg, C.G.", gatheringTable.getDetailsValueCellText("Collector"));
204
        assertEquals("Berlin", gatheringTable.getDetailsValueCellText("Locality"));
205
        assertEquals("Germany", gatheringTable.getDetailsValueCellText("Country"));
206
        assertEquals("52°31'1.2\"N, 13°21'E +/-20 m (WGS84)", gatheringTable.getDetailsValueCellText("Exact location"));
207
        assertEquals("165 m", gatheringTable.getDetailsValueCellText("Altitude"));
208

    
209
        // --- node 1
210

    
211
        subNode1.getHeader().getElement().click();
212
        assertTrue(subNode1.getHeader().getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/occurrence/8585081c-b73b-440b-b349-582845cf3fb4"));
213

    
214
        assertEquals("Gathering in-situ", subNode1.getDerivationEvent());
215

    
216
        DetailsTable preserverdSpecimenTable_1 = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Preserved Specimen"));
217
        assertEquals("Preserved Specimen", preserverdSpecimenTable_1.getHeaderText());
218
        assertEquals("Specimen", preserverdSpecimenTable_1.getDetailsValueCellText("Kind of unit"));
219
        assertEquals("2017E68", preserverdSpecimenTable_1.getDetailsValueCellText("Accession number"));
220
        assertEquals("http://testid.org/2017E68", preserverdSpecimenTable_1.getDetailsValueCellText("Preferred stable uri"));
221
        assertEquals("http://testid.org/2017E68", preserverdSpecimenTable_1.getDetailsValueCell("Preferred stable uri").getLinksInElement().get(0).getUrl());
222
        assertEquals("CEDiT at Botanic Garden and Botanical Museum Berlin-Dahlem (BGBM)", preserverdSpecimenTable_1.getDetailsValueCellText("Collection"));
223
        assertEquals("Glenodinium apiculatum", preserverdSpecimenTable_1.getDetailsValueCellText("Stored under"));
224
        assertTrue(preserverdSpecimenTable_1.getDetailsValueCell("Stored under").getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/name/758a9b10-6817-496b-b5a3-dd66b38c13b0/null/null/"));
225
        assertEquals("D. Veloper", preserverdSpecimenTable_1.getDetailsValueCellText("Exsiccatum"));
226
        assertEquals("CE_2017E68", preserverdSpecimenTable_1.getDetailsValueCellText("Catalog number"));
227
        assertEquals("E2017E68", preserverdSpecimenTable_1.getDetailsValueCellText("Barcode"));
228

    
229
        DetailsTable typeDesignationsTable_1 = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Type designations"));
230
        assertEquals("Epitype (designated by Kretschmann, J., Žerdoner ?alasan, A. & Kusber, W.-H. 20171)",
231
                typeDesignationsTable_1.getBodyCellText(0, 0));
232

    
233
        DetailsTable identificationsTable_1 = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Identification"));
234
        assertEquals("Glenodinium apiculatum, 2016-12-01, Kohlbecker, A.",
235
                identificationsTable_1.getBodyCellText(0, 0));
236
        assertTrue(identificationsTable_1.getBodyCell(0, 0).getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/taxon/d245083e-3bda-435f-9bb3-bdc2249ff23c"));
237

    
238
        // --- --- node_1_2
239

    
240
        subNode1_2.getHeader().getElement().click();
241
        assertTrue(subNode1_2.getHeader().getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/occurrence/a825bdad-6854-4868-98f5-7e6ebe3b6271"));
242

    
243
        assertEquals("Accessioning", subNode1_2.getDerivationEvent());
244

    
245
        DetailsTable imageTable_1_2 = subNode1_2.getDetailsTable(DetailsTable.tableClassAttrFrom("Still Image"));
246
        assertEquals("Still Image", imageTable_1_2.getHeaderText());
247
        assertEquals("Specimen scan", imageTable_1_2.getDetailsValueCellText("Kind of unit"));
248
        assertEquals("IMG 99999", imageTable_1_2.getDetailsValueCellText("Accession number"));
249
        assertEquals("B", imageTable_1_2.getDetailsValueCellText("Collection"));
250

    
251
        DetailsTable mediaTable_1_2 = subNode1_2.getDetailsTable(DetailsTable.tableClassAttrFrom("Media"));
252
        assertTrue(mediaTable_1_2.getBodyCell(0, 0).getText().contains("Sisymbrium_aegyptiacum_C1.jpg&mo=file"));
253

    
254

    
255
        // --- --- node_1_3
256

    
257
        subNode1_3.getHeader().getElement().click();
258
        assertTrue(subNode1_3.getHeader().getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/occurrence/04936f1c-41be-47db-99ed-33ed30bd7c01"));
259

    
260
        assertEquals("Accessioning", subNode1_3.getDerivationEvent());
261

    
262
        DetailsTable imageTable_1_3 = subNode1_3.getDetailsTable(DetailsTable.tableClassAttrFrom("Still Image"));
263
        assertEquals("Still Image", imageTable_1_3.getHeaderText());
264
        assertEquals("Specimen scan", imageTable_1_3.getDetailsValueCellText("Kind of unit"));
265
        assertEquals("M0093531", imageTable_1_3.getDetailsValueCellText("Accession number"));
266
        assertEquals("M", imageTable_1_3.getDetailsValueCellText("Collection"));
267

    
268
        DetailsTable mediaTable_1_3 = subNode1_3.getDetailsTable(DetailsTable.tableClassAttrFrom("Media"));
269
        assertTrue(mediaTable_1_3.getBodyCell(0, 0).getText().contains("Erigeron annus"));
270

    
271
        // --- --- node_1_4
272

    
273
        subNode1_4.getHeader().getElement().click();
274
        assertTrue(subNode1_4.getHeader().getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/occurrence/c2495af1-251b-42e9-b5ab-2e3e0df9ea3f"));
275

    
276
        assertEquals("Accessioning", subNode1_4.getDerivationEvent());
277

    
278
        DetailsTable imageTable_1_4 = subNode1_4.getDetailsTable(DetailsTable.tableClassAttrFrom("Still Image"));
279
        assertEquals("Still Image", imageTable_1_4.getHeaderText());
280
        assertEquals("Detail image", imageTable_1_4.getDetailsValueCellText("Kind of unit"));
281
        assertEquals("MASKS 2X", imageTable_1_4.getDetailsValueCellText("Accession number"));
282
        assertEquals("XKCD", imageTable_1_4.getDetailsValueCellText("Collection"));
283

    
284
        DetailsTable mediaTable_1_4 = subNode1_4.getDetailsTable(DetailsTable.tableClassAttrFrom("Media"));
285
        assertTrue(mediaTable_1_4.getBodyCell(0, 0).getText().contains("Ink drawing"));
286

    
287

    
288
        // --- node_2
289

    
290
        subNode2.getHeader().getElement().click();
291
        assertTrue(subNode2.getHeader().getLinksInElement().get(0).getUrl().endsWith("cdm_dataportal/occurrence/e86c5acd-de55-44af-99f7-484207657264"));
292

    
293
        assertEquals("Gathering in-situ", subNode2.getDerivationEvent());
294

    
295
        DetailsTable preserverdSpecimenTable_2 = subNode2.getDetailsTable(DetailsTable.tableClassAttrFrom("Preserved Specimen"));
296
        assertEquals("Preserved Specimen", preserverdSpecimenTable_2.getHeaderText());
297
        assertEquals("http://herbarium.bgbm.org/object/B400042045", preserverdSpecimenTable_2.getDetailsValueCellText("Preferred stable uri"));
298
        assertEquals("Specimen", preserverdSpecimenTable_2.getDetailsValueCellText("Kind of unit"));
299

    
300
        DetailsTable typeDesignationsTable_2 = subNode2.getDetailsTable(DetailsTable.tableClassAttrFrom("Type designations"));
301
        assertEquals("Isolectotype (designated by Kretschmann, J., Žerdoner ?alasan, A. & Kusber, W.-H. 20171)",
302
                typeDesignationsTable_2.getBodyCellText(0, 0));
303
        assertEquals("expecting one footnote key link", 1, typeDesignationsTable_2.getBodyCell(0, 0).getLinksInElement().size());
304

    
305
    }
306

    
307
}
(14-14/16)