cleanup
[cdmlib.git] / cdmlib-persistence / src / test / java / eu / etaxonomy / cdm / persistence / dao / hibernate / occurrence / OccurrenceDaoHibernateImplTest.java
1 /**
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.cdm.persistence.dao.hibernate.occurrence;
10
11 import java.io.FileNotFoundException;
12 import java.util.Collections;
13 import java.util.List;
14 import java.util.stream.Collectors;
15
16 import org.apache.logging.log4j.LogManager;
17 import org.apache.logging.log4j.Logger;
18 import org.h2.util.StringUtils;
19 import org.junit.Assert;
20 import org.junit.Test;
21 import org.unitils.spring.annotation.SpringBeanByType;
22
23 import eu.etaxonomy.cdm.common.URI;
24 import eu.etaxonomy.cdm.model.description.Feature;
25 import eu.etaxonomy.cdm.model.description.SpecimenDescription;
26 import eu.etaxonomy.cdm.model.description.TextData;
27 import eu.etaxonomy.cdm.model.media.Media;
28 import eu.etaxonomy.cdm.model.occurrence.DerivedUnit;
29 import eu.etaxonomy.cdm.model.occurrence.MediaSpecimen;
30 import eu.etaxonomy.cdm.model.occurrence.SpecimenOrObservationType;
31 import eu.etaxonomy.cdm.persistence.dao.occurrence.IOccurrenceDao;
32 import eu.etaxonomy.cdm.test.integration.CdmIntegrationTest;
33
34 public class OccurrenceDaoHibernateImplTest extends CdmIntegrationTest {
35
36 private static final Logger logger = LogManager.getLogger();
37
38 @SpringBeanByType
39 private IOccurrenceDao dao;
40
41 //**************** TESTS ************************************************
42
43 @Test
44 public void testRebuildIndex() {
45 logger.warn("Not yet implemented");
46 }
47
48 @Test
49 public void testCountMedia() {
50 MediaSpecimen unit = MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
51 SpecimenDescription desc = SpecimenDescription.NewInstance(unit);
52 desc.setImageGallery(true);
53 TextData textData = TextData.NewInstance(Feature.IMAGE());
54 desc.addElement(textData);
55 Media media1 = Media.NewInstance(URI.create("https://www.abc.de"), 5, "jpg", "jpg");
56 Media media2 = Media.NewInstance(URI.create("https://www.abc.de"), 5, "jpg", "jpg");
57 textData.addMedia(media1);
58 textData.addMedia(media2);
59
60 Media media3 = Media.NewInstance(URI.create("https://www.abc.de"), 5, "jpg", "jpg");
61 unit.setMediaSpecimen(media3);
62 dao.save(unit);
63
64 Assert.assertEquals(3, dao.countMedia(unit));
65 unit.setMediaSpecimen(media2);
66 Assert.assertEquals(2, dao.countMedia(unit));
67 }
68
69 @Test
70 public void testGetMedia() {
71 MediaSpecimen unit = MediaSpecimen.NewInstance(SpecimenOrObservationType.Media);
72 SpecimenDescription desc = SpecimenDescription.NewInstance(unit);
73 desc.setImageGallery(true);
74 TextData textData = TextData.NewInstance(Feature.IMAGE());
75 desc.addElement(textData);
76 Media media1 = Media.NewInstance(URI.create("https://www.abc.de"), 5, "jpg", "jpg");
77 Media media2 = Media.NewInstance(URI.create("https://www.defg.de"), 5, "jpg", "jpg");
78 textData.addMedia(media1);
79 textData.addMedia(media2);
80
81 Media media3 = Media.NewInstance(URI.create("https://www.hij.de"), 5, "jpg", "jpg");
82 unit.setMediaSpecimen(media3);
83 dao.save(unit);
84
85 List<Media> media = dao.getMedia(unit, null, null, null);
86 Assert.assertEquals(3, media.size());
87 //test that paging works (note: the sorting is not a requirement for the method, but with current implementation it works; if implementation is changed the test may need to be adapted
88 List<Integer> ids = media.stream().map(m->m.getId()).collect(Collectors.toList());
89 Collections.sort(ids);
90 Assert.assertEquals(ids.get(0), (Integer)media.get(0).getId());
91 Assert.assertEquals(ids.get(1), (Integer)media.get(1).getId());
92 Assert.assertEquals(ids.get(2), (Integer)media.get(2).getId());
93 media = dao.getMedia(unit, 2, 1, null);
94 Assert.assertEquals(1, media.size());
95 Assert.assertEquals(ids.get(2), (Integer)media.get(0).getId());
96
97 //test deduplication
98 unit.setMediaSpecimen(media2);
99 Assert.assertEquals(2, dao.countMedia(unit));
100 }
101
102 @Test
103 public void testSaveOriginalLabelData(){
104 DerivedUnit unit = DerivedUnit.NewInstance(SpecimenOrObservationType.DerivedUnit);
105 String originalLabelInfo = StringUtils.pad("my original info", 10000, "x", false);
106 Assert.assertEquals(Integer.valueOf(10000), (Integer)originalLabelInfo.length());
107 unit.setOriginalLabelInfo(originalLabelInfo);
108 //test that lob is supported
109 dao.save(unit);
110 //assert no exception
111 }
112
113 @Override
114 public void createTestDataSet() throws FileNotFoundException {}
115 }