merge from trunk
[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.List;
4 import java.util.UUID;
5
6 import org.apache.log4j.Logger;
7 import org.junit.Assert;
8 import org.junit.Before;
9 import org.junit.BeforeClass;
10 import org.junit.Test;
11
12
13 import eu.etaxonomy.cdm.api.service.IPolytomousKeyService;
14 import eu.etaxonomy.cdm.model.common.CdmBase;
15 import eu.etaxonomy.cdm.model.common.Language;
16 import eu.etaxonomy.cdm.model.description.PolytomousKey;
17 import eu.etaxonomy.cdm.model.name.NomenclaturalCode;
18 import eu.etaxonomy.taxeditor.httpinvoker.BaseRemotingTest;
19 import eu.etaxonomy.taxeditor.httpinvoker.CDMServer;
20 import eu.etaxonomy.taxeditor.session.CdmEntitySessionManager;
21 import eu.etaxonomy.taxeditor.session.ISessionEventListener;
22
23 public class CdmEntitySessionManagerTest extends BaseRemotingTest {
24
25 private static final Logger logger = Logger.getLogger(CdmEntitySessionManagerTest.class);
26
27 private ISessionEventListener sessionOwner;
28 private ICdmEntitySessionManager cdmEntitySessionManager = getRemoteApplicationController().getCdmEntitySessionManager();
29 IPolytomousKeyService polytomousKeyService = getRemoteApplicationController().getPolytomousKeyService();
30
31 private UUID polytomousKeyUuid = UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66");
32 private Language english = Language.getLanguageFromUuid(Language.uuidEnglish);
33
34 @BeforeClass
35 public static void initializeCdmEntitySessionManagerTest() {
36 CDMServer.getInstance().setKeepServerRunning(true);
37 //initializeController("default", "127.0.0.1", 8080, "", NomenclaturalCode.ICNAFP);
38 }
39
40 @Before
41 public void initializeSession() {
42 sessionOwner = new MockSessionOwner();
43 cdmEntitySessionManager.bind(sessionOwner);
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 PolytomousKey pKeyLoaded = cdmEntitySessionManager.load(pKey);
53 Assert.assertSame(pKeyLoaded, pKey);
54 Assert.assertNull(getActiveSession());
55 }
56
57 @Test
58 public void manageSessionWithObjectTest() {
59 PolytomousKey pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
60 pKey = cdmEntitySessionManager.load(sessionOwner, pKey);
61 Assert.assertNotNull(getActiveSession());
62 List<CdmBase> rootEntities = (List<CdmBase>)getFieldValueViaReflection(getActiveSession(), "rootEntities");
63
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 pKey.getRoot().getChildAt(0).getStatement().getLabel(english).setText(upStatement);
72 polytomousKeyService.merge(pKey);
73
74 sessionOwner = new MockSessionOwner();
75 pKey = CdmBase.deproxy(polytomousKeyService.find(polytomousKeyUuid),PolytomousKey.class);
76 pKey = cdmEntitySessionManager.load(sessionOwner, pKey);
77
78 Assert.assertEquals(pKey.getTitleCache(), upTitleCache);
79 Assert.assertEquals(pKey.getRoot().getChildAt(0).getStatement().getLabel(english).getText(), upStatement);
80 }
81
82 @Test
83 public void manageSessionWithListTest() {
84 List<PolytomousKey> pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
85 pKeys = (List<PolytomousKey>) cdmEntitySessionManager.load(sessionOwner, pKeys);
86 Assert.assertNotNull(getActiveSession());
87 List<CdmBase> rootEntities = (List<CdmBase>)getFieldValueViaReflection(getActiveSession(), "rootEntities");
88
89 Assert.assertEquals(rootEntities.size(),2);
90 Assert.assertSame(rootEntities.get(0),pKeys.get(0));
91 Assert.assertEquals(rootEntities.get(0).getUuid(),UUID.fromString("9d8bf4f6-a70a-4b80-8556-2ccfb436ff01"));
92
93 Assert.assertSame(rootEntities.get(1),pKeys.get(1));
94 Assert.assertEquals(rootEntities.get(1).getUuid(),UUID.fromString("0d53ba20-7de4-4baa-bd8a-401048447d66"));
95
96 String upTitleCache = "Updated Title Cache";
97 String upStatement = "Updated Statement";
98 pKeys.get(0).setTitleCache(upTitleCache, true);
99 polytomousKeyService.merge(pKeys.get(0));
100 pKeys.get(1).getRoot().getChildAt(0).getStatement().getLabel(english).setText(upStatement);
101 polytomousKeyService.merge(pKeys.get(1));
102
103 sessionOwner = new MockSessionOwner();
104 pKeys = polytomousKeyService.list(PolytomousKey.class, null, null, null, null);
105 pKeys = (List<PolytomousKey>) cdmEntitySessionManager.load(sessionOwner, pKeys);
106 Assert.assertEquals(pKeys.get(0).getTitleCache(), upTitleCache);
107 Assert.assertEquals(pKeys.get(1).getRoot().getChildAt(0).getStatement().getLabel(english).getText(), upStatement);
108
109 }
110
111 }