Commit f3b395619bf11ec0574cb77adddb0a69265ab81e

Authored by Luciano Borges
1 parent a99f52a3
Exists in master

Adição de testes e refatoração de classes relacionadas aos testes de

transação
impl/extension/jdbc/src/test/java/transaction/MyEntity.java 0 → 100644
@@ -0,0 +1,60 @@ @@ -0,0 +1,60 @@
  1 +/*
  2 + * Demoiselle Framework
  3 + * Copyright (C) 2010 SERPRO
  4 + * ----------------------------------------------------------------------------
  5 + * This file is part of Demoiselle Framework.
  6 + *
  7 + * Demoiselle Framework is free software; you can redistribute it and/or
  8 + * modify it under the terms of the GNU Lesser General Public License version 3
  9 + * as published by the Free Software Foundation.
  10 + *
  11 + * This program is distributed in the hope that it will be useful,
  12 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  14 + * GNU General Public License for more details.
  15 + *
  16 + * You should have received a copy of the GNU Lesser General Public License version 3
  17 + * along with this program; if not, see <http://www.gnu.org/licenses/>
  18 + * or write to the Free Software Foundation, Inc., 51 Franklin Street,
  19 + * Fifth Floor, Boston, MA 02110-1301, USA.
  20 + * ----------------------------------------------------------------------------
  21 + * Este arquivo é parte do Framework Demoiselle.
  22 + *
  23 + * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou
  24 + * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação
  25 + * do Software Livre (FSF).
  26 + *
  27 + * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA
  28 + * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou
  29 + * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português
  30 + * para maiores detalhes.
  31 + *
  32 + * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título
  33 + * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>
  34 + * ou escreva para a Fundação do Software Livre (FSF) Inc.,
  35 + * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
  36 + */
  37 +package transaction;
  38 +
  39 +public class MyEntity {
  40 +
  41 + private int id;
  42 +
  43 + private String description;
  44 +
  45 + public int getId() {
  46 + return id;
  47 + }
  48 +
  49 + public void setId(int id) {
  50 + this.id = id;
  51 + }
  52 +
  53 + public String getDescription() {
  54 + return description;
  55 + }
  56 +
  57 + public void setDescription(String description) {
  58 + this.description = description;
  59 + }
  60 +}
impl/extension/jdbc/src/test/java/transaction/MyEntity1.java
@@ -1,60 +0,0 @@ @@ -1,60 +0,0 @@
1 -/*  
2 - * Demoiselle Framework  
3 - * Copyright (C) 2010 SERPRO  
4 - * ----------------------------------------------------------------------------  
5 - * This file is part of Demoiselle Framework.  
6 - *  
7 - * Demoiselle Framework is free software; you can redistribute it and/or  
8 - * modify it under the terms of the GNU Lesser General Public License version 3  
9 - * as published by the Free Software Foundation.  
10 - *  
11 - * This program is distributed in the hope that it will be useful,  
12 - * but WITHOUT ANY WARRANTY; without even the implied warranty of  
13 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the  
14 - * GNU General Public License for more details.  
15 - *  
16 - * You should have received a copy of the GNU Lesser General Public License version 3  
17 - * along with this program; if not, see <http://www.gnu.org/licenses/>  
18 - * or write to the Free Software Foundation, Inc., 51 Franklin Street,  
19 - * Fifth Floor, Boston, MA 02110-1301, USA.  
20 - * ----------------------------------------------------------------------------  
21 - * Este arquivo é parte do Framework Demoiselle.  
22 - *  
23 - * O Framework Demoiselle é um software livre; você pode redistribuí-lo e/ou  
24 - * modificá-lo dentro dos termos da GNU LGPL versão 3 como publicada pela Fundação  
25 - * do Software Livre (FSF).  
26 - *  
27 - * Este programa é distribuído na esperança que possa ser útil, mas SEM NENHUMA  
28 - * GARANTIA; sem uma garantia implícita de ADEQUAÇÃO a qualquer MERCADO ou  
29 - * APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU/LGPL em português  
30 - * para maiores detalhes.  
31 - *  
32 - * Você deve ter recebido uma cópia da GNU LGPL versão 3, sob o título  
33 - * "LICENCA.txt", junto com esse programa. Se não, acesse <http://www.gnu.org/licenses/>  
34 - * ou escreva para a Fundação do Software Livre (FSF) Inc.,  
35 - * 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.  
36 - */  
37 -package transaction;  
38 -  
39 -public class MyEntity1 {  
40 -  
41 - private int id;  
42 -  
43 - private String description;  
44 -  
45 - public int getId() {  
46 - return id;  
47 - }  
48 -  
49 - public void setId(int id) {  
50 - this.id = id;  
51 - }  
52 -  
53 - public String getDescription() {  
54 - return description;  
55 - }  
56 -  
57 - public void setDescription(String description) {  
58 - this.description = description;  
59 - }  
60 -}  
impl/extension/jdbc/src/test/java/transaction/TransactionTest.java
@@ -37,6 +37,9 @@ @@ -37,6 +37,9 @@
37 37
38 package transaction; 38 package transaction;
39 39
  40 +import java.sql.Connection;
  41 +import java.sql.SQLException;
  42 +
