forgot to add in last commit
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / cdm / model / 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.cdm.model;
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.Before;
22 import org.junit.BeforeClass;
23 import org.junit.Test;
24 import org.unitils.dbunit.annotation.DataSet;
25
26 import eu.etaxonomy.cdm.api.service.IClassificationService;
27 import eu.etaxonomy.cdm.api.service.ITaxonNodeService;
28 import eu.etaxonomy.cdm.api.service.ITaxonService;
29 import eu.etaxonomy.cdm.model.common.Language;
30 import eu.etaxonomy.cdm.model.name.BotanicalName;
31 import eu.etaxonomy.cdm.model.name.HomotypicalGroup;
32 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
33 import eu.etaxonomy.cdm.model.name.NonViralName;
34 import eu.etaxonomy.cdm.model.name.TaxonNameBase;
35 import eu.etaxonomy.cdm.model.taxon.Synonym;
36 import eu.etaxonomy.cdm.model.taxon.Taxon;
37 import eu.etaxonomy.cdm.model.taxon.TaxonNode;
38 import eu.etaxonomy.taxeditor.editor.name.operation.CreateSynonymInExistingHomotypicalGroupOperation;
39 import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
40 import eu.etaxonomy.taxeditor.operations.OperationTestBase;
41 import eu.etaxonomy.taxeditor.remoting.cache.CdmTransientEntityCacher;
42 import eu.etaxonomy.taxeditor.session.ICdmEntitySession;
43 import eu.etaxonomy.taxeditor.session.ICdmEntitySessionEnabled;
44 import eu.etaxonomy.taxeditor.session.MockSessionOwner;
45
46 /**
47 * @author cmathew
48 * @date 3 Feb 2015
49 *
50 */
51 @DataSet
52 public class TaxonNameEditorTest extends OperationTestBase {
53
54 private static final Logger logger = Logger.getLogger(TaxonNameEditorTest.class);
55
56 ITaxonNodeService taxonNodeService = getRemoteApplicationController().getTaxonNodeService();
57 ITaxonService taxonService = getRemoteApplicationController().getTaxonService();
58 IClassificationService classificationService = getRemoteApplicationController().getClassificationService();
59
60
61 private CdmTransientEntityCacher cacher;
62 private ICdmEntitySessionEnabled sessionOwner;
63
64 private ICdmEntitySession cdmEntitySession;
65
66 Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
67
68
69
70 @BeforeClass
71 public static void initializePolytomousKeyTest() {
72 //logger.setLevel(Level.INFO);
73 CDMServer.getInstance().setKeepServerRunning(true);
74 initializeController("default",
75 "localhost",
76 8080,
77 "",
78 NomenclaturalCode.ICNAFP,
79 "admin",
80 "00000");
81 }
82
83 @Before
84 public void initializeSession() {
85 sessionOwner = new MockSessionOwner();
86 cdmEntitySession = cdmEntitySessionManager.newSession(sessionOwner, true);
87 cacher = getCacher(sessionOwner);
88 }
89
90 @Test
91 public void testAddHomotypicSynonym() throws ExecutionException {
92 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
93
94 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
95 Taxon taxon = taxonNode.getTaxon();
96 HomotypicalGroup group = taxon.getHomotypicGroup();
97 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
98 newSynonymName.setTitleCache("New Synonym", true);
99 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
100 undoContext, taxon, group, newSynonymName, postOperation);
101
102 operation.execute(monitor, info);
103 taxonNodeService.merge(taxonNode);
104 Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
105 Assert.assertEquals(taxon.getSynonyms().size(), 1);
106 Iterator<Synonym> synonymItr = taxon.getSynonyms().iterator();
107 Synonym synonym = synonymItr.next();
108 Assert.assertTrue(taxon.getHomotypicGroup().getTypifiedNames().contains(synonym.getName()));
109 }
110
111 @Test
112 public void addHeterotypicSynonym() throws ExecutionException {
113 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
114
115 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
116 Taxon taxon = taxonNode.getTaxon();
117 HomotypicalGroup group = taxon.getHomotypicGroup();
118 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
119 newSynonymName.setTitleCache("New Synonym", true);
120 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
121 undoContext, taxon, group, newSynonymName, postOperation);
122
123 operation.execute(monitor, info);
124 taxonNodeService.merge(taxonNode);
125
126
127 }
128
129 @Test
130 public void addDeleteAddHomotypicSynonym() throws ExecutionException {
131 UUID taxonNodeUuid = UUID.fromString("ce54c396-3694-47f2-abb0-1d7b7e057985");
132
133 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
134 Taxon taxon = taxonNode.getTaxon();
135 HomotypicalGroup group = taxon.getHomotypicGroup();
136 BotanicalName newSynonymName = BotanicalName.NewInstance(null);
137 newSynonymName.setTitleCache("New Synonym", true);
138 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
139 undoContext, taxon, group, newSynonymName, postOperation);
140
141 operation.execute(monitor, info);
142 taxonNodeService.merge(taxonNode);
143 Assert.assertEquals(taxon.getHomotypicGroup().getTypifiedNames().size(), 2);
144
145 Set<Synonym> synonyms = taxon.getSynonyms();
146 for(Synonym synonym : synonyms) {
147 taxonService.deleteSynonym(synonym.getUuid(), taxon.getUuid(), null);
148 }
149
150 taxonNodeService.merge(taxonNode);
151
152 newSynonymName = BotanicalName.NewInstance(null);
153 newSynonymName.setTitleCache("Another New Synonym", true);
154 operation = new CreateSynonymInExistingHomotypicalGroupOperation("Create Synonym In Existing Homotypical Group",
155 undoContext, taxon, group, newSynonymName, postOperation);
156
157 operation.execute(monitor, info);
158 taxonNodeService.merge(taxonNode);
159 }
160
161 @Test
162 public void swapSynonymWithAcceptedTaxon() throws ExecutionException {
163 List<TaxonNode> rootEntities = new ArrayList<TaxonNode>();
164 UUID taxonNodeUuid = UUID.fromString("d425a971-1abe-4895-9e1f-1e5c8ff1c84c");
165 TaxonNode taxonNode = taxonNodeService.load(taxonNodeUuid);
166 rootEntities.add(taxonNode);
167 sessionOwner = new MockSessionOwner(rootEntities);
168 cdmEntitySession = cdmEntitySessionManager.newSession(sessionOwner, true);
169
170 UUID taxonUuid = UUID.fromString("9763e5f0-6cd4-4d96-b8a4-4420854f7727");
171 Taxon taxon = (Taxon)taxonService.load(taxonUuid);
172 TaxonNameBase taxonName = taxon.getName();
173
174 UUID synonymUuid = UUID.fromString("1eb173bd-b174-4162-8ff5-5136d8f1e746");
175 Synonym synonym = (Synonym)taxonService.load(synonymUuid);
176 TaxonNameBase synonymName = synonym.getName();
177
178 taxonService.swapSynonymAndAcceptedTaxon(synonym.getUuid(), taxon.getUuid());
179
180 Assert.assertEquals(taxonName, synonym.getName());
181 Assert.assertEquals(synonymName, taxon.getName());
182 }
183
184 @Test
185 public void addTaxon() {
186 NonViralName taxonName = NonViralName.NewInstance(null);
187 Taxon taxon = Taxon.NewInstance(taxonName, null);
188 taxonService.merge(taxon);
189 }
190
191 }
192