TransactionTest.java
4.16 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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
/*
* Demoiselle Framework
* Copyright (C) 2010 SERPRO
* ----------------------------------------------------------------------------
* This file is part of Demoiselle Framework.
*
* Demoiselle Framework is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public License version 3
* as published by the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License version 3
* along with this program; if not, see <http://www.gnu.org/licenses/>
* or write to the Free Software Foundation, Inc., 51 Franklin Street,
* Fifth Floor, Boston, MA 02110-1301, USA.
* ----------------------------------------------------------------------------
* Este arquivo é parte do Framework Demoiselle.
*
* O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
* modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
* do Software Livre (FSF).
*
* Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
* GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
* APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
* para maiores detalhes.
*
* Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
* "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
* ou escreva para a Fundação do Software Livre (FSF) Inc.,
* 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
*/
package transaction;
import javax.inject.Inject;
import junit.framework.Assert;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import test.Tests;
import br.gov.frameworkdemoiselle.transaction.JDBCTransaction;
import br.gov.frameworkdemoiselle.transaction.Transaction;
import br.gov.frameworkdemoiselle.transaction.TransactionContext;
@RunWith(Arquillian.class)
public class TransactionTest {
private static String PATH = "src/test/resources/transaction";
@Inject
private TransactionalBusiness tb;
private Transaction transaction;
@Inject
private TransactionContext context;
@Inject
private DDL ddl;
@Deployment
public static WebArchive createDeployment() {
WebArchive deployment = Tests.createDeployment(TransactionTest.class);
deployment.addAsResource(Tests.createFileAsset(PATH + "/demoiselle.properties"), "demoiselle.properties");
return deployment;
}
@Before
public void init() throws Exception {
transaction = context.getCurrentTransaction();
ddl.dropAndCreate();
transaction.commit();
}
@Test
public void isTransactionActiveWithInterceptor() {
Assert.assertTrue(tb.isTransactionActiveWithInterceptor());
}
@Test
public void isTransactionActiveWithoutInterceptor() {
Assert.assertFalse(tb.isTransactionActiveWithoutInterceptor());
}
@Test
public void verifyIfTransactionIsJdbcTransaction() {
Assert.assertEquals(transaction.getClass(), JDBCTransaction.class);
}
@Test
public void verifyIfTransactionIsActive() {
Assert.assertTrue(!transaction.isActive());
transaction.begin();
Assert.assertTrue(transaction.isActive());
}
@Test
public void commitWithSuccess() throws Exception{
MyEntity1 m1 = new MyEntity1();
m1.setId(1);
m1.setDescription("desc-1");
tb.insert(m1);
Assert.assertEquals("desc-1", tb.find(m1.getId()).getDescription());
tb.delete(m1);
Assert.assertNull(tb.find(m1.getId()).getDescription());
}
@Test
public void rollbackWithSuccess() throws Exception {
try{
tb.rollbackWithSuccess();
} catch (Exception e) {
Assert.assertEquals("Exceção criada para marcar transação para rollback", e.getMessage());
}
finally{
MyEntity1 m1 = tb.find(3);
Assert.assertNull(tb.find(m1.getId()).getDescription());
}
}
}