2 * Copyright (C) 2009 EDIT
3 * European Distributed Institute of Taxonomy
4 * http://www.e-taxonomy.eu
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.
9 package eu
.etaxonomy
.cdm
.api
.facade
;
11 import static org
.junit
.Assert
.assertEquals
;
13 import java
.io
.FileNotFoundException
;
14 import java
.lang
.reflect
.Field
;
16 import java
.text
.ParseException
;
17 import java
.util
.HashSet
;
18 import java
.util
.List
;
19 import java
.util
.UUID
;
21 import org
.apache
.log4j
.Logger
;
22 import org
.junit
.Assert
;
23 import org
.junit
.Before
;
24 import org
.junit
.Ignore
;
25 import org
.junit
.Test
;
26 import org
.springframework
.security
.authentication
.UsernamePasswordAuthenticationToken
;
27 import org
.springframework
.security
.core
.context
.SecurityContextHolder
;
28 import org
.unitils
.dbunit
.annotation
.DataSet
;
29 import org
.unitils
.dbunit
.annotation
.ExpectedDataSet
;
30 import org
.unitils
.spring
.annotation
.SpringBeanByType
;
32 import eu
.etaxonomy
.cdm
.api
.service
.IOccurrenceService
;
33 import eu
.etaxonomy
.cdm
.api
.service
.ITermService
;
34 import eu
.etaxonomy
.cdm
.api
.service
.IUserService
;
35 import eu
.etaxonomy
.cdm
.common
.UTF8
;
36 import eu
.etaxonomy
.cdm
.model
.agent
.AgentBase
;
37 import eu
.etaxonomy
.cdm
.model
.agent
.Team
;
38 import eu
.etaxonomy
.cdm
.model
.common
.DefinedTerm
;
39 import eu
.etaxonomy
.cdm
.model
.common
.IdentifiableSource
;
40 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
41 import eu
.etaxonomy
.cdm
.model
.common
.LanguageString
;
42 import eu
.etaxonomy
.cdm
.model
.common
.OriginalSourceType
;
43 import eu
.etaxonomy
.cdm
.model
.common
.TimePeriod
;
44 import eu
.etaxonomy
.cdm
.model
.common
.User
;
45 import eu
.etaxonomy
.cdm
.model
.description
.Feature
;
46 import eu
.etaxonomy
.cdm
.model
.description
.SpecimenDescription
;
47 import eu
.etaxonomy
.cdm
.model
.description
.TextData
;
48 import eu
.etaxonomy
.cdm
.model
.location
.Country
;
49 import eu
.etaxonomy
.cdm
.model
.location
.NamedArea
;
50 import eu
.etaxonomy
.cdm
.model
.location
.Point
;
51 import eu
.etaxonomy
.cdm
.model
.location
.ReferenceSystem
;
52 import eu
.etaxonomy
.cdm
.model
.media
.Media
;
53 import eu
.etaxonomy
.cdm
.model
.name
.Rank
;
54 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
55 import eu
.etaxonomy
.cdm
.model
.occurrence
.Collection
;
56 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEvent
;
57 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivationEventType
;
58 import eu
.etaxonomy
.cdm
.model
.occurrence
.DerivedUnit
;
59 import eu
.etaxonomy
.cdm
.model
.occurrence
.DeterminationEvent
;
60 import eu
.etaxonomy
.cdm
.model
.occurrence
.FieldUnit
;
61 import eu
.etaxonomy
.cdm
.model
.occurrence
.GatheringEvent
;
62 import eu
.etaxonomy
.cdm
.model
.occurrence
.PreservationMethod
;
63 import eu
.etaxonomy
.cdm
.model
.occurrence
.SpecimenOrObservationType
;
64 import eu
.etaxonomy
.cdm
.model
.reference
.Reference
;
65 import eu
.etaxonomy
.cdm
.model
.reference
.ReferenceFactory
;
66 import eu
.etaxonomy
.cdm
.test
.integration
.CdmTransactionalIntegrationTest
;
69 * Test class for {@link DerivedUnitFacade}
74 public class DerivedUnitFacadeTest
extends CdmTransactionalIntegrationTest
{
75 @SuppressWarnings("unused")
76 private static final Logger logger
= Logger
.getLogger(DerivedUnitFacadeTest
.class);
80 private IOccurrenceService service
;
83 private ITermService termService
;
86 private IUserService userService
;
90 DerivationEvent derivationEvent
;
92 GatheringEvent gatheringEvent
;
93 Integer absoluteElevation
= 10;
94 Integer absoluteElevationMaximum
= 14;
95 AgentBase
<?
> collector
= Team
.NewInstance();
96 String collectingMethod
= "Collection Method";
97 Double distanceToGround
= 22.0;
98 Double distanceToSurface
= 0.3;
99 Double distanceToSurfaceMax
= 0.7;
101 ReferenceSystem referenceSystem
= ReferenceSystem
.WGS84();
102 Point exactLocation
= Point
.NewInstance(12.3, 10.567, referenceSystem
, 22);
103 String gatheringEventDescription
= "A nice gathering description";
104 TimePeriod gatheringPeriod
= TimePeriod
.NewInstance(1888, 1889);
106 String fieldNumber
= "15p23B";
107 String fieldNotes
= "such a beautiful specimen";
109 Integer individualCount
= 1;
110 DefinedTerm lifeStage
= DefinedTerm
.NewStageInstance("A wonderful stage", "stage", "st");
111 DefinedTerm sex
= DefinedTerm
.NewSexInstance("FemaleMale", "FM", "FM");
112 LanguageString locality
= LanguageString
.NewInstance("My locality",
115 String accessionNumber
= "888462535";
116 String catalogNumber
= "UU879873590";
117 TaxonNameBase
<?
,?
> taxonName
= TaxonNameBase
.NewBotanicalInstance(Rank
.GENUS(), "Abies",
118 null, null, null, null, null, null, null);
119 String collectorsNumber
= "234589913A34";
120 Collection collection
= Collection
.NewInstance();
121 PreservationMethod preservationMethod
= PreservationMethod
.NewInstance(null, "my prservation");
122 String originalLabelInfo
= "original label info";
123 URI stableUri
= URI
.create("http://www.abc.de");
126 DerivedUnitFacade specimenFacade
;
128 DerivedUnit collectionSpecimen
;
129 GatheringEvent existingGatheringEvent
;
130 DerivationEvent firstDerivationEvent
;
131 FieldUnit firstFieldObject
;
132 Media media1
= Media
.NewInstance();
134 DerivedUnitFacade emptyFacade
;
136 // ****************************** SET UP **********************************/
140 * @throws java.lang.Exception
143 public void setUp() throws Exception
{
145 specimen
= DerivedUnit
.NewPreservedSpecimenInstance();
147 derivationEvent
= DerivationEvent
.NewInstance(DerivationEventType
.ACCESSIONING());
148 specimen
.setDerivedFrom(derivationEvent
);
149 fieldUnit
= FieldUnit
.NewInstance();
150 fieldUnit
.addDerivationEvent(derivationEvent
);
151 gatheringEvent
= GatheringEvent
.NewInstance();
152 fieldUnit
.setGatheringEvent(gatheringEvent
);
153 gatheringEvent
.setAbsoluteElevation(absoluteElevation
);
154 gatheringEvent
.setAbsoluteElevationMax(absoluteElevationMaximum
);
155 gatheringEvent
.setActor(collector
);
156 gatheringEvent
.setCollectingMethod(collectingMethod
);
157 gatheringEvent
.setDistanceToGround(distanceToGround
);
158 gatheringEvent
.setDistanceToWaterSurface(distanceToSurface
);
159 gatheringEvent
.setDistanceToWaterSurfaceMax(distanceToSurfaceMax
);
160 gatheringEvent
.setExactLocation(exactLocation
);
161 gatheringEvent
.setDescription(gatheringEventDescription
);
162 gatheringEvent
.setCountry(Country
.GERMANY());
164 gatheringEvent
.setTimeperiod(gatheringPeriod
);
165 gatheringEvent
.setLocality(locality
);
167 fieldUnit
.setFieldNumber(fieldNumber
);
168 fieldUnit
.setFieldNotes(fieldNotes
);
169 fieldUnit
.setIndividualCount(individualCount
);
170 fieldUnit
.setSex(sex
);
171 fieldUnit
.setLifeStage(lifeStage
);
173 specimen
.setAccessionNumber(accessionNumber
);
174 specimen
.setCatalogNumber(catalogNumber
);
175 specimen
.setStoredUnder(taxonName
);
176 specimen
.setCollection(collection
);
177 specimen
.setPreservation(preservationMethod
);
178 specimen
.setOriginalLabelInfo(originalLabelInfo
);
179 specimen
.setPreferredStableUri(stableUri
);
181 specimenFacade
= DerivedUnitFacade
.NewInstance(specimen
);
183 // existing specimen with 2 derivation events in line
184 collectionSpecimen
= DerivedUnit
.NewPreservedSpecimenInstance();
185 DerivedUnit middleSpecimen
= DerivedUnit
.NewPreservedSpecimenInstance();
186 firstFieldObject
= FieldUnit
.NewInstance();
188 //TODO maybe we should define concrete event types here
189 DerivationEventType eventType
= DerivationEventType
.ACCESSIONING();
190 DerivationEvent lastDerivationEvent
= DerivationEvent
.NewInstance(eventType
);
191 DerivationEvent middleDerivationEvent
= DerivationEvent
.NewInstance(eventType
);
192 firstDerivationEvent
= DerivationEvent
.NewInstance(eventType
);
194 collectionSpecimen
.setDerivedFrom(lastDerivationEvent
);
196 lastDerivationEvent
.addOriginal(middleSpecimen
);
197 middleSpecimen
.setDerivedFrom(firstDerivationEvent
);
198 firstDerivationEvent
.addOriginal(firstFieldObject
);
199 existingGatheringEvent
= GatheringEvent
.NewInstance();
200 firstFieldObject
.setGatheringEvent(existingGatheringEvent
);
203 emptyFacade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
207 // ****************************** TESTS*****************************/
209 @Ignore //doesn't run in suite
211 @DataSet("DerivedUnitFacadeTest.testSetFieldObjectImageGallery.xml")
213 public void testSetFieldObjectImageGallery() {
214 UUID imageFeatureUuid
= Feature
.IMAGE().getUuid();
215 Feature imageFeature
= (Feature
) termService
.find(imageFeatureUuid
);
217 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
218 facade
.innerDerivedUnit().setUuid(UUID
.fromString("77af784f-931b-4857-be9a-48ccf31ed3f1"));
219 facade
.setFieldNumber("12345");
220 Media media
= Media
.NewInstance(URI
.create("www.abc.de"), 200, null,"jpeg");
223 SpecimenDescription imageGallery
= SpecimenDescription
.NewInstance();
224 imageGallery
.setDescribedSpecimenOrObservation(facade
.innerFieldUnit());
225 imageGallery
.setImageGallery(true);
226 TextData textData
= TextData
.NewInstance();
227 textData
.setFeature(imageFeature
);
228 imageGallery
.addElement(textData
);
229 textData
.addMedia(media
);
230 facade
.setFieldObjectImageGallery(imageGallery
);
232 } catch (DerivedUnitFacadeNotSupportedException e1
) {
233 e1
.printStackTrace();
234 Assert
.fail(e1
.getLocalizedMessage());
236 this.service
.save(facade
.innerDerivedUnit());
238 setComplete(); endTransaction();
239 // try {if (true){printDataSet(System.out, new
240 // String[]{"HIBERNATE_SEQUENCES","SPECIMENOROBSERVATIONBASE","SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT"
241 // ,"DERIVATIONEVENT",
242 // "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA",
243 // "MEDIA", "MEDIAREPRESENTATION","MEDIAREPRESENTATIONPART"});}
244 // } catch(Exception e) { logger.warn(e);}
250 // TODO generally works but has id problems when running together with above
251 // test ()setFieldObjectImageGallery. Therefore set to ignore.
252 @DataSet("DerivedUnitFacadeTest.testSetDerivedUnitImageGallery.xml")
254 public void testSetDerivedUnitImageGallery() {
255 // UUID specimenUUID =
256 // UUID.fromString("25383fc8-789b-4eff-92d3-a770d0622351");
257 // Specimen specimen = (Specimen)service.find(specimenUUID);
258 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
259 Media media
= Media
.NewInstance(URI
.create("www.derivedUnitImage.de"),200, null, "png");
262 SpecimenDescription imageGallery
= SpecimenDescription
264 imageGallery
.setDescribedSpecimenOrObservation(facade
.innerDerivedUnit());
265 imageGallery
.setImageGallery(true);
266 TextData textData
= TextData
.NewInstance();
267 imageGallery
.addElement(textData
);
268 textData
.addMedia(media
);
269 facade
.setDerivedUnitImageGallery(imageGallery
);
271 } catch (DerivedUnitFacadeNotSupportedException e1
) {
272 e1
.printStackTrace();
273 Assert
.fail(e1
.getLocalizedMessage());
275 this.service
.save(facade
.innerDerivedUnit());
277 // setComplete(); endTransaction();
278 // try {if (true){printDataSet(System.out, new
279 // String[]{"HIBERNATE_SEQUENCES","SPECIMENOROBSERVATIONBASE","SPECIMENOROBSERVATIONBASE_DERIVATIONEVENT"
280 // ,"DERIVATIONEVENT",
281 // "DESCRIPTIONBASE","DESCRIPTIONELEMENTBASE","DESCRIPTIONELEMENTBASE_MEDIA",
282 // "MEDIA", "MEDIAREPRESENTATION","MEDIAREPRESENTATIONPART"});}
283 // } catch(Exception e) { logger.warn(e);}
290 @Ignore // TODO generally works has id problems with following tests when running in suite
291 public void testGetFieldObjectImageGalleryBooleanPersisted() {
292 UUID specimenUUID
= UUID
.fromString("25383fc8-789b-4eff-92d3-a770d0622351");
293 DerivedUnit specimen
= (DerivedUnit
) service
.load(specimenUUID
);
294 Assert
.assertNotNull("Specimen should exist (persisted)", specimen
);
296 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(specimen
);
297 SpecimenDescription imageGallery
= facade
.getFieldObjectImageGallery(true);
298 Assert
.assertNotNull("Image gallery should exist", imageGallery
);
299 Assert
.assertEquals("UUID should be equal to the persisted uuid",
300 UUID
.fromString("8cb772e9-1577-45c6-91ab-dbec1413c060"),
301 imageGallery
.getUuid());
302 Assert
.assertEquals("The image gallery should be flagged as such",true, imageGallery
.isImageGallery());
303 Assert
.assertEquals("There should be one TextData in image gallery", 1,
304 imageGallery
.getElements().size());
305 List
<Media
> media
= imageGallery
.getElements().iterator().next().getMedia();
306 Assert
.assertEquals("There should be 1 media", 1, media
.size());
307 } catch (DerivedUnitFacadeNotSupportedException e
) {
315 // @Ignore // TODO generally works has id problems with following tests when running in suite
316 public void testGetDerivedUnitImageGalleryBooleanPersisted() {
317 UUID specimenUUID
= UUID
.fromString("25383fc8-789b-4eff-92d3-a770d0622351");
318 DerivedUnit specimen
= (DerivedUnit
) service
.load(specimenUUID
);
319 Assert
.assertNotNull("Specimen should exist (persisted)", specimen
);
321 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(specimen
);
322 SpecimenDescription imageGallery
= facade
.getDerivedUnitImageGallery(true);
323 Assert
.assertNotNull("Image gallery should exist", imageGallery
);
324 Assert
.assertEquals("UUID should be equal to the persisted uuid",
325 UUID
.fromString("cb03acc4-8363-4020-aeef-ea8a8bcc0fe9"),
326 imageGallery
.getUuid());
327 Assert
.assertEquals("The image gallery should be flagged as such",
328 true, imageGallery
.isImageGallery());
330 "There should be one TextData in image gallery", 1,
331 imageGallery
.getElements().size());
332 List
<Media
> media
= imageGallery
.getElements().iterator().next().getMedia();
333 Assert
.assertEquals("There should be 1 media", 1, media
.size());
334 } catch (DerivedUnitFacadeNotSupportedException e
) {
341 public void testGetDerivedUnitImageGalleryBoolean() {
342 DerivedUnit specimen
= DerivedUnit
.NewPreservedSpecimenInstance();
344 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(specimen
);
345 SpecimenDescription imageGallery
= facade
.getDerivedUnitImageGallery(true);
346 Assert
.assertNotNull("Image Gallery should have been created",imageGallery
);
347 Assert
.assertEquals("The image gallery should be flagged as such",true, imageGallery
.isImageGallery());
348 } catch (DerivedUnitFacadeNotSupportedException e
) {
357 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#NewInstance()}.
360 public void testNewInstanceGatheringEventCreated() {
361 Assert
.assertNotNull("The specimen should have been created",
362 specimenFacade
.innerDerivedUnit());
364 Assert
.assertNotNull("The derivation event should have been created",
365 specimenFacade
.innerDerivedUnit().getDerivedFrom());
366 Assert
.assertNotNull("The field unit should have been created",
367 specimenFacade
.innerFieldUnit());
368 Assert
.assertNotNull("The gathering event should have been created",
369 specimenFacade
.innerGatheringEvent());
377 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#NewInstance(eu.etaxonomy.cdm.model.occurrence.Specimen)}
381 public void testNewInstanceSpecimen() {
382 Assert
.assertSame("Specimen should be same", specimen
,
383 specimenFacade
.innerDerivedUnit());
384 Assert
.assertSame("Derivation event should be same", derivationEvent
,
385 specimenFacade
.innerDerivedUnit().getDerivedFrom());
386 Assert
.assertSame("Field unit should be same", fieldUnit
,
387 specimenFacade
.innerFieldUnit());
388 Assert
.assertSame("Gathering event should be same", gatheringEvent
,
389 specimenFacade
.innerGatheringEvent());
393 public void testNewInstanceSpecimenWithoutFieldUnit() {
394 DerivedUnit parent
= DerivedUnit
.NewPreservedSpecimenInstance();
395 DerivedUnit child
= DerivedUnit
.NewPreservedSpecimenInstance();
396 DerivationEvent
.NewSimpleInstance(parent
, child
, DerivationEventType
.ACCESSIONING());
398 DerivedUnitFacade facade
;
400 facade
= DerivedUnitFacade
.NewInstance(child
);
401 Assert
.assertTrue(facade
.innerDerivedUnit().getDerivedFrom().getOriginals().size() == 1);
402 Assert
.assertNull(facade
.getFieldUnit(false));
403 DerivationEvent
.NewSimpleInstance(FieldUnit
.NewInstance(), parent
, DerivationEventType
.ACCESSIONING());
405 } catch (DerivedUnitFacadeNotSupportedException e
) {
413 public void testGatheringEventIsConnectedToDerivedUnit() {
414 DerivedUnit specimen
= DerivedUnit
.NewPreservedSpecimenInstance();
415 DerivedUnitFacade specimenFacade
;
417 specimenFacade
= DerivedUnitFacade
.NewInstance(specimen
);
418 specimenFacade
.setDistanceToGround(2.0);
419 FieldUnit specimenFieldUnit
= (FieldUnit
) specimen
.getDerivedFrom().getOriginals().iterator().next();
421 "Facade gathering event and specimen gathering event should be the same",
422 specimenFacade
.innerGatheringEvent(),
423 specimenFieldUnit
.getGatheringEvent());
424 } catch (DerivedUnitFacadeNotSupportedException e
) {
425 Assert
.fail("An error should not occur in NewInstance()");
430 public void testNoGatheringEventAndFieldUnit() {
431 DerivedUnit specimen
= DerivedUnit
.NewPreservedSpecimenInstance();
432 DerivedUnitFacade specimenFacade
;
434 specimenFacade
= DerivedUnitFacade
.NewInstance(specimen
);
435 Assert
.assertNull("No field unit should exists",
436 specimenFacade
.innerFieldUnit());
437 } catch (DerivedUnitFacadeNotSupportedException e
) {
438 Assert
.fail("An error should not occur in NewInstance()");
443 public void testInititializeTextDataWithSupportTest() {
445 DerivedUnit specimen
= DerivedUnit
.NewPreservedSpecimenInstance();
446 DerivedUnitFacade specimenFacade
;
448 specimenFacade
= DerivedUnitFacade
.NewInstance(specimen
);
449 specimenFacade
.setEcology("Ecology");
450 String plantDescription
= specimenFacade
.getPlantDescription();
452 "No plantDescription should exist yet and no NPE should be thrown until now",
454 } catch (DerivedUnitFacadeNotSupportedException e
) {
455 Assert
.fail("An error should not occur in NewInstance()");
460 public void testGetSetType() {
461 Assert
.assertEquals("Type must be same", SpecimenOrObservationType
.PreservedSpecimen
, specimenFacade
.getType());
462 SpecimenOrObservationType newType
= SpecimenOrObservationType
.Fossil
;
463 specimenFacade
.setType(newType
);
464 Assert
.assertEquals("New type must be Fossil", newType
, specimenFacade
.getType());
465 Assert
.assertEquals("DerivedUnit recordBasis must be set to Fossil", newType
, specimenFacade
.innerDerivedUnit().getRecordBasis());
470 public void testGetSetCountry() {
471 Assert
.assertEquals("Country must be same", Country
.GERMANY(), specimenFacade
.getCountry());
472 specimenFacade
.setCountry(Country
.FRANCEFRENCHREPUBLIC());
473 Assert
.assertEquals("New country must be France", Country
.FRANCEFRENCHREPUBLIC(), specimenFacade
.getCountry());
478 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addCollectingArea(eu.etaxonomy.cdm.model.location.NamedArea)}
482 public void testAddGetRemoveCollectingArea() {
483 String tdwgLabel
= "GER";
484 NamedArea tdwgArea
= termService
.getAreaByTdwgAbbreviation(tdwgLabel
);
485 NamedArea newCollectingArea
= NamedArea
.NewInstance("A nice area",
487 specimenFacade
.addCollectingArea(newCollectingArea
);
488 Assert
.assertEquals("Exactly 1 area must exist", 1, specimenFacade
489 .getCollectingAreas().size());
490 Assert
.assertSame("Areas should be same", newCollectingArea
,
491 specimenFacade
.innerFieldUnit().getGatheringEvent()
492 .getCollectingAreas().iterator().next());
493 specimenFacade
.addCollectingArea(tdwgArea
);
494 Assert
.assertEquals("Exactly 2 areas must exist", 2, specimenFacade
495 .getCollectingAreas().size());
496 specimenFacade
.removeCollectingArea(newCollectingArea
);
497 Assert
.assertEquals("Exactly 1 area must exist", 1, specimenFacade
498 .getCollectingAreas().size());
499 NamedArea remainingArea
= specimenFacade
.getCollectingAreas()
501 Assert
.assertEquals("Areas should be same", tdwgArea
, remainingArea
);
502 specimenFacade
.removeCollectingArea(tdwgArea
);
503 Assert
.assertEquals("No area should remain", 0, specimenFacade
504 .getCollectingAreas().size());
509 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addCollectingArea(eu.etaxonomy.cdm.model.location.NamedArea)}
513 public void testAddCollectingAreas() {
514 NamedArea firstArea
= NamedArea
.NewInstance("A nice area", "nice", "n");
515 Assert
.assertEquals("No area must exist", 0, specimenFacade
.getCollectingAreas().size());
516 specimenFacade
.addCollectingArea(firstArea
);
517 Assert
.assertEquals("Exactly 1 area must exist", 1, specimenFacade
.getCollectingAreas().size());
519 String tdwgLabel
= "GER";
520 NamedArea tdwgArea
= termService
.getAreaByTdwgAbbreviation(tdwgLabel
);
521 NamedArea secondArea
= NamedArea
.NewInstance("A nice area", "nice", "n");
523 java
.util
.Collection
<NamedArea
> areaCollection
= new HashSet
<NamedArea
>();
524 areaCollection
.add(secondArea
);
525 areaCollection
.add(tdwgArea
);
526 specimenFacade
.addCollectingAreas(areaCollection
);
527 Assert
.assertEquals("Exactly 3 areas must exist", 3, specimenFacade
528 .getCollectingAreas().size());
533 * Test method for getting and setting absolute elevation.
534 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getAbsoluteElevation()}
538 public void testGetSetAbsoluteElevation() {
539 Assert
.assertEquals("Absolute elevation must be same",absoluteElevation
, specimenFacade
.getAbsoluteElevation());
540 specimenFacade
.setAbsoluteElevation(400);
541 Assert
.assertEquals("Absolute elevation must be 400",Integer
.valueOf(400), specimenFacade
.getAbsoluteElevation());
546 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getAbsoluteElevationError()}
550 public void testGetSetAbsoluteElevationMaximum() {
551 Assert
.assertEquals("Absolute elevation must be same",absoluteElevation
, specimenFacade
.getAbsoluteElevation());
552 Assert
.assertEquals("Absolute elevation maximum must be same",absoluteElevationMaximum
, specimenFacade
.getAbsoluteElevationMaximum());
553 specimenFacade
.setAbsoluteElevationMax(4);
554 Assert
.assertEquals("Absolute elevation maximum must be 4", Integer
.valueOf(4), specimenFacade
.getAbsoluteElevationMaximum());
555 Assert
.assertEquals("Absolute elevation must be same",absoluteElevation
, specimenFacade
.getAbsoluteElevation());
560 public void testGetSetAbsoluteElevationRange() {
561 Assert
.assertEquals("", absoluteElevation
, specimenFacade
.getAbsoluteElevation());
562 Assert
.assertEquals("", absoluteElevationMaximum
,specimenFacade
.getAbsoluteElevationMaximum());
564 specimenFacade
.setAbsoluteElevationRange(30, 36);
565 Assert
.assertEquals("", Integer
.valueOf(36),specimenFacade
.getAbsoluteElevationMaximum());
566 Assert
.assertEquals("", Integer
.valueOf(30),specimenFacade
.getAbsoluteElevation());
567 Assert
.assertEquals("", "30" + UTF8
.EN_DASH_SPATIUM
+ "36 m",specimenFacade
.absoluteElevationToString());
568 Assert
.assertEquals("", null,specimenFacade
.getAbsoluteElevationText());
570 specimenFacade
.setAbsoluteElevationRange(30, 35);
571 Assert
.assertEquals("Odd range should not throw an exception anymore",
572 String
.format("30%s35 m", UTF8
.EN_DASH_SPATIUM
),specimenFacade
.absoluteElevationToString());
574 specimenFacade
.setAbsoluteElevationRange(41, null);
575 Assert
.assertEquals("", null,specimenFacade
.getAbsoluteElevationMaximum());
576 Assert
.assertEquals("", Integer
.valueOf(41),specimenFacade
.getAbsoluteElevation());
577 Assert
.assertEquals("", Integer
.valueOf(41),specimenFacade
.getAbsoluteElevation());
578 Assert
.assertNull("", specimenFacade
.getAbsoluteElevationText());
579 Assert
.assertEquals("", "41 m",specimenFacade
.absoluteElevationToString());
581 specimenFacade
.setAbsoluteElevationRange(null, null);
582 Assert
.assertNull("", specimenFacade
.getAbsoluteElevation());
583 Assert
.assertNull("", specimenFacade
.getAbsoluteElevationMaximum());
584 Assert
.assertNull("", specimenFacade
.absoluteElevationToString());
589 public void testGetSetAbsoluteElevationText() {
590 Assert
.assertEquals("", absoluteElevation
, specimenFacade
.getAbsoluteElevation());
591 Assert
.assertEquals("", absoluteElevationMaximum
,specimenFacade
.getAbsoluteElevationMaximum());
592 Assert
.assertEquals("", null,specimenFacade
.getAbsoluteElevationText());
594 String elevText
= "approx. 30 - 35";
595 specimenFacade
.setAbsoluteElevationText(elevText
);
596 Assert
.assertEquals("", absoluteElevation
, specimenFacade
.getAbsoluteElevation());
597 Assert
.assertEquals("", absoluteElevationMaximum
,specimenFacade
.getAbsoluteElevationMaximum());
598 Assert
.assertEquals("", elevText
,specimenFacade
.absoluteElevationToString());
600 specimenFacade
.setAbsoluteElevationRange(30, 35);
601 Assert
.assertEquals("ToString should not change by setting range if text is set", elevText
,specimenFacade
.absoluteElevationToString());
602 Assert
.assertEquals("", Integer
.valueOf(30), specimenFacade
.getAbsoluteElevation());
603 Assert
.assertEquals("", Integer
.valueOf(35),specimenFacade
.getAbsoluteElevationMaximum());
606 specimenFacade
.setAbsoluteElevationRange(41, null);
607 Assert
.assertEquals("ToString should not change by setting range if text is set", elevText
,specimenFacade
.absoluteElevationToString());
608 Assert
.assertEquals("", Integer
.valueOf(41), specimenFacade
.getAbsoluteElevation());
609 Assert
.assertEquals("", null,specimenFacade
.getAbsoluteElevationMaximum());
612 specimenFacade
.setAbsoluteElevationText(null);
613 Assert
.assertNull("", specimenFacade
.getAbsoluteElevationText());
614 Assert
.assertEquals("ToString should change by setting text to null", "41 m",specimenFacade
.absoluteElevationToString());
615 Assert
.assertEquals("", Integer
.valueOf(41), specimenFacade
.getAbsoluteElevation());
616 Assert
.assertEquals("", null,specimenFacade
.getAbsoluteElevationMaximum());
623 public void testGetSetCollector() {
624 Assert
.assertNotNull("Collector must not be null",
625 specimenFacade
.getCollector());
626 Assert
.assertEquals("Collector must be same", collector
,
627 specimenFacade
.getCollector());
628 specimenFacade
.setCollector(null);
629 Assert
.assertNull("Collector must be null",
630 specimenFacade
.getCollector());
635 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getCollectingMethod()}
639 public void testGetSetCollectingMethod() {
640 Assert
.assertEquals("Collecting method must be same", collectingMethod
,
641 specimenFacade
.getCollectingMethod());
642 specimenFacade
.setCollectingMethod("new method");
643 Assert
.assertEquals("Collecting method must be 'new method'",
644 "new method", specimenFacade
.getCollectingMethod());
649 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getDistanceToGround()}
653 public void testGetSetDistanceToGround() {
654 Assert
.assertEquals("Distance to ground must be same",distanceToGround
, specimenFacade
.getDistanceToGround());
655 specimenFacade
.setDistanceToGround(5.0);
656 Assert
.assertEquals("Distance to ground must be 5", Double
.valueOf(5), specimenFacade
.getDistanceToGround());
661 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getDistanceToWaterSurface()}
665 public void testGetDistanceToWaterSurface() {
666 Assert
.assertEquals("Distance to surface must be same", distanceToSurface
, specimenFacade
.getDistanceToWaterSurface());
667 specimenFacade
.setDistanceToWaterSurface(6.0);
668 Assert
.assertEquals("Distance to surface must be 6", Double
.valueOf(6), specimenFacade
.getDistanceToWaterSurface());
669 // empty facade tests
670 Assert
.assertNull("Empty facace must not have any gathering values", emptyFacade
.getDistanceToWaterSurface());
671 emptyFacade
.setDistanceToWaterSurface(13.0);
672 Assert
.assertNotNull("Field unit must exist if distance to water exists", emptyFacade
.getFieldUnit(false));
673 Assert
.assertNotNull("Gathering event must exist if distance to water exists", emptyFacade
.getGatheringEvent(false));
674 FieldUnit specimenFieldUnit
= (FieldUnit
) emptyFacade
675 .innerDerivedUnit().getDerivedFrom().getOriginals().iterator().next();
676 Assert
.assertSame("Gathering event of facade and of specimen must be the same",
677 specimenFieldUnit
.getGatheringEvent(), emptyFacade
.getGatheringEvent(false));
681 public void testGetSetDistanceToWaterText() {
682 Assert
.assertEquals("", distanceToSurface
, specimenFacade
.getDistanceToWaterSurface());
683 Assert
.assertEquals("", distanceToSurfaceMax
,specimenFacade
.getDistanceToWaterSurfaceMax());
684 Assert
.assertEquals("", null,specimenFacade
.getDistanceToWaterSurfaceText());
686 String distText
= "approx. 0.3 - 0.6";
687 specimenFacade
.setDistanceToWaterSurfaceText(distText
);
688 Assert
.assertEquals("", distanceToSurface
, specimenFacade
.getDistanceToWaterSurface());
689 Assert
.assertEquals("", distanceToSurfaceMax
,specimenFacade
.getDistanceToWaterSurfaceMax());
690 Assert
.assertEquals("", distText
,specimenFacade
.distanceToWaterSurfaceToString());
692 specimenFacade
.setDistanceToWaterSurfaceRange(0.6, 1.4);
693 Assert
.assertEquals("ToString should not change by setting range if text is set", distText
,specimenFacade
.distanceToWaterSurfaceToString());
694 Assert
.assertEquals("", Double
.valueOf(0.6), specimenFacade
.getDistanceToWaterSurface());
695 Assert
.assertEquals("", Double
.valueOf(1.4),specimenFacade
.getDistanceToWaterSurfaceMax());
697 specimenFacade
.setDistanceToWaterSurfaceRange(41.2, null);
698 Assert
.assertEquals("ToString should not change by setting range if text is set", distText
,specimenFacade
.distanceToWaterSurfaceToString());
699 Assert
.assertEquals("", Double
.valueOf(41.2), specimenFacade
.getDistanceToWaterSurface());
700 Assert
.assertEquals("", null,specimenFacade
.getDistanceToWaterSurfaceMax());
702 specimenFacade
.setDistanceToWaterSurfaceText(null);
703 Assert
.assertNull("", specimenFacade
.getDistanceToWaterSurfaceText());
704 Assert
.assertEquals("ToString should change by setting text to null", "41.2 m",specimenFacade
.distanceToWaterSurfaceToString());
705 Assert
.assertEquals("", Double
.valueOf(41.2), specimenFacade
.getDistanceToWaterSurface());
706 Assert
.assertEquals("", null,specimenFacade
.getDistanceToWaterSurfaceMax());
712 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getExactLocation()}.
715 public void testGetSetExactLocation() {
716 Assert
.assertNotNull("Exact location must not be null",
717 specimenFacade
.getExactLocation());
718 Assert
.assertEquals("Exact location must be same", exactLocation
,
719 specimenFacade
.getExactLocation());
720 specimenFacade
.setExactLocation(null);
721 Assert
.assertNull("Exact location must be null",
722 specimenFacade
.getExactLocation());
726 public void testSetExactLocationByParsing() {
729 specimenFacade
.setExactLocationByParsing("112\u00B034'20\"W",
730 "34\u00B030,34'N", null, null);
731 point1
= specimenFacade
.getExactLocation();
732 Assert
.assertNotNull("", point1
.getLatitude());
733 System
.out
.println(point1
.getLatitude().toString());
734 Assert
.assertTrue("",
735 point1
.getLatitude().toString().startsWith("34.505"));
736 System
.out
.println(point1
.getLongitude().toString());
737 Assert
.assertTrue("",
738 point1
.getLongitude().toString().startsWith("-112.5722"));
740 } catch (ParseException e
) {
741 Assert
.fail("No parsing error should occur");
747 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getGatheringEventDescription()}
751 public void testGetSetGatheringEventDescription() {
752 Assert
.assertEquals("Gathering event description must be same",
753 gatheringEventDescription
,
754 specimenFacade
.getGatheringEventDescription());
755 specimenFacade
.setGatheringEventDescription("new description");
757 "Gathering event description must be 'new description' now",
759 specimenFacade
.getGatheringEventDescription());
764 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getTimeperiod()}.
767 public void testGetTimeperiod() {
768 Assert
.assertNotNull("Gathering period must not be null", specimenFacade
.getGatheringPeriod());
769 Assert
.assertFalse("Gathering period must not be empty", specimenFacade
.getGatheringPeriod().isEmpty());
770 Assert
.assertEquals("Gathering period must be same", gatheringPeriod
, specimenFacade
.getGatheringPeriod());
771 specimenFacade
.setGatheringPeriod(null);
772 Assert
.assertTrue("Gathering period must be null", specimenFacade
.getGatheringPeriod().isEmpty());
776 public void testHasFieldObject() throws SecurityException
,
777 NoSuchFieldException
, IllegalArgumentException
,
778 IllegalAccessException
{
779 // this test depends on the current implementation of SpecimenFacade. In
781 // field unit may not be initialized from the beginning. Than the
783 // assert should be set to assertNull
784 Assert
.assertTrue("field object should not be null (depends on specimen facade initialization !!)",
785 specimenFacade
.hasFieldObject());
787 Field fieldUnitField
= DerivedUnitFacade
.class.getDeclaredField("fieldUnit");
788 fieldUnitField
.setAccessible(true);
789 fieldUnitField
.set(specimenFacade
, null);
790 Assert
.assertFalse("The field unit should be null now",
791 specimenFacade
.hasFieldObject());
793 specimenFacade
.setDistanceToGround(33.0);
795 "The field unit should have been created again",
796 specimenFacade
.hasFieldObject());
801 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addFieldObjectDefinition(java.lang.String, eu.etaxonomy.cdm.model.common.Language)}
805 public void testAddGetRemoveFieldObjectDefinition() {
806 Assert
.assertEquals("There should be no definition yet", 0,
807 specimenFacade
.getFieldObjectDefinition().size());
808 specimenFacade
.addFieldObjectDefinition("Tres interesant",
810 Assert
.assertEquals("There should be exactly one definition", 1,
811 specimenFacade
.getFieldObjectDefinition().size());
813 "The French definition should be 'Tres interesant'",
814 "Tres interesant", specimenFacade
.getFieldObjectDefinition()
815 .get(Language
.FRENCH()).getText());
817 "The French definition should be 'Tres interesant'",
819 specimenFacade
.getFieldObjectDefinition(Language
.FRENCH()));
820 specimenFacade
.addFieldObjectDefinition("Sehr interessant",
822 Assert
.assertEquals("There should be exactly 2 definition", 2,
823 specimenFacade
.getFieldObjectDefinition().size());
824 specimenFacade
.removeFieldObjectDefinition(Language
.FRENCH());
825 Assert
.assertEquals("There should remain exactly 1 definition", 1,
826 specimenFacade
.getFieldObjectDefinition().size());
828 "The remaining German definition should be 'Sehr interessant'",
830 specimenFacade
.getFieldObjectDefinition(Language
.GERMAN()));
831 specimenFacade
.removeFieldObjectDefinition(Language
.GERMAN());
832 Assert
.assertEquals("There should remain no definition", 0,
833 specimenFacade
.getFieldObjectDefinition().size());
838 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addFieldObjectMedia(eu.etaxonomy.cdm.model.media.Media)}
842 public void testAddGetHasRemoveFieldObjectMedia() {
843 Assert
.assertFalse("There should be no image gallery yet",
844 specimenFacade
.hasFieldObjectImageGallery());
845 Assert
.assertFalse("There should be no specimen image gallery either",
846 specimenFacade
.hasDerivedUnitImageGallery());
848 List
<Media
> media
= specimenFacade
.getFieldObjectMedia();
849 Assert
.assertFalse("There should still not be an image gallery now",
850 specimenFacade
.hasFieldObjectImageGallery());
851 Assert
.assertEquals("There should be no media yet in the gallery", 0,
854 Media media1
= Media
.NewInstance();
855 specimenFacade
.addFieldObjectMedia(media1
);
856 Assert
.assertEquals("There should be exactly one specimen media", 1,
857 specimenFacade
.getFieldObjectMedia().size());
858 Assert
.assertEquals("The only media should be media 1", media1
,
859 specimenFacade
.getFieldObjectMedia().get(0));
861 "There should still no specimen image gallery exist",
862 specimenFacade
.hasDerivedUnitImageGallery());
864 Media media2
= Media
.NewInstance();
865 specimenFacade
.addFieldObjectMedia(media2
);
866 Assert
.assertEquals("There should be exactly 2 specimen media", 2,
867 specimenFacade
.getFieldObjectMedia().size());
868 Assert
.assertEquals("The first media should be media1", media1
,
869 specimenFacade
.getFieldObjectMedia().get(0));
870 Assert
.assertEquals("The second media should be media2", media2
,
871 specimenFacade
.getFieldObjectMedia().get(1));
873 specimenFacade
.removeFieldObjectMedia(media1
);
874 Assert
.assertEquals("There should be exactly one specimen media", 1,
875 specimenFacade
.getFieldObjectMedia().size());
876 Assert
.assertEquals("The only media should be media2", media2
,
877 specimenFacade
.getFieldObjectMedia().get(0));
879 specimenFacade
.removeFieldObjectMedia(media1
);
880 Assert
.assertEquals("There should still be exactly one specimen media",
881 1, specimenFacade
.getFieldObjectMedia().size());
883 specimenFacade
.removeFieldObjectMedia(media2
);
884 Assert
.assertEquals("There should remain no media in the gallery", 0,
891 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addFieldObjectMedia(eu.etaxonomy.cdm.model.media.Media)}
895 public void testGetSetEcology() {
896 Assert
.assertNotNull(
897 "An empty ecology data should be created when calling getEcology()",
898 specimenFacade
.getEcologyAll());
900 "An empty ecology data should be created when calling getEcology()",
901 0, specimenFacade
.getEcologyAll().size());
902 specimenFacade
.setEcology("Tres jolie ici", Language
.FRENCH());
903 Assert
.assertEquals("Ecology data should exist for 1 language", 1,
904 specimenFacade
.getEcologyAll().size());
906 "Ecology data should be 'Tres jolie ici' for French",
907 "Tres jolie ici", specimenFacade
.getEcology(Language
.FRENCH()));
909 "Ecology data should be null for the default language",
910 specimenFacade
.getEcology());
911 specimenFacade
.setEcology("Nice here");
912 Assert
.assertEquals("Ecology data should exist for 2 languages", 2,
913 specimenFacade
.getEcologyAll().size());
914 Assert
.assertEquals("Ecology data should be 'Tres jolie ici'",
915 "Tres jolie ici", specimenFacade
.getEcology(Language
.FRENCH()));
917 "Ecology data should be 'Nice here' for the default language",
918 "Nice here", specimenFacade
.getEcology());
919 Assert
.assertEquals("Ecology data should be 'Nice here' for english",
920 "Nice here", specimenFacade
.getEcology());
922 specimenFacade
.setEcology("Vert et rouge", Language
.FRENCH());
923 Assert
.assertEquals("Ecology data should exist for 2 languages", 2,
924 specimenFacade
.getEcologyAll().size());
925 Assert
.assertEquals("Ecology data should be 'Vert et rouge'",
926 "Vert et rouge", specimenFacade
.getEcology(Language
.FRENCH()));
928 "Ecology data should be 'Nice here' for the default language",
929 "Nice here", specimenFacade
.getEcology());
931 specimenFacade
.setEcology(null, Language
.FRENCH());
932 Assert
.assertEquals("Ecology data should exist for 1 languages", 1,
933 specimenFacade
.getEcologyAll().size());
935 "Ecology data should be 'Nice here' for the default language",
936 "Nice here", specimenFacade
.getEcology());
937 Assert
.assertNull("Ecology data should be 'null' for French",
938 specimenFacade
.getEcology(Language
.FRENCH()));
940 specimenFacade
.removeEcology(null);
941 Assert
.assertEquals("There should be no ecology left", 0,
942 specimenFacade
.getEcologyAll().size());
943 Assert
.assertNull("Ecology data should be 'null' for default language",
944 specimenFacade
.getEcology());
950 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addFieldObjectMedia(eu.etaxonomy.cdm.model.media.Media)}
954 public void testGetSetPlantDescription() {
955 Assert
.assertNotNull(
956 "An empty plant description data should be created when calling getPlantDescriptionAll()",
957 specimenFacade
.getPlantDescriptionAll());
959 "An empty plant description data should be created when calling getPlantDescription()",
960 0, specimenFacade
.getPlantDescriptionAll().size());
961 specimenFacade
.setPlantDescription("bleu", Language
.FRENCH());
963 "Plant description data should exist for 1 language", 1,
964 specimenFacade
.getPlantDescriptionAll().size());
966 "Plant description data should be 'bleu' for French", "bleu",
967 specimenFacade
.getPlantDescription(Language
.FRENCH()));
969 "Plant description data should be null for the default language",
970 specimenFacade
.getPlantDescription());
971 specimenFacade
.setPlantDescription("Nice here");
973 "Plant description data should exist for 2 languages", 2,
974 specimenFacade
.getPlantDescriptionAll().size());
975 Assert
.assertEquals("Plant description data should be 'bleu'", "bleu",
976 specimenFacade
.getPlantDescription(Language
.FRENCH()));
978 "Plant description data should be 'Nice here' for the default language",
979 "Nice here", specimenFacade
.getPlantDescription());
981 "Plant description data should be 'Nice here' for english",
982 "Nice here", specimenFacade
.getPlantDescription());
984 specimenFacade
.setPlantDescription("Vert et rouge", Language
.FRENCH());
986 "Plant description data should exist for 2 languages", 2,
987 specimenFacade
.getPlantDescriptionAll().size());
988 Assert
.assertEquals("Plant description data should be 'Vert et rouge'",
990 specimenFacade
.getPlantDescription(Language
.FRENCH()));
992 "Plant description data should be 'Nice here' for the default language",
993 "Nice here", specimenFacade
.getPlantDescription());
995 specimenFacade
.setPlantDescription(null, Language
.FRENCH());
997 "Plant description data should exist for 1 languages", 1,
998 specimenFacade
.getPlantDescriptionAll().size());
1000 "Plant description data should be 'Nice here' for the default language",
1001 "Nice here", specimenFacade
.getPlantDescription());
1002 Assert
.assertNull("Plant description data should be 'null' for French",
1003 specimenFacade
.getPlantDescription(Language
.FRENCH()));
1005 // test interference with ecology
1006 specimenFacade
.setEcology("Tres jolie ici", Language
.FRENCH());
1007 Assert
.assertEquals("Ecology data should exist for 1 language", 1,
1008 specimenFacade
.getEcologyAll().size());
1009 Assert
.assertEquals(
1010 "Ecology data should be 'Tres jolie ici' for French",
1011 "Tres jolie ici", specimenFacade
.getEcology(Language
.FRENCH()));
1013 "Ecology data should be null for the default language",
1014 specimenFacade
.getEcology());
1016 // repeat above test
1017 Assert
.assertEquals(
1018 "Plant description data should exist for 1 languages", 1,
1019 specimenFacade
.getPlantDescriptionAll().size());
1020 Assert
.assertEquals(
1021 "Plant description data should be 'Nice here' for the default language",
1022 "Nice here", specimenFacade
.getPlantDescription());
1023 Assert
.assertNull("Plant description data should be 'null' for French",
1024 specimenFacade
.getPlantDescription(Language
.FRENCH()));
1026 specimenFacade
.removePlantDescription(null);
1027 Assert
.assertEquals("There should be no plant description left", 0,
1028 specimenFacade
.getPlantDescriptionAll().size());
1030 "Plant description data should be 'null' for default language",
1031 specimenFacade
.getPlantDescription());
1037 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getFieldNumber()}.
1040 public void testGetSetFieldNumber() {
1041 Assert
.assertEquals("Field number must be same", fieldNumber
,
1042 specimenFacade
.getFieldNumber());
1043 specimenFacade
.setFieldNumber("564AB");
1044 Assert
.assertEquals("New field number must be '564AB'", "564AB",
1045 specimenFacade
.getFieldNumber());
1046 // empty facade tests
1047 Assert
.assertNull("Empty facace must not have any field value",
1048 emptyFacade
.getFieldNumber());
1049 emptyFacade
.setFieldNumber("1256A");
1050 Assert
.assertNotNull(
1051 "Field unit must exist if field number exists",
1052 emptyFacade
.getFieldUnit(false));
1053 FieldUnit specimenFieldUnit
= (FieldUnit
) emptyFacade
1054 .innerDerivedUnit().getDerivedFrom().getOriginals().iterator()
1057 "Field unit of facade and of specimen must be the same",
1059 emptyFacade
.getFieldUnit(false));
1060 Assert
.assertEquals("1256A", emptyFacade
.getFieldNumber());
1065 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getFieldNotes()}.
1068 public void testGetSetFieldNotes() {
1069 Assert
.assertEquals("Field notes must be same", fieldNotes
,
1070 specimenFacade
.getFieldNotes());
1071 specimenFacade
.setFieldNotes("A completely new info");
1072 Assert
.assertEquals("New field note must be 'A completely new info'",
1073 "A completely new info", specimenFacade
.getFieldNotes());
1078 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#setGatheringEvent(eu.etaxonomy.cdm.model.occurrence.GatheringEvent)}
1082 @Ignore // #######DerivationEvent ---------------------------------------- 1
1083 public void testSetGatheringEvent() {
1084 GatheringEvent newGatheringEvent
= GatheringEvent
.NewInstance();
1085 newGatheringEvent
.setDistanceToGround(43.0);
1086 Assert
.assertFalse("The initial distance to ground should not be 43",
1087 specimenFacade
.getDistanceToGround() == 43.0);
1088 specimenFacade
.setGatheringEvent(newGatheringEvent
);
1089 Assert
.assertTrue("The final distance to ground should be 43",
1090 specimenFacade
.getDistanceToGround() == 43.0);
1092 "The new gathering event should be 'newGatheringEvent'",
1093 newGatheringEvent
, specimenFacade
.innerGatheringEvent());
1098 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#innerGatheringEvent()}
1102 public void testGetGatheringEvent() {
1103 Assert
.assertNotNull("Gathering event must not be null",
1104 specimenFacade
.innerGatheringEvent());
1105 Assert
.assertEquals(
1106 "Gathering event must be field unit's gathering event",
1107 specimenFacade
.innerFieldUnit().getGatheringEvent(),
1108 specimenFacade
.innerGatheringEvent());
1113 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getIndividualCount()}
1117 public void testGetSetIndividualCount() {
1118 Assert
.assertEquals("Individual count must be same", individualCount
,
1119 specimenFacade
.getIndividualCount());
1120 specimenFacade
.setIndividualCount(4);
1121 Assert
.assertEquals("New individual count must be '4'",
1122 Integer
.valueOf(4), specimenFacade
.getIndividualCount());
1128 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getLifeStage()}.
1131 public void testGetSetLifeStage() {
1132 Assert
.assertNotNull("Life stage must not be null",
1133 specimenFacade
.getLifeStage());
1134 Assert
.assertEquals("Life stage must be same", lifeStage
,
1135 specimenFacade
.getLifeStage());
1136 specimenFacade
.setLifeStage(null);
1137 Assert
.assertNull("Life stage must be null",
1138 specimenFacade
.getLifeStage());
1143 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getSex()}.
1146 public void testGetSetSex() {
1147 Assert
.assertNotNull("Sex must not be null", specimenFacade
.getSex());
1148 Assert
.assertEquals("Sex must be same", sex
, specimenFacade
.getSex());
1149 specimenFacade
.setSex(null);
1150 Assert
.assertNull("Sex must be null", specimenFacade
.getSex());
1155 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getLocality()}.
1158 public void testGetSetLocality() {
1159 Assert
.assertEquals("Locality must be same", locality
,
1160 specimenFacade
.getLocality());
1161 specimenFacade
.setLocality("A completely new place", Language
.FRENCH());
1162 Assert
.assertEquals("New locality must be 'A completely new place'",
1163 "A completely new place", specimenFacade
.getLocalityText());
1164 Assert
.assertEquals("New locality language must be French",
1165 Language
.FRENCH(), specimenFacade
.getLocalityLanguage());
1166 specimenFacade
.setLocality("Another place");
1167 Assert
.assertEquals("New locality must be 'Another place'",
1168 "Another place", specimenFacade
.getLocalityText());
1169 Assert
.assertEquals("New locality language must be default",
1170 Language
.DEFAULT(), specimenFacade
.getLocalityLanguage());
1175 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addDerivedUnitDefinition(java.lang.String, eu.etaxonomy.cdm.model.common.Language)}
1179 public void testAddGetRemoveSpecimenDefinition() {
1180 Assert
.assertEquals("There should be no definition yet", 0,
1181 specimenFacade
.getDerivedUnitDefinitions().size());
1182 specimenFacade
.addDerivedUnitDefinition("Tres interesant",
1184 Assert
.assertEquals("There should be exactly one definition", 1,
1185 specimenFacade
.getDerivedUnitDefinitions().size());
1186 Assert
.assertEquals(
1187 "The French definition should be 'Tres interesant'",
1188 "Tres interesant", specimenFacade
.getDerivedUnitDefinitions()
1189 .get(Language
.FRENCH()).getText());
1190 Assert
.assertEquals(
1191 "The French definition should be 'Tres interesant'",
1193 specimenFacade
.getDerivedUnitDefinition(Language
.FRENCH()));
1194 specimenFacade
.addDerivedUnitDefinition("Sehr interessant",
1196 Assert
.assertEquals("There should be exactly 2 definition", 2,
1197 specimenFacade
.getDerivedUnitDefinitions().size());
1198 specimenFacade
.removeDerivedUnitDefinition(Language
.FRENCH());
1199 Assert
.assertEquals("There should remain exactly 1 definition", 1,
1200 specimenFacade
.getDerivedUnitDefinitions().size());
1201 Assert
.assertEquals(
1202 "The remaining German definition should be 'Sehr interessant'",
1204 specimenFacade
.getDerivedUnitDefinition(Language
.GERMAN()));
1205 specimenFacade
.removeDerivedUnitDefinition(Language
.GERMAN());
1206 Assert
.assertEquals("There should remain no definition", 0,
1207 specimenFacade
.getDerivedUnitDefinitions().size());
1212 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addDetermination(eu.etaxonomy.cdm.model.occurrence.DeterminationEvent)}
1216 public void testAddGetRemoveDetermination() {
1217 Assert
.assertEquals("There should be no determination yet", 0,
1218 specimenFacade
.getDeterminations().size());
1219 DeterminationEvent determinationEvent1
= DeterminationEvent
1221 specimenFacade
.addDetermination(determinationEvent1
);
1222 Assert
.assertEquals("There should be exactly one determination", 1,
1223 specimenFacade
.getDeterminations().size());
1224 Assert
.assertEquals("The only determination should be determination 1",
1225 determinationEvent1
, specimenFacade
.getDeterminations()
1226 .iterator().next());
1228 DeterminationEvent determinationEvent2
= DeterminationEvent
1230 specimenFacade
.addDetermination(determinationEvent2
);
1231 Assert
.assertEquals("There should be exactly 2 determinations", 2,
1232 specimenFacade
.getDeterminations().size());
1233 specimenFacade
.removeDetermination(determinationEvent1
);
1235 Assert
.assertEquals("There should remain exactly 1 determination", 1,
1236 specimenFacade
.getDeterminations().size());
1237 Assert
.assertEquals(
1238 "The remaining determinations should be determination 2",
1239 determinationEvent2
, specimenFacade
.getDeterminations()
1240 .iterator().next());
1242 specimenFacade
.removeDetermination(determinationEvent1
);
1243 Assert
.assertEquals("There should remain exactly 1 determination", 1,
1244 specimenFacade
.getDeterminations().size());
1246 specimenFacade
.removeDetermination(determinationEvent2
);
1247 Assert
.assertEquals("There should remain no definition", 0,
1248 specimenFacade
.getDerivedUnitDefinitions().size());
1255 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addDetermination(eu.etaxonomy.cdm.model.occurrence.DeterminationEvent)}
1259 public void testPreferredOtherDeterminations() {
1260 Assert
.assertEquals("There should be no determination yet", 0,
1261 specimenFacade
.getDeterminations().size());
1262 DeterminationEvent determinationEvent1
= DeterminationEvent
.NewInstance();
1263 specimenFacade
.setPreferredDetermination(determinationEvent1
);
1265 Assert
.assertEquals("There should be exactly one determination", 1,
1266 specimenFacade
.getDeterminations().size());
1267 Assert
.assertEquals("The only determination should be determination 1",
1268 determinationEvent1
, specimenFacade
.getDeterminations()
1269 .iterator().next());
1270 Assert
.assertEquals("determination 1 should be the preferred determination",
1271 determinationEvent1
, specimenFacade
.getPreferredDetermination());
1272 Assert
.assertEquals("There should be no 'non preferred' determination", 0,
1273 specimenFacade
.getOtherDeterminations().size());
1277 DeterminationEvent determinationEvent2
= DeterminationEvent
.NewInstance();
1278 specimenFacade
.addDetermination(determinationEvent2
);
1279 Assert
.assertEquals("There should be exactly 2 determinations", 2,
1280 specimenFacade
.getDeterminations().size());
1281 Assert
.assertEquals("determination 1 should be the preferred determination",
1282 determinationEvent1
, specimenFacade
.getPreferredDetermination());
1283 Assert
.assertEquals("There should be one 'non preferred' determination", 1,
1284 specimenFacade
.getOtherDeterminations().size());
1285 Assert
.assertEquals("The only 'non preferred' determination should be determination 2",
1286 determinationEvent2
, specimenFacade
.getOtherDeterminations().iterator().next());
1289 DeterminationEvent determinationEvent3
= DeterminationEvent
.NewInstance();
1290 specimenFacade
.setPreferredDetermination(determinationEvent3
);
1291 Assert
.assertEquals("There should be exactly 3 determinations", 3,
1292 specimenFacade
.getDeterminations().size());
1293 Assert
.assertEquals("determination 3 should be the preferred determination",
1294 determinationEvent3
, specimenFacade
.getPreferredDetermination());
1295 Assert
.assertEquals("There should be 2 'non preferred' determination", 2,
1296 specimenFacade
.getOtherDeterminations().size());
1297 Assert
.assertTrue("determination 1 should be contained in the set of 'non preferred' determinations",
1298 specimenFacade
.getOtherDeterminations().contains(determinationEvent1
));
1299 Assert
.assertTrue("determination 2 should be contained in the set of 'non preferred' determinations",
1300 specimenFacade
.getOtherDeterminations().contains(determinationEvent2
));
1306 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#addDerivedUnitMedia(eu.etaxonomy.cdm.model.media.Media)}
1310 public void testAddGetHasRemoveSpecimenMedia() {
1311 Assert
.assertFalse("There should be no image gallery yet",
1312 specimenFacade
.hasDerivedUnitImageGallery());
1314 "There should be also no field object image gallery yet",
1315 specimenFacade
.hasFieldObjectImageGallery());
1317 List
<Media
> media
= specimenFacade
.getDerivedUnitMedia();
1319 "There should still not be an empty image gallery now",
1320 specimenFacade
.hasDerivedUnitImageGallery());
1321 Assert
.assertEquals("There should be no media yet in the gallery", 0,
1324 Media media1
= Media
.NewInstance();
1325 specimenFacade
.addDerivedUnitMedia(media1
);
1326 Assert
.assertEquals("There should be exactly one specimen media", 1,
1327 specimenFacade
.getDerivedUnitMedia().size());
1328 Assert
.assertEquals("The only media should be media 1", media1
,
1329 specimenFacade
.getDerivedUnitMedia().get(0));
1331 "There should be still no field object image gallery",
1332 specimenFacade
.hasFieldObjectImageGallery());
1334 Media media2
= Media
.NewInstance();
1335 specimenFacade
.addDerivedUnitMedia(media2
);
1336 Assert
.assertEquals("There should be exactly 2 specimen media", 2,
1337 specimenFacade
.getDerivedUnitMedia().size());
1338 Assert
.assertEquals("The first media should be media1", media1
,
1339 specimenFacade
.getDerivedUnitMedia().get(0));
1340 Assert
.assertEquals("The second media should be media2", media2
,
1341 specimenFacade
.getDerivedUnitMedia().get(1));
1343 specimenFacade
.removeDerivedUnitMedia(media1
);
1344 Assert
.assertEquals("There should be exactly one specimen media", 1,
1345 specimenFacade
.getDerivedUnitMedia().size());
1346 Assert
.assertEquals("The only media should be media2", media2
,
1347 specimenFacade
.getDerivedUnitMedia().get(0));
1349 specimenFacade
.removeDerivedUnitMedia(media1
);
1350 Assert
.assertEquals("There should still be exactly one specimen media",
1351 1, specimenFacade
.getDerivedUnitMedia().size());
1353 specimenFacade
.removeDerivedUnitMedia(media2
);
1354 Assert
.assertEquals("There should remain no media in the gallery", 0,
1360 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getAccessionNumber()}
1364 public void testGetSetAccessionNumber() {
1365 Assert
.assertEquals("Accession number must be same", accessionNumber
,
1366 specimenFacade
.getAccessionNumber());
1367 specimenFacade
.setAccessionNumber("A12345693");
1368 Assert
.assertEquals("New accession number must be 'A12345693'",
1369 "A12345693", specimenFacade
.getAccessionNumber());
1375 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getCatalogNumber()}.
1378 public void testGetCatalogNumber() {
1379 Assert
.assertEquals("Catalog number must be same", catalogNumber
,
1380 specimenFacade
.getCatalogNumber());
1381 specimenFacade
.setCatalogNumber("B12345693");
1382 Assert
.assertEquals("New catalog number must be 'B12345693'",
1383 "B12345693", specimenFacade
.getCatalogNumber());
1388 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getPreservation()}.
1391 public void testGetPreservation() {
1393 Assert
.assertNotNull("Preservation method must not be null",
1394 specimenFacade
.getPreservationMethod());
1395 Assert
.assertEquals("Preservation method must be same",
1396 preservationMethod
, specimenFacade
.getPreservationMethod());
1397 specimenFacade
.setPreservationMethod(null);
1398 Assert
.assertNull("Preservation method must be null",
1399 specimenFacade
.getPreservationMethod());
1400 } catch (MethodNotSupportedByDerivedUnitTypeException e
) {
1401 Assert
.fail("Method not supported should not be thrown for a specimen");
1403 specimenFacade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.Observation
);
1405 specimenFacade
.setPreservationMethod(preservationMethod
);
1406 Assert
.fail("Method not supported should be thrown for an observation on set preservation method");
1408 } catch (MethodNotSupportedByDerivedUnitTypeException e
) {
1411 specimenFacade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.LivingSpecimen
);
1413 specimenFacade
.getPreservationMethod();
1414 Assert
.fail("Method not supported should be thrown for a living being on get preservation method");
1415 } catch (MethodNotSupportedByDerivedUnitTypeException e
) {
1422 public void testGetSetOriginalLabelInfo() {
1423 Assert
.assertEquals("Original label info must be same", originalLabelInfo
,
1424 specimenFacade
.getOriginalLabelInfo());
1425 specimenFacade
.setOriginalLabelInfo("OrigLabel Info xxx");
1426 Assert
.assertEquals("New accession number must be 'OrigLabel Info xxx'",
1427 "OrigLabel Info xxx", specimenFacade
.getOriginalLabelInfo());
1431 public void testGetSetStableUri() {
1432 Assert
.assertEquals("Preferred stable URI must be same", stableUri
,
1433 specimenFacade
.getPreferredStableUri());
1434 URI newURI
= URI
.create("http://www.fgh.ij");
1435 specimenFacade
.setPreferredStableUri(newURI
);
1436 Assert
.assertEquals("New preferred stable must be '" + newURI
.toString() + "'",
1437 newURI
, specimenFacade
.getPreferredStableUri());
1444 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getStoredUnder()}.
1447 public void testGetStoredUnder() {
1448 Assert
.assertNotNull("Stored under name must not be null",
1449 specimenFacade
.getStoredUnder());
1450 Assert
.assertEquals("Stored under name must be same", taxonName
,
1451 specimenFacade
.getStoredUnder());
1452 specimenFacade
.setStoredUnder(null);
1453 Assert
.assertNull("Stored under name must be null",
1454 specimenFacade
.getStoredUnder());
1458 // * Test method for
1459 // * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getCollectorsNumber()}
1463 // public void testGetSetCollectorsNumber() {
1464 // Assert.assertEquals("Collectors number must be same", collectorsNumber,
1465 // specimenFacade.getCollectorsNumber());
1466 // specimenFacade.setCollectorsNumber("C12345693");
1467 // Assert.assertEquals("New collectors number must be 'C12345693'",
1468 // "C12345693", specimenFacade.getCollectorsNumber());
1473 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getTitleCache()}.
1476 public void testGetTitleCache() {
1477 Assert
.assertNotNull(
1478 "The title cache should never return null if not protected",
1479 specimenFacade
.getTitleCache());
1480 specimenFacade
.setTitleCache(null, false);
1481 Assert
.assertNotNull(
1482 "The title cache should never return null if not protected",
1483 specimenFacade
.getTitleCache());
1488 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#setTitleCache(java.lang.String)}
1492 public void testSetTitleCache() {
1493 String testTitle
= "Absdwk aksjlf";
1494 specimenFacade
.setTitleCache(testTitle
, true);
1495 Assert
.assertEquals(
1496 "Protected title cache should returns the test title",
1497 testTitle
, specimenFacade
.getTitleCache());
1498 specimenFacade
.setTitleCache(testTitle
, false);
1500 "Unprotected title cache should not return the test title",
1501 testTitle
.equals(specimenFacade
.getTitleCache()));
1506 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#innerDerivedUnit()}.
1509 public void testGetSpecimen() {
1510 Assert
.assertEquals("Specimen must be same", specimen
,
1511 specimenFacade
.innerDerivedUnit());
1516 * {@link eu.etaxonomy.cdm.api.facade.DerivedUnitFacade#getCollection()}.
1519 public void testGetSetCollection() {
1520 Assert
.assertNotNull("Collection must not be null",
1521 specimenFacade
.getCollection());
1522 Assert
.assertEquals("Collection must be same", collection
,
1523 specimenFacade
.getCollection());
1524 specimenFacade
.setCollection(null);
1525 Assert
.assertNull("Collection must be null",
1526 specimenFacade
.getCollection());
1530 public void testAddGetRemoveSource() {
1531 Assert
.assertEquals("No sources should exist yet", 0, specimenFacade
.getSources().size());
1533 Reference reference
= ReferenceFactory
.newBook();
1534 IdentifiableSource source1
= specimenFacade
.addSource(OriginalSourceType
.PrimaryTaxonomicSource
, reference
, "54", "myName");
1535 Assert
.assertEquals("One source should exist now", 1, specimenFacade
.getSources().size());
1536 IdentifiableSource source2
= IdentifiableSource
.NewDataImportInstance("1", "myTable");
1537 specimenFacade
.addSource(source2
);
1538 Assert
.assertEquals("One source should exist now", 2, specimenFacade
.getSources().size());
1539 specimenFacade
.removeSource(source1
);
1540 Assert
.assertEquals("One source should exist now", 1, specimenFacade
.getSources().size());
1541 Reference reference2
= ReferenceFactory
.newJournal();
1542 IdentifiableSource sourceNotUsed
= specimenFacade
.addSource(OriginalSourceType
.PrimaryTaxonomicSource
, reference2
,null, null);
1543 specimenFacade
.removeSource(sourceNotUsed
);
1544 Assert
.assertEquals("One source should still exist", 1, specimenFacade
.getSources().size());
1545 Assert
.assertEquals("1", specimenFacade
.getSources().iterator().next().getIdInSource());
1546 specimenFacade
.removeSource(source2
);
1547 Assert
.assertEquals("No sources should exist anymore", 0,specimenFacade
.getSources().size());
1551 public void testAddGetRemoveDuplicate() {
1552 Assert
.assertEquals("No duplicates should be available yet", 0,specimenFacade
.getDuplicates().size());
1553 DerivedUnit newSpecimen1
= DerivedUnit
.NewPreservedSpecimenInstance();
1554 specimenFacade
.addDuplicate(newSpecimen1
);
1555 Assert
.assertEquals("There should be 1 duplicate now", 1,specimenFacade
.getDuplicates().size());
1556 DerivedUnit newSpecimen2
= DerivedUnit
.NewPreservedSpecimenInstance();
1557 DerivationEvent newDerivationEvent
= DerivationEvent
.NewInstance(DerivationEventType
.ACCESSIONING());
1558 newSpecimen2
.setDerivedFrom(newDerivationEvent
);
1560 "The derivation event should be 'newDerivationEvent'",
1561 newDerivationEvent
, newSpecimen2
.getDerivedFrom());
1562 specimenFacade
.addDuplicate(newSpecimen2
);
1563 Assert
.assertEquals("There should be 2 duplicates now", 2, specimenFacade
.getDuplicates().size());
1564 Assert
.assertNotSame(
1565 "The derivation event should not be 'newDerivationEvent' anymore",
1566 newDerivationEvent
, newSpecimen2
.getDerivedFrom());
1568 "The derivation event should not be the facades derivation event",
1569 derivationEvent
, newSpecimen2
.getDerivedFrom());
1570 specimenFacade
.removeDuplicate(newSpecimen1
);
1571 Assert
.assertEquals("There should be 1 duplicate now", 1,
1572 specimenFacade
.getDuplicates().size());
1573 Assert
.assertSame("The only duplicate should be 'newSpecimen2' now",
1574 newSpecimen2
, specimenFacade
.getDuplicates().iterator().next());
1575 specimenFacade
.addDuplicate(specimenFacade
.innerDerivedUnit());
1576 Assert
.assertEquals(
1577 "There should be still 1 duplicate because the facade specimen is not a duplicate",
1578 1, specimenFacade
.getDuplicates().size());
1580 Collection newCollection
= Collection
.NewInstance();
1581 String catalogNumber
= "1234890";
1582 String accessionNumber
= "345345";
1583 TaxonNameBase
<?
,?
> storedUnder
= TaxonNameBase
.NewBotanicalInstance(Rank
.SPECIES());
1584 PreservationMethod method
= PreservationMethod
.NewInstance();
1585 DerivedUnit duplicateSpecimen
= specimenFacade
.addDuplicate(newCollection
,
1586 catalogNumber
, accessionNumber
, storedUnder
,
1588 Assert
.assertEquals("There should be 2 duplicates now", 2,
1589 specimenFacade
.getDuplicates().size());
1590 specimenFacade
.removeDuplicate(newSpecimen2
);
1591 Assert
.assertEquals("There should be 1 duplicates now", 1,
1592 specimenFacade
.getDuplicates().size());
1593 Collection sameCollection
= specimenFacade
.getDuplicates().iterator().next().getCollection();
1594 Assert
.assertSame("Collections should be same", newCollection
, sameCollection
);
1597 // ************************** Existing Specimen with multiple derivation
1598 // events in line **************/
1601 public void testExistingSpecimen() {
1602 specimenFacade
= null;
1604 specimenFacade
= DerivedUnitFacade
.NewInstance(collectionSpecimen
);
1605 } catch (DerivedUnitFacadeNotSupportedException e
) {
1606 Assert
.fail("Multiple derivation events in line should not throw a not supported exception");
1609 "Gathering event should derive from the derivation line",
1610 existingGatheringEvent
, specimenFacade
.innerGatheringEvent());
1611 Assert
.assertEquals(
1612 "Mediasize should be 0. Only Imagegallery media are supported",
1613 0, specimenFacade
.getFieldObjectMedia().size());
1617 public void testMultipleFieldUnitNotSupported() {
1618 specimenFacade
= null;
1619 FieldUnit secondFieldObject
= FieldUnit
.NewInstance();
1620 firstDerivationEvent
.addOriginal(secondFieldObject
);
1622 specimenFacade
= DerivedUnitFacade
.NewInstance(collectionSpecimen
);
1623 Assert
.fail("Multiple field units for one specimen should no be supported by the facade");
1624 } catch (DerivedUnitFacadeNotSupportedException e
) {
1627 Assert
.assertNull("Specimen facade should not be initialized",
1631 // not required anymore #3597
1632 // @Test // #######DerivationEvent
1633 // public void testOnlyImageGallerySupported() {
1634 // specimenFacade = null;
1635 // firstFieldObject.addMedia(media1);
1637 // specimenFacade = DerivedUnitFacade.NewInstance(collectionSpecimen);
1638 // Assert.fail("Only image galleries are supported by the facade but not direct media");
1639 // } catch (DerivedUnitFacadeNotSupportedException e) {
1642 // Assert.assertNull("Specimen facade should not be initialized",
1646 @Test // #######DerivationEvent
1647 public void testEventPropagation() {
1648 specimenFacade
.setDistanceToGround(24.0);
1652 // @Ignore // set to ignore because I did not want to check knowingly
1653 // failing tests. Remove @Ignore when this is fixed
1655 public void testSetBarcode() {
1656 String barcode
= "barcode";
1657 specimenFacade
.setBarcode(barcode
);
1659 Assert
.assertEquals(barcode
, specimenFacade
.getBarcode());
1663 public void testIsEvenDistance() {
1664 Integer minimum
= 20;
1665 Integer maximum
= 1234;
1667 // this should not throw exceptions
1668 specimenFacade
.setAbsoluteElevationRange(minimum
, maximum
);
1673 * See https://dev.e-taxonomy.eu/trac/ticket/2426
1674 * This test doesn't handle the above issue yet as it doesn't fire events as
1675 * expected (at least it does not reproduce the behaviour in the Taxonomic Editor).
1676 * In the meanwhile the property change framework for the facade has been changed
1677 * so the original problem may have disappeared.
1682 public void testNoRecursiveChangeEvents(){
1683 String username
= "username";
1684 String password
= "password";
1685 User user
= User
.NewInstance(username
, password
);
1686 userService
.save(user
);
1687 UsernamePasswordAuthenticationToken token
= new UsernamePasswordAuthenticationToken(user
, password
);
1688 SecurityContextHolder
.getContext().setAuthentication(token
);
1690 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.PreservedSpecimen
);
1691 facade
.setLocality("testLocality");
1692 facade
.getTitleCache();
1693 // facade.innerGatheringEvent().firePropertyChange("createdBy", null, user);
1694 this.service
.save(facade
.innerDerivedUnit());
1695 commitAndStartNewTransaction(null);
1699 public void testBaseUnit() throws DerivedUnitFacadeNotSupportedException
{
1700 DerivedUnitFacade facade
= DerivedUnitFacade
.NewInstance(specimen
);
1701 assertEquals("baseUnit is incorrect", specimen
, facade
.baseUnit());
1703 facade
= DerivedUnitFacade
.NewInstance(SpecimenOrObservationType
.FieldUnit
, fieldUnit
);
1704 assertEquals("baseUnit is incorrect", fieldUnit
, facade
.baseUnit());
1706 facade
= DerivedUnitFacade
.NewInstance(specimen
);
1707 facade
.getFieldUnit(true);
1708 assertEquals("baseUnit is incorrect", specimen
, facade
.baseUnit());
1712 public void createTestDataSet() throws FileNotFoundException
{
1713 // TODO Auto-generated method stub