RequestScopedProducerTest.java
3.28 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
package producer;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import javax.persistence.EntityManager;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.jboss.weld.context.http.HttpRequestContext;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.Tests;
import br.gov.frameworkdemoiselle.internal.proxy.EntityManagerProxy;
import br.gov.frameworkdemoiselle.util.Beans;
import br.gov.frameworkdemoiselle.util.NameQualifier;
@RunWith(Arquillian.class)
public class RequestScopedProducerTest {
private static final String PATH = "src/test/resources/producer";
@Deployment
public static WebArchive createDeployment() {
WebArchive deployment = Tests.createDeployment(RequestScopedProducerTest.class);
deployment.addAsResource(Tests.createFileAsset(PATH + "/persistence.xml"), "META-INF/persistence.xml");
deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties");
return deployment;
}
@Test
public void produceEntityManager() {
EntityManager manager = Beans.getReference(EntityManager.class);
assertNotNull(manager);
assertEquals(EntityManagerProxy.class, manager.getClass());
}
@Test
public void produceMultipleEntityManagers() {
EntityManager m1 = Beans.getReference(EntityManager.class, new NameQualifier("pu"));
assertNotNull(m1);
assertEquals(EntityManagerProxy.class, m1.getClass());
EntityManager m2 = Beans.getReference(EntityManager.class, new NameQualifier("pu2"));
assertNotNull(m2);
assertEquals(EntityManagerProxy.class, m2.getClass());
}
@Test
public void produceOneEntityManagerPerRequest() {
EntityManager m1 = Beans.getReference(EntityManager.class, new NameQualifier("pu"));
assertNotNull(m1);
assertEquals(EntityManagerProxy.class, m1.getClass());
EntityManager m2 = Beans.getReference(EntityManager.class, new NameQualifier("pu"));
assertNotNull(m2);
assertEquals(EntityManagerProxy.class, m2.getClass());
MyEntity entity = new MyEntity();
entity.setId(createId("testID"));
m1.persist(entity);
assertTrue(m2.contains(entity));
}
@Test
public void produceDifferentEntityManagerPerRequest() {
HttpRequestContext weldContext = Beans.getReference(HttpRequestContext.class);
boolean wasNotActive = false;
if (!weldContext.isActive()){
wasNotActive = true;
weldContext.activate();
}
EntityManager m1 = Beans.getReference(EntityManager.class, new NameQualifier("pu"));
assertNotNull(m1);
assertEquals(EntityManagerProxy.class, m1.getClass());
MyEntity entity = new MyEntity();
entity.setId(createId("testID"));
m1.persist(entity);
assertTrue(m1.contains(entity));
weldContext.invalidate();
weldContext.deactivate();
if (!weldContext.isActive()){
weldContext.activate();
}
EntityManager m2 = Beans.getReference(EntityManager.class, new NameQualifier("pu"));
assertTrue( m2.isOpen() );
assertTrue( !m2.contains(entity));
if (wasNotActive && weldContext.isActive()){
weldContext.invalidate();
weldContext.deactivate();
}
}
private String createId(String id) {
return this.getClass().getName() + "_" + id;
}
}