Merge branch 'hotfix/3.12.4' into develop
[taxeditor.git] / eu.etaxonomy.taxeditor.test / src / test / java / eu / etaxonomy / taxeditor / session / CdmEntitySessionManagerTest.java
1 package eu.etaxonomy.taxeditor.session;
2
3 import java.util.Iterator;
4 import java.util.List;
5 import java.util.UUID;
6
7 import org.apache.log4j.Logger;
8 import org.junit.Assert;
9 import org.junit.BeforeClass;
10 import org.junit.Test;
11 import org.unitils.dbunit.annotation.DataSet;
12
13 import eu.etaxonomy.cdm.api.service.IPolytomousKeyNodeService;
14 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
15 import eu.etaxonomy.cdm.hibernate.HibernateProxyHelper;
16 import eu.etaxonomy.cdm.model.common.CdmBase;
17 import eu.etaxonomy.cdm.model.common.Language;
18 import eu.etaxonomy.cdm.model.common.LanguageString;
19 import eu.etaxonomy.cdm.model.description.KeyStatement;
20 import eu.etaxonomy.cdm.model.description.PolytomousKey;
21 import eu.etaxonomy.cdm.model.description.PolytomousKeyNode;
22 import eu.etaxonomy.cdm.persistence.dao.description.IPolytomousKeyNodeDao;
23 import eu.etaxonomy.cdm.persistence.dto.MergeResult;
24 import eu.etaxonomy.taxeditor.httpinvoker.RemotingSessionAwareTest;
25
26 //FIXME:Remoting fix data issue : User#30
27 //@Ignore
28 @DataSet
29 public class CdmEntitySessionManagerTest extends RemotingSessionAwareTest {
30
31 @SuppressWarnings("unused")
32 private static final Logger logger = Logger.getLogger(CdmEntitySessionManagerTest.class);
33
34
35 IPolytomousKeyService polytomousKeyService = getRemoteApplicationController().getPolytomousKeyService();
36 IPolytomousKeyNodeService polytomousKeyNodeService = getRemoteApplicationController().getPolytomousKeyNodeService();
37
38 private final UUID polytomousKeyUuid = UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66");
39 private final Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
40
41
42 @BeforeClass
43 public static void initializeCdmEntitySessionManagerTest() {
44 }
45
46
47 @Test
48 public void manageNullSessionTest() {
49
50 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
51 cdmEntitySessionManager.bind(null);
52 Assert.assertSame(pKey, pKey);
53 Assert.assertNull(getActiveSession());
54 }
55
56 @Test
57 public void manageSessionWithObjectTest() {
58 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
59
60 Assert.assertNotNull(getActiveSession());
61
62
63 // FIXME:Remoting fix test of setting root entities
64 //Assert.assertEquals(rootEntities.size(),1);
65 //Assert.assertSame(rootEntities.get(0), pKey);
66
67 String upTitleCache = "Updated Title Cache";
68 String upStatement = "Updated Statement";
69 pKey.setTitleCache(upTitleCache, true);
70
71 PolytomousKeyNode node = pKey.getRoot().getChildAt(0);
72 node.getStatement().getLabel(english).setText(upStatement);
73 polytomousKeyService.merge(pKey, true);
74
75 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
76
77
78 Assert.assertEquals(pKey.getTitleCache(), upTitleCache);
79 node = pKey.getRoot().getChildAt(0);
80 KeyStatement statement = node.getStatement();
81 LanguageString label = statement.getLabel(english);
82 Assert.assertEquals(label.getText(), upStatement);
83 }
84
85 @Test
86 public void manageSessionWithListTest() {
87 List<PolytomousKey> pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
88 Assert.assertNotNull(getActiveSession());
89
90
91 // FIXME:Remoting fix test of setting root entities
92 //Assert.assertEquals(rootEntities.size(),2);
93 //Assert.assertSame(rootEntities.get(0),pKeys.get(0));
94 //Assert.assertEquals(rootEntities.get(0).getUuid(),UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01"));
95 //Assert.assertSame(rootEntities.get(1),pKeys.get(1));
96 //Assert.assertEquals(rootEntities.get(1).getUuid(),UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66"));
97
98 String upTitleCache = "Updated Title Cache";
99 String upStatement = "Updated Statement";
100 pKeys.get(0).setTitleCache(upTitleCache, true);
101 polytomousKeyService.merge(pKeys.get(0));
102 PolytomousKey key = pKeys.get(1);
103 PolytomousKeyNode root = key.getRoot();
104 root = HibernateProxyHelper.deproxy(root, PolytomousKeyNode.class);
105 PolytomousKeyNode node = root.getChildAt(0);
106 List<PolytomousKeyNode> nodes = root.getChildren();
107 node.getStatement().getLabel(english).setText(upStatement);
108
109 MergeResult<PolytomousKey> result = polytomousKeyService.merge(key, true);
110 key = result.getMergedEntity();
111 pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
112
113 Assert.assertEquals(pKeys.get(0).getTitleCache(), upTitleCache);
114 key = pKeys.get(1);
115 root = key.getRoot();
116 nodes = root.getChildren();
117 Iterator<PolytomousKeyNode> it = nodes.iterator();
118 if (it.hasNext()){
119 node = it.next();
120 } else {
121 Assert.fail();
122 }
123 Assert.assertEquals(node.getStatement().getLabel(english).getText(), upStatement);
124
125 }
126
127 }