/*
* Copyright 2013 uaiHebert Solucoes em Informatica
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* */
package com.uaihebert.test.easy_legacy.cto;
import com.uaihebert.model.EasyCriteria;
import com.uaihebert.model.test.Manufacturer;
import com.uaihebert.model.test.Person;
import com.uaihebert.test.easy_legacy.AbstractTest;
import com.uaihebert.test.easy_legacy.CommonTests;
import com.uaihebert.uaicriteria.base.element.EasyCriteriaFactory;
import org.junit.Test;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
public class CommonCTOTestsDateImp extends AbstractTest implements CommonTests {
@Test
public void isAddingOneOrEquals() {
final Date firstJobDate = getFormattedDate("1/1/2015");
final Date secondJobDate = getFormattedDate("1/1/2016");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.orEquals("firstJobDate", firstJobDate, secondJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.orEquals("firstJobDate", firstJobDate, secondJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isAddingSequentialWhereEquals() {
final Date firstJobDate = getFormattedDate("1/1/2015");
final Date firstSoccerMatchDate = getFormattedDate("1/1/2013");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andEquals("firstJobDate", firstJobDate).andEquals("firstSoccerMatchDate", firstSoccerMatchDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andEquals("firstJobDate", firstJobDate).andEquals("firstSoccerMatchDate", firstSoccerMatchDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isAddingOneWhereEquals() {
final Date firstJobDate = getFormattedDate("1/1/2015");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andEquals("firstJobDate", firstJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andEquals("firstJobDate", firstJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isBetweenWorking() {
final Date valueA = getFormattedDate("1/1/2014");
final Date valueB = getFormattedDate("1/1/2017");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andBetween("firstJobDate", valueA, valueB);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andBetween("firstJobDate", valueA, valueB);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isGreaterThanWorking() {
final Date firstJobDate = getFormattedDate("01/01/2015");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andGreaterThan("firstJobDate", firstJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andGreaterThan("firstJobDate", firstJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isGreaterOrEqualToWorking() {
final Date firstJobDate = getFormattedDate("01/01/2015");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andGreaterOrEqualTo("firstJobDate", firstJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andGreaterOrEqualTo("firstJobDate", firstJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isLessThanWorking() {
final Date firstJobDate = getFormattedDate("01/01/2015");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andLessThan("firstJobDate", firstJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andLessThan("firstJobDate", firstJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isLessOrEqualToWorking() {
final Date firstJobDate = getFormattedDate("01/01/2015");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.andLessOrEqualTo("firstJobDate", firstJobDate);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
easyCriteria.andLessOrEqualTo("firstJobDate", firstJobDate);
assertTrue(easyViewCTO.getResultList().size() == easyCriteria.getResultList().size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteria.getResultList()));
}
@Test
public void isJoinBetweenWorking() {
final Date valueA = getFormattedDate("1/1/2008");
final Date valueB = getFormattedDate("1/1/2010");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("valueA", valueA);
parameters.put("valueB", valueB);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
// Workaround for OpenJPA
easyCTO.setDistinctTrue();
easyCTO.innerJoin("dogs");
easyCTO.andJoinBetween("dogs", "dateOfBirth", valueA, valueB);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
// Workaround for OpenJPA
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("dogs");
easyCriteria.andJoinBetween("dogs", "dateOfBirth", valueA, valueB);
final List<Person> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isJoinGreaterThanWorking() {
final Date dateOfBirth = getFormattedDate("19/10/2005");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("dateOfBirth", dateOfBirth);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("dogs");
easyCTO.andJoinGreaterThan("dogs", "dateOfBirth", dateOfBirth);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
// Workaround for OpenJPA
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("dogs");
easyCriteria.andJoinGreaterThan("dogs", "dateOfBirth", dateOfBirth);
final List<Person> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isMultipleJoinWithBetweenWorking() {
final Date valueA = getFormattedDate("1/1/1999");
final Date valueB = getFormattedDate("1/1/2003");
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andBetween("products.nickNames.justDate", valueA, valueB);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andBetween("products.nickNames.justDate", valueA, valueB);
final List<Manufacturer> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isJoinGreaterOrEqualToWorking() {
final Date dateOfBirth = getFormattedDate("19/10/2005");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("dateOfBirth", dateOfBirth);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("dogs");
easyCTO.andJoinGreaterOrEqualTo("dogs", "dateOfBirth", dateOfBirth);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
// Workaround for OpenJPA
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("dogs");
easyCriteria.andJoinGreaterOrEqualTo("dogs", "dateOfBirth", dateOfBirth);
final List<Person> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isJoinLessThanWorking() {
final Date dateOfBirth = getFormattedDate("19/10/2005");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("dateOfBirth", dateOfBirth);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("dogs");
easyCTO.andJoinLessThan("dogs", "dateOfBirth", dateOfBirth);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
// Workaround for OpenJPA
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("dogs");
easyCriteria.andJoinLessThan("dogs", "dateOfBirth", dateOfBirth);
final List<Person> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isJoinLessOrEqualToWorking() {
final Date dateOfBirth = getFormattedDate("01/01/2009");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("dateOfBirth", dateOfBirth);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("dogs");
easyCTO.andJoinLessOrEqualTo("dogs", "dateOfBirth", dateOfBirth);
final EasyCriteria<Person> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class, easyCTO);
final EasyCriteria<Person> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Person.class);
// Workaround for OpenJPA
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("dogs");
easyCriteria.andJoinLessOrEqualTo("dogs", "dateOfBirth", dateOfBirth);
final List<Person> easyCriteriaResult = easyCriteria.getResultList();
assertEquals(easyViewCTO.getResultList().size(), easyCriteriaResult.size());
assertTrue(easyViewCTO.getResultList().containsAll(easyCriteriaResult));
}
@Test
public void isMultipleJoinWithBetweenToWorking() {
final Date justDate = getFormattedDate("1/1/2001");
final Date justDate2 = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDateA", justDate);
parameters.put("justDateB", justDate2);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andBetween("products.nickNames.justDate", justDate, justDate2);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andBetween("products.nickNames.justDate", justDate, justDate2);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
@Test
public void isMultipleJoinWithGreaterThanWorking() {
final Date justDate = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDate", justDate);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andGreaterThan("products.nickNames.justDate", justDate);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andGreaterThan("products.nickNames.justDate", justDate);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
@Test
public void isMultipleJoinWithGreaterOrEqualToWorking() {
final Date justDate = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDate", justDate);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andGreaterOrEqualTo("products.nickNames.justDate", justDate);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andGreaterOrEqualTo("products.nickNames.justDate", justDate);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
@Test
public void isMultipleJoinWithLessThanWorking() {
final Date justDate = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDate", justDate);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andLessThan("products.nickNames.justDate", justDate);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andLessThan("products.nickNames.justDate", justDate);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
@Test
public void isMultipleJoinWithLessOrEqualToWorking() {
final Date justDate = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDate", justDate);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.andLessOrEqualTo("products.nickNames.justDate", justDate);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.andLessOrEqualTo("products.nickNames.justDate", justDate);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
@Test
public void isMultipleJoinWithOrWorking() {
final Date justDate = getFormattedDate("1/1/2001");
final Date justDate2 = getFormattedDate("2/2/2002");
final Map<String, Object> parameters = new HashMap<String, Object>();
parameters.put("justDateA", justDate);
parameters.put("justDateB", justDate2);
final EasyCriteria easyCTO = EasyCriteriaFactory.createEasyCTO();
easyCTO.setDistinctTrue();
easyCTO.innerJoin("products.nickNames");
easyCTO.orEquals("products.nickNames.justDate", justDate, justDate2);
final EasyCriteria<Manufacturer> easyViewCTO = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class, easyCTO);
final List<Manufacturer> easyViewCTOList = easyViewCTO.getResultList();
final EasyCriteria<Manufacturer> easyCriteria = EasyCriteriaFactory.createQueryCriteria(getEntityManager(), Manufacturer.class);
easyCriteria.setDistinctTrue();
easyCriteria.innerJoin("products.nickNames");
easyCriteria.orEquals("products.nickNames.justDate", justDate, justDate2);
final List<Manufacturer> result = easyCriteria.getResultList();
assertEquals(easyViewCTOList.size(), result.size());
assertTrue(easyViewCTOList.containsAll(result));
}
}