Project

General

Profile

Download (7.37 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.dbunit.datasetloadstrategy.impl.RefreshLoadStrategy;
23
import org.unitils.spring.annotation.SpringBeanByType;
24

    
25
import eu.etaxonomy.cdm.api.service.config.NodeDeletionConfigurator.ChildHandling;
26
import eu.etaxonomy.cdm.api.service.config.TermNodeDeletionConfigurator;
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.term.TermNode;
31
import eu.etaxonomy.cdm.model.term.TermTree;
32
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
33

    
34
/**
35
 * @author a.mueller
36
 * @since 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 TermNode<Feature> node3;
64
	private TermNode<Feature> node2;
65

    
66

    
67
	@Before
68
	public void setUp() throws Exception {}
69

    
70
	@Test
71
	public void testIndexCreatRoot() {
72
        TermTree<Feature> featureTree = TermTree.NewFeatureInstance();
73
		featureTreeService.save(featureTree);
74

    
75
		Feature feature = (Feature)termService.find(914);
76
        TermNode<Feature> newNode = featureTree.getRoot().addChild(feature);
77
		featureTreeService.save(featureTree);
78

    
79
		featureNodeService.saveOrUpdate(newNode);
80

    
81
		commitAndStartNewTransaction(/*new String[]{"FeatureNode"}*/);
82
		newNode = featureNodeService.load(newNode.getUuid());
83
		Assert.assertEquals("", sep + pref+featureTree.getId()+sep + featureTree.getRoot().getId()+ sep  + newNode.getId() + sep, newNode.treeIndex());
84
	}
85

    
86
	@Test
87
	@DataSet(loadStrategy=RefreshLoadStrategy.class, value="FeatureNodeServiceImplTest-indexing.xml")
88
	public final void testIndexCreateNode() {
89

    
90
	    Feature feature = (Feature)termService.find(914);
91

    
92
		node2 = featureNodeService.load(node2Uuid);
93
		String oldTreeIndex = node2.treeIndex();
94

    
95
        TermNode<Feature> newNode = node2.addChild(feature);
96
		featureNodeService.saveOrUpdate(node2);
97

    
98
		commitAndStartNewTransaction();
99
		newNode = featureNodeService.load(newNode.getUuid());
100
		Assert.assertEquals("", oldTreeIndex + newNode.getId() + sep, newNode.treeIndex());
101
	}
102

    
103
	@Test
104
    @DataSet(loadStrategy=RefreshLoadStrategy.class ,value="FeatureNodeServiceImplTest-indexing.xml")
105
	//this may fail in single test if it is the first test as long as #8174 is not fixed
106
	public void testIndexMoveNode() {
107
		//in feature tree
108
        @SuppressWarnings("unused")
109
        TermTree<Feature> featureTree = featureTreeService.load(featureTreeUuid);
110
		node2 = featureNodeService.load(node2Uuid);
111
		node3 = featureNodeService.load(node3Uuid);
112
		node3.addChild(node2);
113
		featureNodeService.saveOrUpdate(node2);
114
		commitAndStartNewTransaction();
115
		TermNode<?> node6 = featureNodeService.load(node6Uuid);
116
		Assert.assertEquals("Node6 treeindex is not correct", node3.treeIndex() + "2#4#6#", node6.treeIndex());
117

    
118
		//root of new feature tree
119
		TermTree<Feature> featureTree2 = featureTreeService.load(featureTree2Uuid);
120
		node2 = featureNodeService.load(node2Uuid);
121
		featureTree2.getRoot().addChild(node2);
122
		featureNodeService.saveOrUpdate(node2);
123
		commitAndStartNewTransaction();
124
		node2 = featureNodeService.load(node2Uuid);
125
		Assert.assertEquals("Node2 treeindex is not correct", "#t5002#7#2#", node2.treeIndex());
126
		node6 = featureNodeService.load(node6Uuid);
127
		Assert.assertEquals("Node6 treeindex is not correct", "#t5002#7#2#4#6#", node6.treeIndex());
128

    
129
		//into new classification
130
		node3 = featureNodeService.load(node3Uuid);
131
		TermNode<Feature> node5 = featureNodeService.load(node5Uuid);
132
		node5.addChild(node3);
133
		featureNodeService.saveOrUpdate(node5);
134
		commitAndStartNewTransaction(new String[]{"FeatureNode"});
135
		node3 = featureNodeService.load(node3Uuid);
136
		Assert.assertEquals("Node3 treeindex is not correct", node5.treeIndex() + node3.getId() + sep, node3.treeIndex());
137

    
138
	}
139

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

    
170
		HibernateProxyHelper.deproxy(tree1, TermTree.class);
171
		TermNode rootNode = HibernateProxyHelper.deproxy(tree1.getRoot(), TermNode.class);
172
		assertNotNull(tree1);
173
		featureTreeService.delete(tree1.getUuid());
174
		commitAndStartNewTransaction(/*new String[]{"TaxonNode"}*/);
175
		tree1 = featureTreeService.load(featureTreeUuid);
176
		assertNull(tree1);
177

    
178
	}
179

    
180
    @Override
181
    public void createTestDataSet() throws FileNotFoundException {}
182
}
(8-8/38)