40 import javax.inject.Inject; 43 import javax.inject.Inject;
41 44
42 import junit.framework.Assert; 45 import junit.framework.Assert;
@@ -52,6 +55,8 @@ import test.Tests; @@ -52,6 +55,8 @@ import test.Tests;
52 import br.gov.frameworkdemoiselle.transaction.JDBCTransaction; 55 import br.gov.frameworkdemoiselle.transaction.JDBCTransaction;
53 import br.gov.frameworkdemoiselle.transaction.Transaction; 56 import br.gov.frameworkdemoiselle.transaction.Transaction;
54 import br.gov.frameworkdemoiselle.transaction.TransactionContext; 57 import br.gov.frameworkdemoiselle.transaction.TransactionContext;
  58 +import br.gov.frameworkdemoiselle.util.Beans;
  59 +import br.gov.frameworkdemoiselle.util.NameQualifier;
55 60
56 @RunWith(Arquillian.class) 61 @RunWith(Arquillian.class)
57 public class TransactionTest { 62 public class TransactionTest {
@@ -107,18 +112,17 @@ public class TransactionTest { @@ -107,18 +112,17 @@ public class TransactionTest {
107 112
108 @Test 113 @Test
109 public void commitWithSuccess() throws Exception{ 114 public void commitWithSuccess() throws Exception{
  115 + MyEntity m = new MyEntity();
  116 + m.setId(1);
  117 + m.setDescription("desc-1");
110 118
111 - MyEntity1 m1 = new MyEntity1();  
112 - m1.setId(1);  
113 - m1.setDescription("desc-1");  
114 -  
115 - tb.insert(m1); 119 + tb.insert(m);
116 120
117 - Assert.assertEquals("desc-1", tb.find(m1.getId()).getDescription()); 121 + Assert.assertEquals("desc-1", tb.find(m.getId()).getDescription());
118 122
119 - tb.delete(m1); 123 + tb.delete(m);
120 124
121 - Assert.assertNull(tb.find(m1.getId()).getDescription()); 125 + Assert.assertNull(tb.find(m.getId()).getDescription());
122 } 126 }
123 127
124 @Test 128 @Test
@@ -129,8 +133,22 @@ public class TransactionTest { @@ -129,8 +133,22 @@ public class TransactionTest {
129 Assert.assertEquals("Exceção criada para marcar transação para rollback", e.getMessage()); 133 Assert.assertEquals("Exceção criada para marcar transação para rollback", e.getMessage());
130 } 134 }
131 finally{ 135 finally{
132 - MyEntity1 m1 = tb.find(3);  
133 - Assert.assertNull(tb.find(m1.getId()).getDescription()); 136 + MyEntity m = tb.find(3);
  137 + Assert.assertNull(tb.find(m.getId()).getDescription());
134 } 138 }
135 } 139 }
  140 +
  141 + @Test(expected=SQLException.class)
  142 + public void closedConnection() throws Exception{
  143 + MyEntity m = new MyEntity();
  144 + m.setId(1);
  145 + m.setDescription("desc-1");
  146 +
  147 + tb.insertWithouTransaction(m);
  148 +
  149 + Connection conn = Beans.getReference(Connection.class, new NameQualifier("conn"));
  150 + conn.close();
  151 +
  152 + tb.find(m.getId());
  153 + }
136 } 154 }
impl/extension/jdbc/src/test/java/transaction/TransactionalBusiness.java
@@ -49,8 +49,8 @@ import br.gov.frameworkdemoiselle.transaction.Transactional; @@ -49,8 +49,8 @@ import br.gov.frameworkdemoiselle.transaction.Transactional;
49 public class TransactionalBusiness { 49 public class TransactionalBusiness {
50 50
51 @Inject 51 @Inject
52 - @Name("conn1")  
53 - private Connection conn1; 52 + @Name("conn")
  53 + private Connection conn;
54 54
55 @Inject 55 @Inject
56 private TransactionContext transactionContext; 56 private TransactionContext transactionContext;
@@ -65,47 +65,53 @@ public class TransactionalBusiness { @@ -65,47 +65,53 @@ public class TransactionalBusiness {
65 } 65 }
66 66
67 @Transactional 67 @Transactional
68 - public void insert(MyEntity1 m) throws Exception { 68 + public void insert(MyEntity m) throws Exception {
69 String sql = "insert into myentity (id, description) values (" + m.getId() + ", '" + m.getDescription() + "')"; 69 String sql = "insert into myentity (id, description) values (" + m.getId() + ", '" + m.getDescription() + "')";
70 - Statement st = conn1.createStatement(); 70 + Statement st = conn.createStatement();
71 st.executeUpdate(sql); 71 st.executeUpdate(sql);
72 st.close(); 72 st.close();
73 } 73 }
  74 +
  75 + public void insertWithouTransaction(MyEntity m) throws Exception {
  76 + String sql = "insert into myentity (id, description) values (" + m.getId() + ", '" + m.getDescription() + "')";
  77 + Statement st = conn.createStatement();
  78 + st.executeUpdate(sql);
  79 + st.close();
  80 + }
  81 +
74 82
75 @Transactional 83 @Transactional
76 - public void delete(MyEntity1 m1) throws Exception { 84 + public void delete(MyEntity m1) throws Exception {
77 String sql = "delete from myentity where id = " + m1.getId(); 85 String sql = "delete from myentity where id = " + m1.getId();
78 - Statement st = conn1.createStatement(); 86 + Statement st = conn.createStatement();
79 st.executeUpdate(sql); 87 st.executeUpdate(sql);
80 st.close(); 88 st.close();
81 } 89 }
82 90
83 - @Transactional  
84 - public MyEntity1 find(int id) throws Exception { 91 + public MyEntity find(int id) throws Exception {
85 String sql = "select * from myentity where id = " + id; 92 String sql = "select * from myentity where id = " + id;
86 - Statement st = conn1.createStatement(); 93 + Statement st = conn.createStatement();
87 ResultSet rs = st.executeQuery(sql); 94 ResultSet rs = st.executeQuery(sql);
88 95
89 - MyEntity1 m1 = new MyEntity1(); 96 + MyEntity m = new MyEntity();
90 while (rs.next()) { 97 while (rs.next()) {
91 - m1.setId(rs.getInt(1));  
92 - m1.setDescription(rs.getString(2)); 98 + m.setId(rs.getInt(1));
  99 + m.setDescription(rs.getString(2));
93 } 100 }
94 101
95 rs.close(); 102 rs.close();
96 st.close(); 103 st.close();
97 104
98 - return m1; 105 + return m;
99 } 106 }
100 107
101 @Transactional 108 @Transactional
102 public void rollbackWithSuccess() throws Exception { 109 public void rollbackWithSuccess() throws Exception {
103 - MyEntity1 m1 = new MyEntity1();  
104 - m1.setId(3); 110 + MyEntity m = new MyEntity();
  111 + m.setId(3);
105 112
106 - this.insert(m1); 113 + this.insert(m);
107 114
108 throw new Exception("Exceção criada para marcar transação para rollback"); 115 throw new Exception("Exceção criada para marcar transação para rollback");
109 } 116 }
110 -  
111 } 117 }
impl/extension/jdbc/src/test/resources/transaction/demoiselle.properties
@@ -33,7 +33,7 @@ @@ -33,7 +33,7 @@
33 # ou escreva para a Fundação do Software Livre (FSF) Inc., 33 # ou escreva para a Fundação do Software Livre (FSF) Inc.,
34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA. 34 # 51 Franklin St, Fifth Floor, Boston, MA 02111-1301, USA.
35 35
36 -frameworkdemoiselle.persistence.conn1.driver.class=org.hsqldb.jdbcDriver  
37 -frameworkdemoiselle.persistence.conn1.url=jdbc:hsqldb:hsql  
38 -frameworkdemoiselle.persistence.conn1.username=sa  
39 -frameworkdemoiselle.persistence.conn1.password=  
40 \ No newline at end of file 36 \ No newline at end of file
  37 +frameworkdemoiselle.persistence.conn.driver.class=org.hsqldb.jdbcDriver
  38 +frameworkdemoiselle.persistence.conn.url=jdbc:hsqldb:hsql
  39 +frameworkdemoiselle.persistence.conn.username=sa
  40 +frameworkdemoiselle.persistence.conn.password=
41 \ No newline at end of file 41 \ No newline at end of file