76e9242bf77ccdb23d1dacd3459220acafa8b8bf
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / operation / TaxonNameEditorTest.java
1 // $Id$
2 /**
3 * Copyright (C) 2015 EDIT
4 * European Distributed Institute of Taxonomy
5 * http://www.e-taxonomy.eu
6 *
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.
9 */
10 package eu.etaxonomy.taxeditor.operation;
11
12 import java.util.ArrayList;
13 import java.util.Iterator;
14 import java.util.List;
15 import java.util.Set;
16 import java.util.UUID;
17
18 import org.apache.log4j.Logger;
19 import org.eclipse.core.commands.ExecutionException;
20 import org.junit.Assert;
21 import org.junit.Test;
22 import org.unitils.dbunit.annotation.DataSet;
23
24 import eu.etaxonomy.cdm.api.service.IClassificationService;
25 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
26 import eu.etaxonomy.cdm.api.service.ITaxonService;
27 import eu.etaxonomy.cdm.model.common.Language;
28 import eu.etaxonomy.cdm.model.name.BotanicalName;
29 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
30 import eu.etaxonomy.cdm.model.name.NonViralName;
31 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
32 import eu.etaxonomy.cdm.model.taxon.Synonym;
33 import eu.etaxonomy.cdm.model.taxon.Taxon;
34 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
35 import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
36
37 /**
38 * @author cmathew
39 * @date 3 Feb 2015
40 *
41 */
42
43 @DataSet
44 public class TaxonNameEditorTest extends BaseOperationTest {
45
46 private static final Logger logger = Logger.getLogger(TaxonNameEditorTest.class);
47
48 ITaxonNodeService taxonNodeService = getRemoteApplicationController().getTaxonNodeService();
49 ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
50 IClassificationService classificationService = getRemoteApplicationController().getClassificationService();
51
52 Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
53
54
55 @Test
56 public void testAddHomotypicSynonym() throws ExecutionException {
57 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
58
59 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
60 Taxon taxon = taxonNode.getTaxon();
61 HomotypicalGroup group = taxon.getHomotypicGroup();
62 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
63 newSynonymName.setTitleCache("New Synonym", true);
64 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
65 undoContext, taxon, group, newSynonymName, postOperation);
66
67 operation.execute(monitor, info);
68 taxonNodeService.merge(taxonNode);
69 Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
70 Assert.assertEquals(taxon.getSynonyms().size(), 1);
71 Iterator<Synonym> synonymItr = taxon.getSynonyms().iterator();
72 Synonym synonym = synonymItr.next();
73 Assert.assertTrue(taxon.getHomotypicGroup().getTypifiedNames().contains(synonym.getName()));
74 }
75
76 @Test
77 public void addHeterotypicSynonym() throws ExecutionException {
78 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
79
80 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
81 Taxon taxon = taxonNode.getTaxon();
82 HomotypicalGroup group = taxon.getHomotypicGroup();
83 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
84 newSynonymName.setTitleCache("New Synonym", true);
85 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
86 undoContext, taxon, group, newSynonymName, postOperation);
87
88 operation.execute(monitor, info);
89 taxonNodeService.merge(taxonNode);
90
91
92 }
93
94 @Test
95 public void addDeleteAddHomotypicSynonym() throws ExecutionException {
96 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
97
98 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
99 Taxon taxon = taxonNode.getTaxon();
100 HomotypicalGroup group = taxon.getHomotypicGroup();
101 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
102 newSynonymName.setTitleCache("New Synonym", true);
103 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
104 undoContext, taxon, group, newSynonymName, postOperation);
105
106 operation.execute(monitor, info);
107 taxonNodeService.merge(taxonNode);
108 Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
109
110 Set<Synonym> synonyms = taxon.getSynonyms();
111 for(Synonym synonym : synonyms) {
112 taxonService.deleteSynonym(synonym.getUuid(), taxon.getUuid(), null);
113 }
114
115 taxonNodeService.merge(taxonNode);
116
117 newSynonymName = BotanicalName.NewInstance(null);
118 newSynonymName.setTitleCache("Another New Synonym", true);
119 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
120 undoContext, taxon, group, newSynonymName, postOperation);
121
122 operation.execute(monitor, info);
123 taxonNodeService.merge(taxonNode);
124 }
125
126 @Test
127 public void swapSynonymWithAcceptedTaxon() throws ExecutionException {
128 List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
129 UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
130 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
131 rootEntities.add(taxonNode);
132
133 UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
134 Taxon taxon = (Taxon)taxonService.load(taxonUuid);
135 TaxonNameBase taxonName = taxon.getName();
136
137 UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
138 Synonym synonym = (Synonym)taxonService.load(synonymUuid);
139 TaxonNameBase synonymName = synonym.getName();
140
141 taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
142
143 Assert.assertEquals(taxonName, synonym.getName());
144 Assert.assertEquals(synonymName, taxon.getName());
145 }
146
147 @Test
148 public void addTaxon() {
149 NonViralName taxonName = NonViralName.NewInstance(null);
150 Taxon taxon = Taxon.NewInstance(taxonName, null);
151 taxonService.merge(taxon);
152 }
153
154 }
155