package org.raidenjpa.query.where; import static org.junit.Assert.assertEquals; import java.util.Arrays; import org.junit.Test; import org.raidenjpa.AbstractTestCase; import org.raidenjpa.util.FixMe; import org.raidenjpa.util.QueryHelper; public class WhereTest extends AbstractTestCase { @Test public void testOneValue() { createABC(); QueryHelper query; query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :a"); query.parameter("a", "a1"); assertEquals(1, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :a"); query.parameter("a", "wrongValue"); assertEquals(0, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.intValue >= :intValue"); query.parameter("intValue", 1); assertEquals(1, query.getResultList().size()); query = new QueryHelper("SELECT a FROM A a WHERE a.intValue > :intValue"); query.parameter("intValue", 1); assertEquals(0, query.getResultList().size()); query = new QueryHelper("FROM A a WHERE a.intValue >= :um AND a.intValue <= :um"); query.parameter("um", 1); assertEquals(1, query.getResultList().size()); } @Test public void testIsNull() { createABC(); QueryHelper query; query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue is null"); assertEquals(0, query.getResultList().size()); } @Test public void testAnd() { createABC(); QueryHelper query = new QueryHelper("SELECT a FROM A a WHERE a.stringValue = :stringValue AND a.intValue = :intValue"); query.parameter("stringValue", "a1"); query.parameter("intValue", 1); assertEquals(1, query.getResultList().size()); } @Test public void testTwoFromComparingAttributes() { createABC(); createB("b2"); QueryHelper query = new QueryHelper("SELECT a, b FROM A a, B b WHERE a.stringValue = :valueA AND b.value = :valueB"); query.parameter("valueA", "a1"); query.parameter("valueB", "b2"); assertEquals(1, query.getResultList().size()); } @FixMe("Compare the entities. Make this test work with merge") @Test public void testTwoFromComparingObjects() { createABC(); createB("b2"); QueryHelper query = new QueryHelper("SELECT a, b FROM A a, B b WHERE a.b.id = b.id"); assertEquals(1, query.getResultList().size()); } @Test public void testInOperator() { createABC(); createA("a2", 2); createA("a3", 3); createA("a4", 4); QueryHelper query = new QueryHelper("SELECT a FROM A a WHERE a.intValue IN (:values)"); query.parameter("values", Arrays.asList(1, 3, 5)); assertEquals(2, query.getResultList().size()); } @FixMe("Check why in Hibernate the last jpql doesnt work") @Test public void testEntityComparation() { createABC(); createA("a2"); QueryHelper query = new QueryHelper("SELECT a1 FROM A a1, A a2 WHERE a1 = a2"); assertEquals(2, query.getResultList().size()); query = new QueryHelper("SELECT a1 FROM A a1, B b1 WHERE a1.b = b1"); assertEquals(1, query.getResultList().size()); // query = new QueryHelper("SELECT a1 FROM A a1, B b1 WHERE a1 = b1"); // assertEquals(0, query.getResultList().size()); } @Test public void testWhereLiteral() { createABC(); String jpql; QueryHelper query; jpql = "SELECT a FROM A a"; jpql += " WHERE a.intValue = 1"; query = new QueryHelper(jpql); assertEquals(1, query.getResultList().size()); jpql = "SELECT a FROM A a"; jpql += " WHERE a.intValue = 0"; query = new QueryHelper(jpql); assertEquals(0, query.getResultList().size()); } @FixMe("Implement") @Test public void testEntityComparationByParameter() { } @FixMe("% in the begin") @Test public void testLike() { createA("a1"); createA("a1"); createA("a2"); String jpql; QueryHelper query; jpql = "SELECT a FROM A a"; jpql += " WHERE a.stringValue LIKE :a"; query = new QueryHelper(jpql); query.parameter("a", "a1"); assertEquals(2, query.getResultList().size()); jpql = "SELECT a FROM A a"; jpql += " WHERE a.stringValue LIKE :a"; query = new QueryHelper(jpql); query.parameter("a", "a"); assertEquals(0, query.getResultList().size()); jpql = "SELECT a FROM A a"; jpql += " WHERE a.stringValue LIKE :a"; query = new QueryHelper(jpql); query.parameter("a", "a%"); assertEquals(3, query.getResultList().size()); } }