/* * 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)); } }