Project

General

Profile

Download (7.4 KB) Statistics
| Branch: | Tag: | Revision:
1
/**
2
* Copyright (C) 2007 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

    
10
package eu.etaxonomy.cdm.api.service;
11

    
12
import static org.junit.Assert.assertNotNull;
13
import static org.junit.Assert.assertNull;
14

    
15
import java.io.FileNotFoundException;
16
import java.util.UUID;
17

    
18
import org.junit.Assert;
19
import org.junit.Before;
20
import org.junit.Test;
21
import org.unitils.dbunit.annotation.DataSet;
22
import org.unitils.spring.annotation.SpringBeanByType;
23

    
24
import eu.etaxonomy.cdm.api.service.config.FeatureNodeDeletionConfigurator;
25
import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
26
import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
27
import eu.etaxonomy.cdm.model.common.ITreeNode;
28
import eu.etaxonomy.cdm.model.description.Feature;
29
import eu.etaxonomy.cdm.model.description.FeatureNode;
30
import eu.etaxonomy.cdm.model.description.FeatureTree;
31
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
32

    
33
/**
34
 * @author a.mueller
35
 * @since 2013-09-28
36
 */
37
public class FeatureNodeServiceImplTest extends CdmTransactionalIntegrationTest{
38

    
39
	private static final String sep = ITreeNode.separator;
40
	private static final String pref = ITreeNode.treePrefix;
41

    
42
	@SpringBeanByType
43
	private IFeatureNodeService featureNodeService;
44

    
45
	@SpringBeanByType
46
	private IFeatureTreeService featureTreeService;
47

    
48
	@SpringBeanByType
49
	private ITermService termService;
50

    
51

    
52
//	private static final UUID t2Uuid = UUID.fromString("55c3e41a-c629-40e6-aa6a-ff274ac6ddb1");
53
//	private static final UUID t3Uuid = UUID.fromString("2659a7e0-ff35-4ee4-8493-b453756ab955");
54
	private static final UUID featureTreeUuid = UUID.fromString("6c2bc8d9-ee62-4222-be89-4a8e31770878");
55
	private static final UUID featureTree2Uuid = UUID.fromString("43d67247-936f-42a3-a739-bbcde372e334");
56
	private static final UUID node2Uuid= UUID.fromString("484a1a77-689c-44be-8e65-347d835f47e8");
57
	private static final UUID node3Uuid = UUID.fromString("2d41f0c2-b785-4f73-a436-cc2d5e93cc5b");
58
	private static final UUID node4Uuid = UUID.fromString("fdaec4bd-c78e-44df-ae87-28f18110968c");
59
	private static final UUID node5Uuid = UUID.fromString("c4d5170a-7967-4dac-ab76-ae2019eefde5");
60
	private static final UUID node6Uuid = UUID.fromString("b419ba5e-9c8b-449c-ad86-7abfca9a7340");
61

    
62
	private Feature t1;
63
	private Feature t2;
64
//	private Synonym s1;
65
	private FeatureNode node3;
66
	private FeatureNode node2;
67

    
68
	/**
69
	 * @throws java.lang.Exception
70
	 */
71
	@Before
72
	public void setUp() throws Exception {
73
	}
74

    
75
	@Test
76
	public final void testIndexCreatRoot() {
77
		FeatureTree featureTree = FeatureTree.NewInstance();
78
		featureTreeService.save(featureTree);
79

    
80
		Feature feature = (Feature)termService.find(914);
81
		FeatureNode newNode = FeatureNode.NewInstance(feature);
82
		featureTree.getRoot().addChild(newNode);
83

    
84
		featureTreeService.save(featureTree);
85

    
86
		featureNodeService.saveOrUpdate(newNode);
87

    
88
		commitAndStartNewTransaction(new String[]{"FeatureNode"});
89
		newNode = featureNodeService.load(newNode.getUuid());
90
		Assert.assertEquals("", sep + pref+featureTree.getId()+sep + featureTree.getRoot().getId()+ sep  + newNode.getId() + sep, newNode.treeIndex());
91
	}
92

    
93

    
94
	@Test
95
	@DataSet(value="FeatureNodeServiceImplTest-indexing.xml")
96
	public final void testIndexCreateNode() {
97
		Feature feature = (Feature)termService.find(914);
98

    
99
		node2 = featureNodeService.load(node2Uuid);
100
		String oldTreeIndex = node2.treeIndex();
101

    
102
		FeatureNode newNode = FeatureNode.NewInstance(feature);
103
		node2.addChild(newNode);
104
		featureNodeService.saveOrUpdate(node2);
105

    
106
		commitAndStartNewTransaction(new String[]{"FeatureNode"});
107
		newNode = featureNodeService.load(newNode.getUuid());
108
		Assert.assertEquals("", oldTreeIndex + newNode.getId() + sep, newNode.treeIndex());
109
	}
110

    
111

    
112
	@Test
113
	@DataSet(value="FeatureNodeServiceImplTest-indexing.xml")
114
	public final void testIndexMoveNode() {
115
		//in feature tree
116
		FeatureTree featureTree = featureTreeService.load(featureTreeUuid);
117
		node2 = featureNodeService.load(node2Uuid);
118
		node3 = featureNodeService.load(node3Uuid);
119
		node3.addChild(node2);
120
		featureNodeService.saveOrUpdate(node2);
121
		commitAndStartNewTransaction(new String[]{"FeatureNode"});
122
		FeatureNode node6 = featureNodeService.load(node6Uuid);
123
		Assert.assertEquals("Node6 treeindex is not correct", node3.treeIndex() + "2#4#6#", node6.treeIndex());
124

    
125
		//root of new feature tree
126
		FeatureTree featureTree2 = featureTreeService.load(featureTree2Uuid);
127
		node2 = featureNodeService.load(node2Uuid);
128
		featureTree2.getRoot().addChild(node2);
129
		featureNodeService.saveOrUpdate(node2);
130
		commitAndStartNewTransaction(new String[]{"TaxonNode"});
131
		node2 = featureNodeService.load(node2Uuid);
132
		Assert.assertEquals("Node2 treeindex is not correct", "#t2#7#2#", node2.treeIndex());
133
		node6 = featureNodeService.load(node6Uuid);
134
		Assert.assertEquals("Node6 treeindex is not correct", "#t2#7#2#4#6#", node6.treeIndex());
135

    
136
		//into new classification
137
		node3 = featureNodeService.load(node3Uuid);
138
		FeatureNode node5 = featureNodeService.load(node5Uuid);
139
		node5.addChild(node3);
140
		featureNodeService.saveOrUpdate(node5);
141
		commitAndStartNewTransaction(new String[]{"TaxonNode"});
142
		node3 = featureNodeService.load(node3Uuid);
143
		Assert.assertEquals("Node3 treeindex is not correct", "#t2#7#2#5#3#", node3.treeIndex());
144

    
145
	}
146

    
147
	@Test  //here we may have a test for testing delete of a node and attaching the children
148
	//to its parents, however this depends on the way delete is implemented and therefore needs
149
	//to wait until this is finally done
150
	@DataSet(value="FeatureNodeServiceImplTest-indexing.xml")
151
	public final void testIndexDeleteNode() {
152
		node2 = featureNodeService.load(node2Uuid);
153
		FeatureNode root = node2.getParent();
154
		FeatureNodeDeletionConfigurator config = new FeatureNodeDeletionConfigurator();
155
		config.setDeleteElement(false);
156
        config.setChildHandling(ChildHandling.MOVE_TO_PARENT);
157
        DeleteResult result = featureNodeService.deleteFeatureNode(node2Uuid, config);
158
        commitAndStartNewTransaction(new String[]{"TaxonNode"});
159
        FeatureTree tree1 = featureTreeService.load(featureTreeUuid);
160
        assertNotNull(tree1);
161
        node2 = featureNodeService.load(node2Uuid);
162
        assertNull(node2);
163
        node3 = featureNodeService.load(node3Uuid);
164
        assertNotNull(node3);
165
        FeatureNode node4 = featureNodeService.load(node4Uuid);
166
        assertNotNull(node4);
167
		config.setDeleteElement(false);
168
		config.setChildHandling(ChildHandling.DELETE);
169
		result = featureNodeService.deleteFeatureNode(node4Uuid, config);
170
		commitAndStartNewTransaction(new String[]{"TaxonNode"});
171
		tree1 = featureTreeService.load(featureTreeUuid);
172
		node4 = featureNodeService.load(node4Uuid);
173
        assertNull(node4);
174
        FeatureNode node6 = featureNodeService.load(node6Uuid);
175
        assertNull(node6);
176

    
177
		HibernateProxyHelper.deproxy(tree1, FeatureTree.class);
178
		FeatureNode rootNode = HibernateProxyHelper.deproxy(tree1.getRoot(), FeatureNode.class);
179
		assertNotNull(tree1);
180
		featureTreeService.delete(tree1.getUuid());
181
		commitAndStartNewTransaction(new String[]{"TaxonNode"});
182
		tree1 = featureTreeService.load(featureTreeUuid);
183
		assertNull(tree1);
184

    
185
	}
186

    
187
    /* (non-Javadoc)
188
     * @see eu.etaxonomy.cdm.test.integration.CdmIntegrationTest#createTestData()
189
     */
190
    @Override
191
    public void createTestDataSet() throws FileNotFoundException {
192
        // TODO Auto-generated method stub
193
    }
194

    
195

    
196

    
197

    
198

    
199
}
(8-8/35)