Commit 2aac77539c417d760b94aa5353aec5c557ed9e0c
Exists in
master
Merge branch 'master' of git@github.com:demoiselle/framework.git
Showing
2 changed files
with
411 additions
and
358 deletions
Show diff stats
impl/extension/jpa/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/QueryProxyTest.java
| 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 | + */ | ||
| 1 | package br.gov.frameworkdemoiselle.internal.proxy; | 37 | package br.gov.frameworkdemoiselle.internal.proxy; |
| 2 | 38 | ||
| 39 | +import static junit.framework.Assert.assertTrue; | ||
| 40 | +import static org.easymock.EasyMock.expect; | ||
| 41 | +import static org.junit.Assert.assertEquals; | ||
| 42 | +import static org.powermock.api.easymock.PowerMock.replay; | ||
| 43 | +import static org.powermock.api.easymock.PowerMock.verifyAll; | ||
| 44 | + | ||
| 45 | +import java.util.ArrayList; | ||
| 46 | +import java.util.Calendar; | ||
| 3 | import java.util.Collections; | 47 | import java.util.Collections; |
| 4 | import java.util.Date; | 48 | import java.util.Date; |
| 5 | import java.util.HashMap; | 49 | import java.util.HashMap; |
| @@ -10,15 +54,13 @@ import javax.persistence.EntityManager; | @@ -10,15 +54,13 @@ import javax.persistence.EntityManager; | ||
| 10 | import javax.persistence.EntityManagerFactory; | 54 | import javax.persistence.EntityManagerFactory; |
| 11 | import javax.persistence.FlushModeType; | 55 | import javax.persistence.FlushModeType; |
| 12 | import javax.persistence.LockModeType; | 56 | import javax.persistence.LockModeType; |
| 13 | -import javax.persistence.NoResultException; | 57 | +import javax.persistence.Parameter; |
| 14 | import javax.persistence.Persistence; | 58 | import javax.persistence.Persistence; |
| 15 | import javax.persistence.Query; | 59 | import javax.persistence.Query; |
| 16 | import javax.persistence.TemporalType; | 60 | import javax.persistence.TemporalType; |
| 17 | 61 | ||
| 18 | import org.easymock.EasyMock; | 62 | import org.easymock.EasyMock; |
| 19 | -import org.junit.Assert; | ||
| 20 | import org.junit.Before; | 63 | import org.junit.Before; |
| 21 | -import org.junit.Ignore; | ||
| 22 | import org.junit.Test; | 64 | import org.junit.Test; |
| 23 | import org.junit.runner.RunWith; | 65 | import org.junit.runner.RunWith; |
| 24 | import org.powermock.api.easymock.PowerMock; | 66 | import org.powermock.api.easymock.PowerMock; |
| @@ -32,224 +74,221 @@ import br.gov.frameworkdemoiselle.util.Beans; | @@ -32,224 +74,221 @@ import br.gov.frameworkdemoiselle.util.Beans; | ||
| 32 | 74 | ||
| 33 | /** | 75 | /** |
| 34 | * Test the proxied {@link Query} class, {@link QueryProxy}. | 76 | * Test the proxied {@link Query} class, {@link QueryProxy}. |
| 77 | + * | ||
| 35 | * @author 81986912515 | 78 | * @author 81986912515 |
| 36 | - * | ||
| 37 | */ | 79 | */ |
| 38 | -@Ignore | ||
| 39 | @RunWith(PowerMockRunner.class) | 80 | @RunWith(PowerMockRunner.class) |
| 40 | -@PrepareForTest({Beans.class}) | 81 | +@PrepareForTest({ Beans.class }) |
| 41 | public class QueryProxyTest { | 82 | public class QueryProxyTest { |
| 42 | - | 83 | + |
| 43 | private EntityManager manager; | 84 | private EntityManager manager; |
| 85 | + | ||
| 44 | private EntityManagerProducer producer; | 86 | private EntityManagerProducer producer; |
| 45 | - | 87 | + |
| 88 | + private QueryProxy queryProxy; | ||
| 89 | + | ||
| 46 | @Before | 90 | @Before |
| 47 | - public void setUp(){ | ||
| 48 | - | 91 | + public void setUp() { |
| 92 | + | ||
| 49 | Map<String, Object> configOverrides = new HashMap<String, Object>(); | 93 | Map<String, Object> configOverrides = new HashMap<String, Object>(); |
| 50 | configOverrides.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence"); | 94 | configOverrides.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence"); |
| 51 | - configOverrides.put("javax.persistence.jdbc.url", "jdbc:hsqldb:hsql:."); | 95 | + |
| 96 | + configOverrides.put("javax.persistence.jdbc.url", "jdbc:hsqldb:mem:."); | ||
| 97 | + configOverrides.put("javax.persistence.jdbc.driver", "org.hsqldb.jdbcDriver"); | ||
| 98 | + configOverrides.put("javax.persistence.jdbc.user", "sa"); | ||
| 99 | + configOverrides.put("javax.persistence.jdbc.password", ""); | ||
| 100 | + | ||
| 52 | configOverrides.put("hibernate.show_sql", "true"); | 101 | configOverrides.put("hibernate.show_sql", "true"); |
| 53 | configOverrides.put("hibernate.hbm2ddl.auto", "create-drop"); | 102 | configOverrides.put("hibernate.hbm2ddl.auto", "create-drop"); |
| 54 | - | 103 | + |
| 55 | EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu1", configOverrides); | 104 | EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu1", configOverrides); |
| 56 | EntityManager delegate = factory.createEntityManager(); | 105 | EntityManager delegate = factory.createEntityManager(); |
| 57 | - | 106 | + |
| 58 | Map<String, EntityManager> cache = Collections.synchronizedMap(new HashMap<String, EntityManager>()); | 107 | Map<String, EntityManager> cache = Collections.synchronizedMap(new HashMap<String, EntityManager>()); |
| 59 | cache.put("pu1", delegate); | 108 | cache.put("pu1", delegate); |
| 60 | - | 109 | + |
| 61 | producer = new EntityManagerProducer(); | 110 | producer = new EntityManagerProducer(); |
| 62 | Whitebox.setInternalState(producer, "cache", cache); | 111 | Whitebox.setInternalState(producer, "cache", cache); |
| 63 | - | 112 | + |
| 64 | PowerMock.mockStatic(Beans.class); | 113 | PowerMock.mockStatic(Beans.class); |
| 65 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(12); | 114 | + EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).anyTimes(); |
| 66 | PowerMock.replayAll(); | 115 | PowerMock.replayAll(); |
| 67 | 116 | ||
| 68 | manager = new EntityManagerProxy("pu1"); | 117 | manager = new EntityManagerProxy("pu1"); |
| 69 | - | ||
| 70 | - manager.getTransaction().begin(); | ||
| 71 | - manager.createQuery("delete from Client").executeUpdate(); | ||
| 72 | - | ||
| 73 | - Client client = new Client(); | ||
| 74 | - client.setName("Cliente 1"); | ||
| 75 | - client.setBirthDate(new Date()); | ||
| 76 | - manager.persist(client); | ||
| 77 | - | ||
| 78 | - client = new Client(); | ||
| 79 | - client.setName("Cliente 2"); | ||
| 80 | - client.setBirthDate(new Date()); | ||
| 81 | - manager.persist(client); | ||
| 82 | - | ||
| 83 | - client = new Client(); | ||
| 84 | - client.setName("Cliente 3"); | ||
| 85 | - client.setBirthDate(new Date()); | ||
| 86 | - manager.persist(client); | ||
| 87 | - | ||
| 88 | - manager.flush(); | ||
| 89 | - manager.getTransaction().commit(); | ||
| 90 | - manager.clear(); | ||
| 91 | - | ||
| 92 | - PowerMock.resetAll(); | ||
| 93 | } | 118 | } |
| 94 | - | ||
| 95 | - private QueryProxy getQueryProxy(String jpql,Object... params){ | ||
| 96 | - Query q = manager.createQuery(jpql); | ||
| 97 | - if (!(q instanceof QueryProxy)){ | ||
| 98 | - Assert.fail("Query não é instância de QueryProxy"); | ||
| 99 | - } | ||
| 100 | - | ||
| 101 | - if (params!=null){ | ||
| 102 | - int count = 1; | ||
| 103 | - for (Object param : params){ | ||
| 104 | - q.setParameter(count++, param); | ||
| 105 | - } | ||
| 106 | - } | ||
| 107 | - | ||
| 108 | - return (QueryProxy)q; | ||
| 109 | - } | ||
| 110 | - | 119 | + |
| 111 | @Test | 120 | @Test |
| 112 | - public void testResultList(){ | ||
| 113 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 114 | - PowerMock.replay(Beans.class); | ||
| 115 | - | ||
| 116 | - List<?> retorno = getQueryProxy("select c from Client c").getResultList(); | ||
| 117 | - Assert.assertNotNull(retorno); | ||
| 118 | - Assert.assertFalse(retorno.isEmpty()); | 121 | + public void testGetResultList() { |
| 122 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 123 | + List<String> result = new ArrayList<String>(); | ||
| 124 | + result.add("x"); | ||
| 125 | + EasyMock.expect(queryDelegate.getResultList()).andReturn(result).anyTimes(); | ||
| 126 | + | ||
| 127 | + replay(queryDelegate); | ||
| 128 | + | ||
| 129 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 130 | + queryProxy.getResultList(); | ||
| 131 | + assertEquals(queryProxy.getResultList().size(), queryDelegate.getResultList().size()); | ||
| 132 | + | ||
| 133 | + verifyAll(); | ||
| 119 | } | 134 | } |
| 120 | - | 135 | + |
| 121 | @Test | 136 | @Test |
| 122 | - public void testSingleResult(){ | ||
| 123 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 124 | - PowerMock.replay(Beans.class); | ||
| 125 | - | ||
| 126 | - Client retorno = (Client)getQueryProxy("select c from Client c where c.name=?1","Cliente 1").getSingleResult(); | ||
| 127 | - Assert.assertNotNull(retorno); | 137 | + public void testSingleResult() { |
| 138 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 139 | + String result = "Resultado"; | ||
| 140 | + EasyMock.expect(queryDelegate.getSingleResult()).andReturn(result).anyTimes(); | ||
| 141 | + | ||
| 142 | + replay(queryDelegate); | ||
| 143 | + | ||
| 144 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 145 | + assertEquals(queryProxy.getSingleResult(), queryDelegate.getSingleResult()); | ||
| 146 | + | ||
| 147 | + verifyAll(); | ||
| 128 | } | 148 | } |
| 129 | - | 149 | + |
| 130 | @Test | 150 | @Test |
| 131 | - public void testExecuteUpdate(){ | ||
| 132 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(4); | ||
| 133 | - PowerMock.replay(Beans.class); | ||
| 134 | - | ||
| 135 | - manager.getTransaction().begin(); | ||
| 136 | - int linesAffected = getQueryProxy("update Client set name=?1 where name=?2","Novo Cliente","Cliente 1").executeUpdate(); | ||
| 137 | - manager.getTransaction().commit(); | ||
| 138 | - Assert.assertEquals(1, linesAffected); | 151 | + public void testExecuteUpdate() { |
| 152 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 153 | + EasyMock.expect(queryDelegate.executeUpdate()).andReturn(1).anyTimes(); | ||
| 154 | + | ||
| 155 | + replay(queryDelegate); | ||
| 156 | + | ||
| 157 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 158 | + assertEquals(queryProxy.executeUpdate(), 1); | ||
| 159 | + | ||
| 160 | + verifyAll(); | ||
| 139 | } | 161 | } |
| 140 | - | 162 | + |
| 141 | @Test | 163 | @Test |
| 142 | - public void testPagination(){ | ||
| 143 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 144 | - PowerMock.replay(Beans.class); | ||
| 145 | - | ||
| 146 | - QueryProxy proxy = getQueryProxy("select c from Client c"); | ||
| 147 | - | ||
| 148 | - proxy.setMaxResults(2); | ||
| 149 | - Assert.assertEquals(2, proxy.getMaxResults()); | ||
| 150 | - | ||
| 151 | - proxy.setFirstResult(1); | ||
| 152 | - Assert.assertEquals(1, proxy.getFirstResult()); | ||
| 153 | - | ||
| 154 | - List<?> result = proxy.getResultList(); | ||
| 155 | - Assert.assertEquals(2, result.size()); | 164 | + public void testPagination() { |
| 165 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 166 | + expect(queryDelegate.getMaxResults()).andReturn(4).times(2); | ||
| 167 | + expect(queryDelegate.getFirstResult()).andReturn(2).times(2); | ||
| 168 | + expect(queryDelegate.setMaxResults(EasyMock.anyInt())).andReturn(queryDelegate); | ||
| 169 | + expect(queryDelegate.setFirstResult(EasyMock.anyInt())).andReturn(queryDelegate); | ||
| 170 | + replay(queryDelegate); | ||
| 171 | + | ||
| 172 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 173 | + queryProxy.setMaxResults(4); | ||
| 174 | + queryProxy.setFirstResult(2); | ||
| 175 | + assertEquals(queryProxy.getMaxResults(), queryDelegate.getMaxResults()); | ||
| 176 | + assertEquals(queryProxy.getFirstResult(), queryDelegate.getFirstResult()); | ||
| 177 | + | ||
| 178 | + verifyAll(); | ||
| 156 | } | 179 | } |
| 157 | - | 180 | + |
| 158 | @Test | 181 | @Test |
| 159 | - public void testHint(){ | ||
| 160 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(14); | ||
| 161 | - PowerMock.replay(Beans.class); | ||
| 162 | - | ||
| 163 | - //Consulta um cliente definindo a hint readOnly, que torna a entidade retornada não atualizável. | ||
| 164 | - manager.getTransaction().begin(); | ||
| 165 | - QueryProxy proxy = getQueryProxy("select c from Client c where c.name=?1","Cliente 1"); | ||
| 166 | - proxy.setHint("org.hibernate.readOnly", true); | ||
| 167 | - Assert.assertFalse( proxy.getHints().isEmpty() ); | ||
| 168 | - | ||
| 169 | - //Tenta atualizar a entidade e limpar o cache de primeiro nível | ||
| 170 | - Client c = (Client)proxy.getSingleResult(); | ||
| 171 | - c.setName("Cliente 1 Alterado"); | ||
| 172 | - manager.flush(); | ||
| 173 | - manager.getTransaction().commit(); | ||
| 174 | - manager.clear(); | ||
| 175 | - | ||
| 176 | - //Reconsultar a entidade tem que retornar 1 resultado, pois o nome "Cliente 1" não deve ter sido alterado. | ||
| 177 | - manager.getTransaction().begin(); | ||
| 178 | - proxy = getQueryProxy("select c from Client c where c.name=?1","Cliente 1"); | ||
| 179 | - c = (Client)proxy.getSingleResult(); | ||
| 180 | - Assert.assertNotNull(c); | ||
| 181 | - | ||
| 182 | - //Mudar a entidade agora tem que funcionar, pois não foi informado o hint | ||
| 183 | - c.setName("Cliente 1 Alterado"); | ||
| 184 | - manager.flush(); | ||
| 185 | - manager.getTransaction().commit(); | ||
| 186 | - manager.clear(); | ||
| 187 | - | ||
| 188 | - proxy = getQueryProxy("select c from Client c where c.name=?1","Cliente 1"); | ||
| 189 | - | ||
| 190 | - try{ | ||
| 191 | - proxy.getSingleResult(); | ||
| 192 | - Assert.fail(); | ||
| 193 | - } | ||
| 194 | - catch(NoResultException ne){ | ||
| 195 | - } | ||
| 196 | - | ||
| 197 | - PowerMock.verifyAll(); | 182 | + public void testHint() { |
| 183 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 184 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
| 185 | + Client client = new Client(); | ||
| 186 | + map.put("1", client); | ||
| 187 | + expect(queryDelegate.getHints()).andReturn(map).times(2); | ||
| 188 | + expect(queryDelegate.setHint(EasyMock.anyObject(String.class), EasyMock.anyObject())).andReturn(queryDelegate); | ||
| 189 | + replay(queryDelegate); | ||
| 190 | + | ||
| 191 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 192 | + queryProxy.setHint("1", client); | ||
| 193 | + assertEquals(queryProxy.getHints(), queryDelegate.getHints()); | ||
| 194 | + | ||
| 195 | + verifyAll(); | ||
| 198 | } | 196 | } |
| 199 | - | 197 | + |
| 198 | + @SuppressWarnings({ "unused", "rawtypes", "unchecked" }) | ||
| 200 | @Test | 199 | @Test |
| 201 | - public void testParameters(){ | ||
| 202 | - | ||
| 203 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 204 | - PowerMock.replay(Beans.class); | ||
| 205 | - | ||
| 206 | - QueryProxy proxy = getQueryProxy("select c.name from Client c where 'Named Parameter'=:name and c.birthDate=:dateName and c.name=?1 and c.birthDate=?2"); | ||
| 207 | - | 200 | + public void testParameters() { |
| 201 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 208 | Date dateValue = new Date(); | 202 | Date dateValue = new Date(); |
| 209 | - | ||
| 210 | - proxy.setParameter("name", "Named Parameter"); | ||
| 211 | - proxy.setParameter("dateName", dateValue, TemporalType.DATE); | ||
| 212 | - | ||
| 213 | - proxy.setParameter(1, "Cliente 1"); | ||
| 214 | - proxy.setParameter(2, dateValue,TemporalType.DATE); | ||
| 215 | - | ||
| 216 | - Assert.assertEquals(proxy.getParameterValue("name"),"Named Parameter"); | ||
| 217 | - Assert.assertEquals(proxy.getParameterValue(1), "Cliente 1"); | ||
| 218 | - | ||
| 219 | - @SuppressWarnings("unchecked") | ||
| 220 | - List<Map<String, Object>> result = proxy.getResultList(); | ||
| 221 | - | ||
| 222 | - Assert.assertNotNull(result); | ||
| 223 | - Assert.assertFalse(result.isEmpty()); | ||
| 224 | - | ||
| 225 | - PowerMock.verifyAll(); | 203 | + Calendar calendar = PowerMock.createMock(Calendar.class); |
| 204 | + Class<Date> type = Date.class; | ||
| 205 | + Parameter parameter = PowerMock.createMock(Parameter.class); | ||
| 206 | + | ||
| 207 | + expect(queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(String.class))) | ||
| 208 | + .andReturn(queryDelegate); | ||
| 209 | + expect(queryDelegate.getParameterValue(EasyMock.anyObject(String.class))).andReturn("Named Parameter") | ||
| 210 | + .anyTimes(); | ||
| 211 | + expect(queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(String.class))) | ||
| 212 | + .andReturn(queryDelegate); | ||
| 213 | + expect(queryDelegate.getParameterValue(EasyMock.anyInt())).andReturn("Client").anyTimes(); | ||
| 214 | + expect( | ||
| 215 | + queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(Date.class), | ||
| 216 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 217 | + expect( | ||
| 218 | + queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(Date.class), | ||
| 219 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 220 | + expect(queryDelegate.setParameter(EasyMock.anyObject(Parameter.class), EasyMock.anyObject())).andReturn( | ||
| 221 | + queryDelegate); | ||
| 222 | + expect(queryDelegate.getParameterValue(EasyMock.anyObject(Parameter.class))).andReturn(parameter).anyTimes(); | ||
| 223 | + expect( | ||
| 224 | + queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(Calendar.class), | ||
| 225 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 226 | + expect( | ||
| 227 | + queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(Calendar.class), | ||
| 228 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 229 | + | ||
| 230 | + replay(queryDelegate, parameter, calendar); | ||
| 231 | + | ||
| 232 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 233 | + queryProxy.setParameter("name", "Named Parameter"); | ||
| 234 | + assertEquals(queryProxy.getParameterValue("name"), queryDelegate.getParameterValue("name")); | ||
| 235 | + queryProxy.setParameter(1, "Client"); | ||
| 236 | + assertEquals(queryProxy.getParameterValue("1"), queryDelegate.getParameterValue("1")); | ||
| 237 | + queryProxy.setParameter("dateName", dateValue, TemporalType.DATE); | ||
| 238 | + queryProxy.setParameter(2, dateValue, TemporalType.DATE); | ||
| 239 | + queryProxy.setParameter(parameter, "X"); | ||
| 240 | + queryProxy.getParameterValue(parameter); | ||
| 241 | + assertEquals(queryProxy.getParameterValue(parameter), parameter); | ||
| 242 | + queryProxy.setParameter("dateName", calendar, TemporalType.DATE); | ||
| 243 | + queryProxy.setParameter(2, calendar, TemporalType.DATE); | ||
| 244 | + | ||
| 245 | + verifyAll(); | ||
| 246 | + } | ||
| 247 | + | ||
| 248 | + @SuppressWarnings("rawtypes") | ||
| 249 | + @Test | ||
| 250 | + public void testIsBound() { | ||
| 251 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 252 | + Parameter parameter = PowerMock.createMock(Parameter.class); | ||
| 253 | + expect(queryDelegate.isBound(EasyMock.anyObject(Parameter.class))).andReturn(true); | ||
| 254 | + | ||
| 255 | + replay(queryDelegate, parameter); | ||
| 256 | + | ||
| 257 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 258 | + assertTrue(queryProxy.isBound(parameter)); | ||
| 259 | + | ||
| 260 | + verifyAll(); | ||
| 226 | } | 261 | } |
| 227 | - | 262 | + |
| 228 | @Test | 263 | @Test |
| 229 | - public void testFlushMode(){ | ||
| 230 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(3); | ||
| 231 | - PowerMock.replay(Beans.class); | ||
| 232 | - | ||
| 233 | - manager.getTransaction().begin(); | ||
| 234 | - QueryProxy proxy = getQueryProxy("update Client set name=?1 where name=?2","Cliente 1 Alterado","Cliente 1"); | ||
| 235 | - proxy.setFlushMode(FlushModeType.COMMIT); | ||
| 236 | - Assert.assertEquals(proxy.getFlushMode(), FlushModeType.COMMIT); | ||
| 237 | - manager.getTransaction().commit(); | ||
| 238 | - | ||
| 239 | - PowerMock.verifyAll(); | 264 | + public void testFlushMode() { |
| 265 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 266 | + FlushModeType flushModeType = FlushModeType.AUTO; | ||
| 267 | + | ||
| 268 | + expect(queryDelegate.setFlushMode(FlushModeType.AUTO)).andReturn(queryDelegate); | ||
| 269 | + expect(queryDelegate.getFlushMode()).andReturn(flushModeType).anyTimes(); | ||
| 270 | + | ||
| 271 | + replay(queryDelegate); | ||
| 272 | + | ||
| 273 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 274 | + queryProxy.setFlushMode(FlushModeType.AUTO); | ||
| 275 | + assertEquals(queryProxy.getFlushMode(), queryDelegate.getFlushMode()); | ||
| 276 | + verifyAll(); | ||
| 240 | } | 277 | } |
| 241 | - | 278 | + |
| 242 | @Test | 279 | @Test |
| 243 | - public void testLockMode(){ | ||
| 244 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(4); | ||
| 245 | - PowerMock.replay(Beans.class); | ||
| 246 | - | ||
| 247 | - manager.getTransaction().begin(); | ||
| 248 | - QueryProxy proxy = getQueryProxy("update Client set name=?1 where name=?2","Cliente 1 Alterado","Cliente 1"); | ||
| 249 | - proxy.setLockMode(LockModeType.OPTIMISTIC); | ||
| 250 | - Assert.assertEquals(proxy.getLockMode(), LockModeType.OPTIMISTIC); | ||
| 251 | - manager.getTransaction().commit(); | ||
| 252 | - | ||
| 253 | - PowerMock.verifyAll(); | 280 | + public void testLockMode() { |
| 281 | + Query queryDelegate = PowerMock.createMock(Query.class); | ||
| 282 | + LockModeType lockModeType = LockModeType.OPTIMISTIC; | ||
| 283 | + | ||
| 284 | + expect(queryDelegate.setLockMode(lockModeType)).andReturn(queryDelegate); | ||
| 285 | + expect(queryDelegate.getLockMode()).andReturn(lockModeType).anyTimes(); | ||
| 286 | + | ||
| 287 | + replay(queryDelegate); | ||
| 288 | + | ||
| 289 | + queryProxy = new QueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 290 | + queryProxy.setLockMode(lockModeType); | ||
| 291 | + assertEquals(queryProxy.getLockMode(), queryDelegate.getLockMode()); | ||
| 292 | + verifyAll(); | ||
| 254 | } | 293 | } |
| 255 | } | 294 | } |
impl/extension/jpa/src/test/java/br/gov/frameworkdemoiselle/internal/proxy/TypedQueryProxyTest.java
| 1 | package br.gov.frameworkdemoiselle.internal.proxy; | 1 | package br.gov.frameworkdemoiselle.internal.proxy; |
| 2 | 2 | ||
| 3 | +import static junit.framework.Assert.assertTrue; | ||
| 4 | +import static org.easymock.EasyMock.expect; | ||
| 5 | +import static org.junit.Assert.assertEquals; | ||
| 6 | +import static org.powermock.api.easymock.PowerMock.replay; | ||
| 7 | +import static org.powermock.api.easymock.PowerMock.verifyAll; | ||
| 8 | + | ||
| 9 | +import java.util.ArrayList; | ||
| 10 | +import java.util.Calendar; | ||
| 3 | import java.util.Collections; | 11 | import java.util.Collections; |
| 4 | import java.util.Date; | 12 | import java.util.Date; |
| 5 | import java.util.HashMap; | 13 | import java.util.HashMap; |
| @@ -10,16 +18,14 @@ import javax.persistence.EntityManager; | @@ -10,16 +18,14 @@ import javax.persistence.EntityManager; | ||
| 10 | import javax.persistence.EntityManagerFactory; | 18 | import javax.persistence.EntityManagerFactory; |
| 11 | import javax.persistence.FlushModeType; | 19 | import javax.persistence.FlushModeType; |
| 12 | import javax.persistence.LockModeType; | 20 | import javax.persistence.LockModeType; |
| 13 | -import javax.persistence.NoResultException; | 21 | +import javax.persistence.Parameter; |
| 14 | import javax.persistence.Persistence; | 22 | import javax.persistence.Persistence; |
| 15 | import javax.persistence.Query; | 23 | import javax.persistence.Query; |
| 16 | import javax.persistence.TemporalType; | 24 | import javax.persistence.TemporalType; |
| 17 | import javax.persistence.TypedQuery; | 25 | import javax.persistence.TypedQuery; |
| 18 | 26 | ||
| 19 | import org.easymock.EasyMock; | 27 | import org.easymock.EasyMock; |
| 20 | -import org.junit.Assert; | ||
| 21 | import org.junit.Before; | 28 | import org.junit.Before; |
| 22 | -import org.junit.Ignore; | ||
| 23 | import org.junit.Test; | 29 | import org.junit.Test; |
| 24 | import org.junit.runner.RunWith; | 30 | import org.junit.runner.RunWith; |
| 25 | import org.powermock.api.easymock.PowerMock; | 31 | import org.powermock.api.easymock.PowerMock; |
| @@ -33,212 +39,220 @@ import br.gov.frameworkdemoiselle.util.Beans; | @@ -33,212 +39,220 @@ import br.gov.frameworkdemoiselle.util.Beans; | ||
| 33 | 39 | ||
| 34 | /** | 40 | /** |
| 35 | * Test the proxied {@link Query} class, {@link TypedQueryProxy}. | 41 | * Test the proxied {@link Query} class, {@link TypedQueryProxy}. |
| 42 | + * | ||
| 36 | * @author 81986912515 | 43 | * @author 81986912515 |
| 37 | - * | 44 | + * @param <X> |
| 38 | */ | 45 | */ |
| 39 | -@Ignore | 46 | + |
| 47 | +@SuppressWarnings("rawtypes") | ||
| 40 | @RunWith(PowerMockRunner.class) | 48 | @RunWith(PowerMockRunner.class) |
| 41 | -@PrepareForTest({Beans.class}) | 49 | +@PrepareForTest({ Beans.class }) |
| 42 | public class TypedQueryProxyTest { | 50 | public class TypedQueryProxyTest { |
| 43 | - | 51 | + |
| 44 | private EntityManager manager; | 52 | private EntityManager manager; |
| 53 | + | ||
| 45 | private EntityManagerProducer producer; | 54 | private EntityManagerProducer producer; |
| 46 | - | 55 | + |
| 56 | + private TypedQueryProxy typedQueryProxy; | ||
| 57 | + | ||
| 47 | @Before | 58 | @Before |
| 48 | - public void setUp(){ | ||
| 49 | - | 59 | + public void setUp() { |
| 60 | + | ||
| 50 | Map<String, Object> configOverrides = new HashMap<String, Object>(); | 61 | Map<String, Object> configOverrides = new HashMap<String, Object>(); |
| 51 | configOverrides.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence"); | 62 | configOverrides.put("javax.persistence.provider", "org.hibernate.ejb.HibernatePersistence"); |
| 52 | - configOverrides.put("javax.persistence.jdbc.url", "jdbc:hsqldb:hsql:."); | 63 | + |
| 64 | + configOverrides.put("javax.persistence.jdbc.url", "jdbc:hsqldb:mem:."); | ||
| 65 | + configOverrides.put("javax.persistence.jdbc.driver", "org.hsqldb.jdbcDriver"); | ||
| 66 | + configOverrides.put("javax.persistence.jdbc.user", "sa"); | ||
| 67 | + configOverrides.put("javax.persistence.jdbc.password", ""); | ||
| 68 | + | ||
| 53 | configOverrides.put("hibernate.show_sql", "true"); | 69 | configOverrides.put("hibernate.show_sql", "true"); |
| 54 | configOverrides.put("hibernate.hbm2ddl.auto", "create-drop"); | 70 | configOverrides.put("hibernate.hbm2ddl.auto", "create-drop"); |
| 55 | - | 71 | + |
| 56 | EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu1", configOverrides); | 72 | EntityManagerFactory factory = Persistence.createEntityManagerFactory("pu1", configOverrides); |
| 57 | EntityManager delegate = factory.createEntityManager(); | 73 | EntityManager delegate = factory.createEntityManager(); |
| 58 | - | 74 | + |
| 59 | Map<String, EntityManager> cache = Collections.synchronizedMap(new HashMap<String, EntityManager>()); | 75 | Map<String, EntityManager> cache = Collections.synchronizedMap(new HashMap<String, EntityManager>()); |
| 60 | cache.put("pu1", delegate); | 76 | cache.put("pu1", delegate); |
| 61 | - | 77 | + |
| 62 | producer = new EntityManagerProducer(); | 78 | producer = new EntityManagerProducer(); |
| 63 | Whitebox.setInternalState(producer, "cache", cache); | 79 | Whitebox.setInternalState(producer, "cache", cache); |
| 64 | - | 80 | + |
| 65 | PowerMock.mockStatic(Beans.class); | 81 | PowerMock.mockStatic(Beans.class); |
| 66 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(12); | 82 | + EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).anyTimes(); |
| 67 | PowerMock.replayAll(); | 83 | PowerMock.replayAll(); |
| 68 | 84 | ||
| 69 | manager = new EntityManagerProxy("pu1"); | 85 | manager = new EntityManagerProxy("pu1"); |
| 70 | - | ||
| 71 | - manager.getTransaction().begin(); | ||
| 72 | - manager.createQuery("delete from Client").executeUpdate(); | ||
| 73 | - | ||
| 74 | - Client client = new Client(); | ||
| 75 | - client.setName("Cliente 1"); | ||
| 76 | - client.setBirthDate(new Date()); | ||
| 77 | - manager.persist(client); | ||
| 78 | - | ||
| 79 | - client = new Client(); | ||
| 80 | - client.setName("Cliente 2"); | ||
| 81 | - client.setBirthDate(new Date()); | ||
| 82 | - manager.persist(client); | ||
| 83 | - | ||
| 84 | - client = new Client(); | ||
| 85 | - client.setName("Cliente 3"); | ||
| 86 | - client.setBirthDate(new Date()); | ||
| 87 | - manager.persist(client); | ||
| 88 | - | ||
| 89 | - manager.flush(); | ||
| 90 | - manager.getTransaction().commit(); | ||
| 91 | - manager.clear(); | ||
| 92 | - | ||
| 93 | - PowerMock.resetAll(); | ||
| 94 | - } | ||
| 95 | - | ||
| 96 | - private <T> TypedQueryProxy<T> getQueryProxy(String jpql,Class<T> classType,Object... params){ | ||
| 97 | - TypedQuery<T> q = manager.createQuery(jpql,classType); | ||
| 98 | - if (!(q instanceof TypedQueryProxy)){ | ||
| 99 | - Assert.fail("Query não é instância de QueryProxy"); | ||
| 100 | - } | ||
| 101 | - | ||
| 102 | - if (params!=null){ | ||
| 103 | - int count = 1; | ||
| 104 | - for (Object param : params){ | ||
| 105 | - q.setParameter(count++, param); | ||
| 106 | - } | ||
| 107 | - } | ||
| 108 | - | ||
| 109 | - return (TypedQueryProxy<T>)q; | 86 | + |
| 87 | + // PowerMock.resetAll(); | ||
| 110 | } | 88 | } |
| 111 | - | 89 | + |
| 90 | + @SuppressWarnings("unchecked") | ||
| 112 | @Test | 91 | @Test |
| 113 | - public void testResultList(){ | ||
| 114 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 115 | - PowerMock.replay(Beans.class); | ||
| 116 | - | ||
| 117 | - List<?> retorno = getQueryProxy("select c from Client c",Client.class).getResultList(); | ||
| 118 | - Assert.assertNotNull(retorno); | ||
| 119 | - Assert.assertFalse(retorno.isEmpty()); | 92 | + public void testResultList() { |
| 93 | + | ||
| 94 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 95 | + List<String> result = new ArrayList<String>(); | ||
| 96 | + result.add("x"); | ||
| 97 | + EasyMock.expect(queryDelegate.getResultList()).andReturn(result).anyTimes(); | ||
| 98 | + | ||
| 99 | + replay(queryDelegate); | ||
| 100 | + | ||
| 101 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 102 | + assertEquals(typedQueryProxy.getResultList().size(), queryDelegate.getResultList().size()); | ||
| 103 | + | ||
| 104 | + verifyAll(); | ||
| 120 | } | 105 | } |
| 121 | - | 106 | + |
| 107 | + @SuppressWarnings("unchecked") | ||
| 122 | @Test | 108 | @Test |
| 123 | - public void testSingleResult(){ | ||
| 124 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 125 | - PowerMock.replay(Beans.class); | ||
| 126 | - | ||
| 127 | - Client retorno = (Client)getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1").getSingleResult(); | ||
| 128 | - Assert.assertNotNull(retorno); | 109 | + public void testSingleResult() { |
| 110 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 111 | + String result = "Resultado"; | ||
| 112 | + EasyMock.expect(queryDelegate.getSingleResult()).andReturn(result).anyTimes(); | ||
| 113 | + | ||
| 114 | + replay(queryDelegate); | ||
| 115 | + | ||
| 116 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 117 | + assertEquals(typedQueryProxy.getSingleResult(), queryDelegate.getSingleResult()); | ||
| 118 | + | ||
| 119 | + verifyAll(); | ||
| 129 | } | 120 | } |
| 130 | - | 121 | + |
| 122 | + @SuppressWarnings("unchecked") | ||
| 131 | @Test | 123 | @Test |
| 132 | - public void testPagination(){ | ||
| 133 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 134 | - PowerMock.replay(Beans.class); | ||
| 135 | - | ||
| 136 | - TypedQueryProxy<Client> proxy = getQueryProxy("select c from Client c",Client.class); | ||
| 137 | - | ||
| 138 | - proxy.setMaxResults(2); | ||
| 139 | - Assert.assertEquals(2, proxy.getMaxResults()); | ||
| 140 | - | ||
| 141 | - proxy.setFirstResult(1); | ||
| 142 | - Assert.assertEquals(1, proxy.getFirstResult()); | ||
| 143 | - | ||
| 144 | - List<?> result = proxy.getResultList(); | ||
| 145 | - Assert.assertEquals(2, result.size()); | 124 | + public void testPagination() { |
| 125 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 126 | + expect(queryDelegate.getMaxResults()).andReturn(4).times(2); | ||
| 127 | + expect(queryDelegate.getFirstResult()).andReturn(2).times(2); | ||
| 128 | + expect(queryDelegate.setMaxResults(EasyMock.anyInt())).andReturn(queryDelegate); | ||
| 129 | + expect(queryDelegate.setFirstResult(EasyMock.anyInt())).andReturn(queryDelegate); | ||
| 130 | + replay(queryDelegate); | ||
| 131 | + | ||
| 132 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 133 | + typedQueryProxy.setMaxResults(4); | ||
| 134 | + typedQueryProxy.setFirstResult(2); | ||
| 135 | + assertEquals(typedQueryProxy.getMaxResults(), queryDelegate.getMaxResults()); | ||
| 136 | + assertEquals(typedQueryProxy.getFirstResult(), queryDelegate.getFirstResult()); | ||
| 137 | + | ||
| 138 | + verifyAll(); | ||
| 146 | } | 139 | } |
| 147 | - | 140 | + |
| 141 | + @SuppressWarnings("unchecked") | ||
| 148 | @Test | 142 | @Test |
| 149 | - public void testHint(){ | ||
| 150 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(14); | ||
| 151 | - PowerMock.replay(Beans.class); | ||
| 152 | - | ||
| 153 | - //Consulta um cliente definindo a hint readOnly, que torna a entidade retornada não atualizável. | ||
| 154 | - manager.getTransaction().begin(); | ||
| 155 | - TypedQueryProxy<Client> proxy = getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1"); | ||
| 156 | - proxy.setHint("org.hibernate.readOnly", true); | ||
| 157 | - Assert.assertFalse( proxy.getHints().isEmpty() ); | ||
| 158 | - | ||
| 159 | - //Tenta atualizar a entidade e limpar o cache de primeiro nível | ||
| 160 | - Client c = (Client)proxy.getSingleResult(); | ||
| 161 | - c.setName("Cliente 1 Alterado"); | ||
| 162 | - manager.flush(); | ||
| 163 | - manager.getTransaction().commit(); | ||
| 164 | - manager.clear(); | ||
| 165 | - | ||
| 166 | - //Reconsultar a entidade tem que retornar 1 resultado, pois o nome "Cliente 1" não deve ter sido alterado. | ||
| 167 | - manager.getTransaction().begin(); | ||
| 168 | - proxy = getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1"); | ||
| 169 | - c = (Client)proxy.getSingleResult(); | ||
| 170 | - Assert.assertNotNull(c); | ||
| 171 | - | ||
| 172 | - //Mudar a entidade agora tem que funcionar, pois não foi informado o hint | ||
| 173 | - c.setName("Cliente 1 Alterado"); | ||
| 174 | - manager.flush(); | ||
| 175 | - manager.getTransaction().commit(); | ||
| 176 | - manager.clear(); | ||
| 177 | - | ||
| 178 | - proxy = getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1"); | ||
| 179 | - | ||
| 180 | - try{ | ||
| 181 | - proxy.getSingleResult(); | ||
| 182 | - Assert.fail(); | ||
| 183 | - } | ||
| 184 | - catch(NoResultException ne){ | ||
| 185 | - } | ||
| 186 | - | ||
| 187 | - PowerMock.verifyAll(); | 143 | + public void testHint() { |
| 144 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 145 | + Map<String, Object> map = new HashMap<String, Object>(); | ||
| 146 | + Client client = new Client(); | ||
| 147 | + map.put("1", client); | ||
| 148 | + expect(queryDelegate.getHints()).andReturn(map).times(2); | ||
| 149 | + expect(queryDelegate.setHint(EasyMock.anyObject(String.class), EasyMock.anyObject())).andReturn(queryDelegate); | ||
| 150 | + replay(queryDelegate); | ||
| 151 | + | ||
| 152 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 153 | + typedQueryProxy.setHint("1", client); | ||
| 154 | + assertEquals(typedQueryProxy.getHints(), queryDelegate.getHints()); | ||
| 155 | + | ||
| 156 | + verifyAll(); | ||
| 188 | } | 157 | } |
| 189 | - | 158 | + |
| 159 | + @SuppressWarnings({ "unchecked", "unused" }) | ||
| 190 | @Test | 160 | @Test |
| 191 | - public void testParameters(){ | ||
| 192 | - | ||
| 193 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(2); | ||
| 194 | - PowerMock.replay(Beans.class); | ||
| 195 | - | ||
| 196 | - TypedQueryProxy<Client> proxy = getQueryProxy("select c from Client c where 'Named Parameter'=:name and c.birthDate=:dateName and c.name=?1 and c.birthDate=?2",Client.class); | ||
| 197 | - | 161 | + public void testParameters() { |
| 162 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 198 | Date dateValue = new Date(); | 163 | Date dateValue = new Date(); |
| 199 | - | ||
| 200 | - proxy.setParameter("name", "Named Parameter"); | ||
| 201 | - proxy.setParameter("dateName", dateValue, TemporalType.DATE); | ||
| 202 | - | ||
| 203 | - proxy.setParameter(1, "Cliente 1"); | ||
| 204 | - proxy.setParameter(2, dateValue,TemporalType.DATE); | ||
| 205 | - | ||
| 206 | - Assert.assertEquals(proxy.getParameterValue("name"),"Named Parameter"); | ||
| 207 | - Assert.assertEquals(proxy.getParameterValue(1), "Cliente 1"); | ||
| 208 | - | ||
| 209 | - List<Client> result = proxy.getResultList(); | ||
| 210 | - | ||
| 211 | - Assert.assertNotNull(result); | ||
| 212 | - Assert.assertFalse(result.isEmpty()); | ||
| 213 | - | ||
| 214 | - PowerMock.verifyAll(); | 164 | + Calendar calendar = PowerMock.createMock(Calendar.class); |
| 165 | + Class<Date> type = Date.class; | ||
| 166 | + Parameter parameter = PowerMock.createMock(Parameter.class); | ||
| 167 | + | ||
| 168 | + expect(queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(String.class))) | ||
| 169 | + .andReturn(queryDelegate); | ||
| 170 | + expect(queryDelegate.getParameterValue(EasyMock.anyObject(String.class))).andReturn("Named Parameter") | ||
| 171 | + .anyTimes(); | ||
| 172 | + expect(queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(String.class))) | ||
| 173 | + .andReturn(queryDelegate); | ||
| 174 | + expect(queryDelegate.getParameterValue(EasyMock.anyInt())).andReturn("Client").anyTimes(); | ||
| 175 | + expect( | ||
| 176 | + queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(Date.class), | ||
| 177 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 178 | + expect( | ||
| 179 | + queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(Date.class), | ||
| 180 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 181 | + expect(queryDelegate.setParameter(EasyMock.anyObject(Parameter.class), EasyMock.anyObject())).andReturn( | ||
| 182 | + queryDelegate); | ||
| 183 | + expect(queryDelegate.getParameterValue(EasyMock.anyObject(Parameter.class))).andReturn(parameter).anyTimes(); | ||
| 184 | + expect( | ||
| 185 | + queryDelegate.setParameter(EasyMock.anyObject(String.class), EasyMock.anyObject(Calendar.class), | ||
| 186 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 187 | + expect( | ||
| 188 | + queryDelegate.setParameter(EasyMock.anyInt(), EasyMock.anyObject(Calendar.class), | ||
| 189 | + EasyMock.anyObject(TemporalType.class))).andReturn(queryDelegate); | ||
| 190 | + | ||
| 191 | + replay(queryDelegate, parameter, calendar); | ||
| 192 | + | ||
| 193 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 194 | + typedQueryProxy.setParameter("name", "Named Parameter"); | ||
| 195 | + assertEquals(typedQueryProxy.getParameterValue("name"), queryDelegate.getParameterValue("name")); | ||
| 196 | + typedQueryProxy.setParameter(1, "Client"); | ||
| 197 | + assertEquals(typedQueryProxy.getParameterValue("1"), queryDelegate.getParameterValue("1")); | ||
| 198 | + typedQueryProxy.setParameter("dateName", dateValue, TemporalType.DATE); | ||
| 199 | + typedQueryProxy.setParameter(2, dateValue, TemporalType.DATE); | ||
| 200 | + typedQueryProxy.setParameter(parameter, "X"); | ||
| 201 | + typedQueryProxy.getParameterValue(parameter); | ||
| 202 | + assertEquals(typedQueryProxy.getParameterValue(parameter), parameter); | ||
| 203 | + typedQueryProxy.setParameter("dateName", calendar, TemporalType.DATE); | ||
| 204 | + typedQueryProxy.setParameter(2, calendar, TemporalType.DATE); | ||
| 205 | + | ||
| 206 | + verifyAll(); | ||
| 207 | + } | ||
| 208 | + | ||
| 209 | + @SuppressWarnings("unchecked") | ||
| 210 | + @Test | ||
| 211 | + public void testIsBound() { | ||
| 212 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 213 | + Parameter parameter = PowerMock.createMock(Parameter.class); | ||
| 214 | + expect(queryDelegate.isBound(EasyMock.anyObject(Parameter.class))).andReturn(true); | ||
| 215 | + | ||
| 216 | + replay(queryDelegate, parameter); | ||
| 217 | + | ||
| 218 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 219 | + assertTrue(typedQueryProxy.isBound(parameter)); | ||
| 220 | + | ||
| 221 | + verifyAll(); | ||
| 215 | } | 222 | } |
| 216 | - | 223 | + |
| 224 | + @SuppressWarnings("unchecked") | ||
| 217 | @Test | 225 | @Test |
| 218 | - public void testFlushMode(){ | ||
| 219 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(3); | ||
| 220 | - PowerMock.replay(Beans.class); | ||
| 221 | - | ||
| 222 | - manager.getTransaction().begin(); | ||
| 223 | - TypedQueryProxy<Client> proxy = getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1"); | ||
| 224 | - proxy.setFlushMode(FlushModeType.COMMIT); | ||
| 225 | - Assert.assertEquals(proxy.getFlushMode(), FlushModeType.COMMIT); | ||
| 226 | - manager.getTransaction().commit(); | ||
| 227 | - | ||
| 228 | - PowerMock.verifyAll(); | 226 | + public void testFlushMode() { |
| 227 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 228 | + FlushModeType flushModeType = FlushModeType.AUTO; | ||
| 229 | + | ||
| 230 | + expect(queryDelegate.setFlushMode(FlushModeType.AUTO)).andReturn(queryDelegate); | ||
| 231 | + expect(queryDelegate.getFlushMode()).andReturn(flushModeType).anyTimes(); | ||
| 232 | + | ||
| 233 | + replay(queryDelegate); | ||
| 234 | + | ||
| 235 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 236 | + typedQueryProxy.setFlushMode(FlushModeType.AUTO); | ||
| 237 | + assertEquals(typedQueryProxy.getFlushMode(), queryDelegate.getFlushMode()); | ||
| 238 | + verifyAll(); | ||
| 229 | } | 239 | } |
| 230 | - | 240 | + |
| 241 | + @SuppressWarnings("unchecked") | ||
| 231 | @Test | 242 | @Test |
| 232 | - public void testLockMode(){ | ||
| 233 | - EasyMock.expect(Beans.getReference(EntityManagerProducer.class)).andReturn(producer).times(3); | ||
| 234 | - PowerMock.replay(Beans.class); | ||
| 235 | - | ||
| 236 | - manager.getTransaction().begin(); | ||
| 237 | - TypedQueryProxy<Client> proxy = getQueryProxy("select c from Client c where c.name=?1",Client.class,"Cliente 1"); | ||
| 238 | - proxy.setLockMode(LockModeType.OPTIMISTIC); | ||
| 239 | - Assert.assertEquals(proxy.getLockMode(), LockModeType.OPTIMISTIC); | ||
| 240 | - manager.getTransaction().commit(); | ||
| 241 | - | ||
| 242 | - PowerMock.verifyAll(); | 243 | + public void testLockMode() { |
| 244 | + TypedQuery queryDelegate = PowerMock.createMock(TypedQuery.class); | ||
| 245 | + LockModeType lockModeType = LockModeType.OPTIMISTIC; | ||
| 246 | + | ||
| 247 | + expect(queryDelegate.setLockMode(lockModeType)).andReturn(queryDelegate); | ||
| 248 | + expect(queryDelegate.getLockMode()).andReturn(lockModeType).anyTimes(); | ||
| 249 | + | ||
| 250 | + replay(queryDelegate); | ||
| 251 | + | ||
| 252 | + typedQueryProxy = new TypedQueryProxy(queryDelegate, (EntityManagerProxy) manager); | ||
| 253 | + typedQueryProxy.setLockMode(lockModeType); | ||
| 254 | + assertEquals(typedQueryProxy.getLockMode(), queryDelegate.getLockMode()); | ||
| 255 | + verifyAll(); | ||
| 243 | } | 256 | } |
| 257 | + | ||
| 244 | } | 258 | } |