Project

General

Profile

Download (17.3 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.logging.log4j.Level;
16
import org.junit.Before;
17
import org.junit.Test;
18
import org.openqa.selenium.By;
19
import org.openqa.selenium.WebElement;
20

    
21
import eu.etaxonomy.cdm.common.LogUtils;
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.DrushExecutionFailure;
33

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

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

    
43
    private TaxonPage p;
44

    
45
    private DerivedUnitTree duTree;
46

    
47
    @Before
48
    public void switchToView() throws IOException, InterruptedException, DrushExecutionFailure {
49
        LogUtils.setLevel(getClass(), Level.DEBUG);
50
        setDrupalVar(DrupalVars.CDM_DATAPORTAL_TAXONPAGE_TABS, "1");
51
        setDrupalVar(DrupalVars.CDM_SPECIMEN_LIST_VIEW_MODE, "derivate_tree");
52
        setDrupalVarJson(DrupalVars.CDM_SPECIMEN_DERIVATE_TREE_OPTIONS, "{\"field_unit_short_label\":1}");
53
        loadPage();
54
    }
55

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

    
63
    @Test
64
    public void testPage() {
65

    
66
        assertEquals(3, duTree.getRootNodes().size());
67
        BaseElement rootNodeHeader1 = duTree.getRootNodes().get(0).getHeader();
68
        assertEquals("Germany, Berlin, 2 Apr 1835", rootNodeHeader1.getText());
69
        BaseElement rootNodeHeader2 = duTree.getRootNodes().get(1).getHeader();
70
        assertEquals("Kusber, W.-H. 12", rootNodeHeader2.getText());
71
        BaseElement rootNodeHeader3 = duTree.getRootNodes().get(2).getHeader();
72
        assertEquals("Germany, Berlin, alt. 165 m, 52°31'1.21\"N, 13°21'E (WGS84), 28 Mar 2016, Ehrenberg, C.G. D047", rootNodeHeader3.getText());
73
    }
74

    
75
    @Test
76
    public void testDerivationTree1() {
77

    
78
        DerivedUnitTreeNode rootNode = duTree.getRootNodes().get(0);
79
        DerivedUnitTreeNode subNode1 = rootNode.getSubNodes().get(0);
80
        //DerivedUnitTreeNode subNode2 = rootNode.getSubNodes().get(1);
81
        //DerivedUnitTreeNode subNode3 = rootNode.getSubNodes().get(2);
82

    
83
        assertEquals("Germany, Berlin, 2 Apr 1835", rootNode.getHeader().getText());
84
        assertFalse("sub node 1 initially invisible", subNode1.getElement().isDisplayed());
85
        rootNode.getTreeNodeSymbol().click();
86
        assertTrue("sub node 1 visible after click", subNode1.getElement().isDisplayed());
87
        assertEquals("BHUPM 671", subNode1.getHeader().getText());
88
        //assertEquals("B DNA-9098080", subNode2.getHeader().getText());
89
        //assertEquals("B_SP-99999", subNode3.getHeader().getText());
90

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

    
93
        // ---- sub node 1
94
        subNode1.getHeader().getElement().click(); // make the  content visible
95
        LinkElement pageLink = subNode1.getHeader().getLinksInElement().get(0);
96
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/eb729673-5206-49fb-b902-9214d8bdbb51"));
97

    
98

    
99
        assertEquals("Gathering in-situ", subNode1.getDerivationEvent());
100

    
101
        DetailsTable stillImageTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Still Image"));
102
        assertEquals("Still Image", stillImageTable.getHeaderText());
103
        assertEquals("Unpublished image", stillImageTable.getDetailsValueCellText("Kind of unit"));
104
        assertEquals("671", stillImageTable.getDetailsValueCellText("Accession number"));
105
        assertEquals("BHUPM", stillImageTable.getDetailsValueCellText("Collection"));
106

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

    
111
        DetailsTable mediaTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Media"));
112
    }
113

    
114
    @Test
115
    public void testDerivationTree2() {
116

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

    
120
        assertEquals("Kusber, W.-H. 12", rootNode.getHeader().getText());
121
        assertFalse("sub node 1 initially invisible", subNode1.getElement().isDisplayed());
122
        rootNode.getTreeNodeSymbol().click();
123
        assertTrue("sub node 1 visible after click", subNode1.getElement().isDisplayed());
124
        assertEquals("B 123123", subNode1.getHeader().getText());
125

    
126
        // ---- root node
127
        rootNode.getHeader().getElement().click(); // make the  content visible
128
        LinkElement pageLink = rootNode.getHeader().getLinksInElement().get(0);
129
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/77c35cf4-45e2-4c17-9164-c3c877280f43"));
130

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

    
135
        DetailsTable gatheringTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Gathering & Location"));
136
        assertEquals("Gathering & Location", gatheringTable.getHeaderText());
137
        assertEquals("Germany", gatheringTable.getDetailsValueCellText("Country"));
138
        assertEquals("Berlin, Schlachtensee", gatheringTable.getDetailsValueCellText("Locality"));
139
        assertEquals("2012-03-12", gatheringTable.getDetailsValueCellText("Date"));
140

    
141
        // ---- sub node 1
142
        subNode1.getHeader().getElement().click(); // make the  content visible
143
        pageLink = subNode1.getHeader().getLinksInElement().get(0);
144
        assertTrue(pageLink.getUrl().endsWith("cdm_dataportal/occurrence/e04a54f9-bd2c-4e93-a412-c51653dfd391"));
145

    
146
        assertEquals("Accessioning", subNode1.getDerivationEvent());
147

    
148
        DetailsTable imageTable = subNode1.getDetailsTable(DetailsTable.tableClassAttrFrom("Preserved Specimen"));
149
        assertEquals("Preserved Specimen", imageTable.getHeaderText());
150
        //assertEquals("Unpublished image", imageTable.getDetailsValueCellText("Kind of unit"));
151
        assertEquals("123123", imageTable.getDetailsValueCellText("Accession number"));
152
        assertEquals("B", imageTable.getDetailsValueCellText("Collection"));
153

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

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

    
161
    @Test
162
    public void testDerivationTree3() {
163

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

    
172
        assertEquals("Ehrenberg, C.G. D047", rootNode.getHeader().getText());
173

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

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

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

    
193
        DetailsTable fieldUnitTable = rootNode.getDetailsTable(DetailsTable.tableClassAttrFrom("Field Unit"));
194
        assertEquals("Field Unit", fieldUnitTable.getHeaderText());
195
        assertEquals("D047", fieldUnitTable.getDetailsValueCellText("Collecting number"));
196

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

    
206
        // --- node 1
207

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

    
211
        assertEquals("Gathering in-situ", subNode1.getDerivationEvent());
212

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

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

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

    
236
        // --- --- node_1_2
237

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

    
241
        assertEquals("Accessioning", subNode1_2.getDerivationEvent());
242

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

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

    
252

    
253
        // --- --- node_1_3
254

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

    
258
        assertEquals("Accessioning", subNode1_3.getDerivationEvent());
259

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

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

    
269
        // --- --- node_1_4
270

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

    
274
        assertEquals("Accessioning", subNode1_4.getDerivationEvent());
275

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

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

    
285

    
286
        // --- node_2
287

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

    
291
        assertEquals("Gathering in-situ", subNode2.getDerivationEvent());
292

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

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

    
303
    }
304
}
(14-14/17)