3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
7 * The contents of this file are subject to the Mozilla Public License Version 1.1
8 * See LICENSE.TXT at the top of this package for the full license terms.
10 package eu
.etaxonomy
.cdm
.model
;
12 import java
.util
.HashSet
;
14 import java
.util
.UUID
;
16 import org
.apache
.log4j
.Logger
;
17 import org
.eclipse
.core
.commands
.ExecutionException
;
18 import org
.junit
.Assert
;
19 import org
.junit
.Test
;
20 import org
.unitils
.dbunit
.annotation
.DataSet
;
22 import eu
.etaxonomy
.cdm
.api
.service
.IClassificationService
;
23 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonNodeService
;
24 import eu
.etaxonomy
.cdm
.api
.service
.ITaxonService
;
25 import eu
.etaxonomy
.cdm
.model
.common
.CdmBase
;
26 import eu
.etaxonomy
.cdm
.model
.common
.Language
;
27 import eu
.etaxonomy
.cdm
.model
.description
.TaxonDescription
;
28 import eu
.etaxonomy
.cdm
.model
.name
.TaxonNameBase
;
29 import eu
.etaxonomy
.cdm
.model
.taxon
.Taxon
;
30 import eu
.etaxonomy
.cdm
.model
.taxon
.TaxonNode
;
31 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.operation
.RemotingChangeAcceptedTaxonToSynonymOperation
;
32 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.operation
.RemotingMoveFactualDataOperation
;
33 import eu
.etaxonomy
.taxeditor
.navigation
.navigator
.operation
.RemotingMoveTaxonOperation
;
34 import eu
.etaxonomy
.taxeditor
.operations
.BaseOperationTest
;
42 public class TaxonNavigatorTest
extends BaseOperationTest
{
44 private static final Logger logger
= Logger
.getLogger(TaxonNameEditorTest
.class);
46 ITaxonNodeService taxonNodeService
= getRemoteApplicationController().getTaxonNodeService();
47 ITaxonService taxonService
= getRemoteApplicationController().getTaxonService();
48 IClassificationService classificationService
= getRemoteApplicationController().getClassificationService();
50 Language english
= Language
.getLanguageFromUuid(Language
.uuidEnglish
);
55 public void testChangeAcceptedTaxonToSynonym() throws ExecutionException
{
58 UUID oldTaxonNodeNodeUuid
= UUID
.fromString("b85b5b78-6760-409f-ac91-bb89e95ff2a1");
59 UUID newAcceptedTaxonNodeUuid
= UUID
.fromString("6ad8e9e2-f5f6-41ad-aa30-f62a903650db");
61 TaxonNode oldTaxonNode
= taxonNodeService
.load(oldTaxonNodeNodeUuid
);
62 TaxonNameBase name
= oldTaxonNode
.getTaxon().getName();
65 TaxonNode newAcceptedTaxonNode
= taxonNodeService
.load(newAcceptedTaxonNodeUuid
);
66 int countTargetSynonyms
= newAcceptedTaxonNode
.getTaxon().getSynonyms().size();
67 sessionOwner
.addExpectedUpdatedObject(oldTaxonNode
.getParent());
70 operation
= new RemotingChangeAcceptedTaxonToSynonymOperation(sessionOwner
,
72 oldTaxonNode
.getUuid(),
73 newAcceptedTaxonNode
.getUuid());
74 operation
.execute(monitor
, info
);
75 newAcceptedTaxonNode
= taxonNodeService
.load(newAcceptedTaxonNodeUuid
);
76 sessionOwner
.addExpectedUpdatedObject(newAcceptedTaxonNode
);
78 oldTaxonNode
= taxonNodeService
.load(oldTaxonNodeNodeUuid
);
79 Assert
.assertNull(oldTaxonNode
);
80 Assert
.assertEquals(countTargetSynonyms
+ 1,newAcceptedTaxonNode
.getTaxon().getSynonyms().size());
81 Assert
.assertEquals(name
, newAcceptedTaxonNode
.getTaxon().getSynonyms().iterator().next().getName());
87 public void testMoveTaxon() throws ExecutionException
{
89 UUID taxonNodeToMoveUuid
= UUID
.fromString("b8439f51-6b96-445a-b401-7a836ba1cf58");
90 UUID newParentTreeNodeUuid
= UUID
.fromString("2f05d429-632d-4230-b9cb-70299360b470");
91 boolean moveToParentNode
= true;
93 TaxonNode taxonNodeToMove
= taxonNodeService
.load(taxonNodeToMoveUuid
);
94 TaxonNode oldParent
= taxonNodeToMove
.getParent();
95 sessionOwner
.addExpectedUpdatedObject(oldParent
);
96 int childCount
= oldParent
.getCountChildren();
97 TaxonNode newParentTreeNode
= taxonNodeService
.load(newParentTreeNodeUuid
);
98 sessionOwner
.addExpectedUpdatedObject(newParentTreeNode
);
99 operation
= new RemotingMoveTaxonOperation(sessionOwner
,
101 taxonNodeToMove
.getUuid(),
102 newParentTreeNode
.getUuid(),
104 operation
.execute(monitor
, info
);
105 Assert
.assertEquals(childCount
-1, oldParent
.getCountChildren());
106 Assert
.assertTrue(!oldParent
.getChildNodes().contains(taxonNodeToMove
));
107 Assert
.assertTrue(newParentTreeNode
.getChildNodes().contains(taxonNodeToMove
));
111 public void testMoveFactualData() throws ExecutionException
{
112 UUID sourceTaxonUuid
= UUID
.fromString("e40854d7-143f-4054-b229-6ed4cedb4bff");
113 UUID targetTaxonUuid
= UUID
.fromString("b8402dc4-5050-4882-a147-01b71e0e47d6");
115 Taxon sourceTaxon
= CdmBase
.deproxy(taxonService
.load(sourceTaxonUuid
), Taxon
.class);
116 Set
<TaxonDescription
> sourceDescriptions
= new HashSet(sourceTaxon
.getDescriptions());
117 sessionOwner
.addExpectedUpdatedObject(sourceTaxon
);
119 Taxon targetTaxon
= CdmBase
.deproxy(taxonService
.load(targetTaxonUuid
), Taxon
.class);
120 int countTargetDescriptions
= targetTaxon
.getDescriptions().size();
121 sessionOwner
.addExpectedUpdatedObject(targetTaxon
);
123 operation
= new RemotingMoveFactualDataOperation(sessionOwner
,
127 operation
.execute(monitor
, info
);
128 Assert
.assertEquals(0, sourceTaxon
.getDescriptions().size());
129 Assert
.assertEquals(sourceDescriptions
.size() + countTargetDescriptions
, targetTaxon
.getDescriptions().size());
130 Assert
.assertTrue(targetTaxon
.getDescriptions().containsAll(sourceDescriptions
));