Project

General

Profile

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

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

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

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

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

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

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

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

    
43
	@SpringBeanByType
44
	private IFeatureNodeService featureNodeService;
45

    
46
	@SpringBeanByType
47
	private IFeatureTreeService featureTreeService;
48

    
49
	@SpringBeanByType
50
	private ITermService termService;
51

    
52

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

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

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

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

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

    
85
		featureTreeService.save(featureTree);
86

    
87
		featureNodeService.saveOrUpdate(newNode);
88

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

    
94

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

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

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

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

    
112

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

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

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

    
146
	}
147

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

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

    
186
	}
187

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

    
196

    
197

    
198

    
199

    
200
}
(7-7/32)