Package org.dayatang.domain.repository

Source Code of org.dayatang.domain.repository.CriteriaQueryTest

/*
* Copyright 2014 Dayatang Open Source..
*
* 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 org.dayatang.domain.repository;

import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import java.util.Arrays;
import java.util.List;

import org.dayatang.domain.CriteriaQuery;
import org.dayatang.domain.EntityRepository;
import org.dayatang.domain.NamedParameters;
import org.dayatang.domain.OrderSettings;
import org.dayatang.domain.QueryCriterion;
import org.dayatang.domain.entity.MyEntity;
import org.dayatang.domain.internal.AndCriterion;
import org.dayatang.domain.internal.BetweenCriterion;
import org.dayatang.domain.internal.ContainsTextCriterion;
import org.dayatang.domain.internal.EqCriterion;
import org.dayatang.domain.internal.EqPropCriterion;
import org.dayatang.domain.internal.GeCriterion;
import org.dayatang.domain.internal.GePropCriterion;
import org.dayatang.domain.internal.GtCriterion;
import org.dayatang.domain.internal.GtPropCriterion;
import org.dayatang.domain.internal.InCriterion;
import org.dayatang.domain.internal.IsEmptyCriterion;
import org.dayatang.domain.internal.IsNullCriterion;
import org.dayatang.domain.internal.LeCriterion;
import org.dayatang.domain.internal.LePropCriterion;
import org.dayatang.domain.internal.LtCriterion;
import org.dayatang.domain.internal.LtPropCriterion;
import org.dayatang.domain.internal.NotCriterion;
import org.dayatang.domain.internal.NotEmptyCriterion;
import org.dayatang.domain.internal.NotEqCriterion;
import org.dayatang.domain.internal.NotEqPropCriterion;
import org.dayatang.domain.internal.NotInCriterion;
import org.dayatang.domain.internal.NotNullCriterion;
import org.dayatang.domain.internal.OrCriterion;
import org.dayatang.domain.internal.SizeEqCriterion;
import org.dayatang.domain.internal.SizeGeCriterion;
import org.dayatang.domain.internal.SizeGtCriterion;
import org.dayatang.domain.internal.SizeLeCriterion;
import org.dayatang.domain.internal.SizeLtCriterion;
import org.dayatang.domain.internal.SizeNotEqCriterion;
import org.dayatang.domain.internal.StartsWithTextCriterion;
import org.junit.Before;
import org.junit.Test;

/**
*
* @author yyang
*/
public class CriteriaQueryTest {
    private CriteriaQuery instance;
    private EntityRepository repository;
    private Class<MyEntity> entityClass = MyEntity.class;
   
    @Before
    public void setUp() {
        repository = mock(EntityRepository.class);
        instance = new CriteriaQuery(repository, entityClass);
    }

    /**
     * Test of getEntityClass method, of class CriteriaQuery.
     */
    @Test
    public void testGetEntityClass() {
        assertEquals(entityClass, instance.getEntityClass());
    }

    /**
     * Test of getFirstResult method, of class JpqlQuery.
     */
    @Test
    public void testFirstResult() {
        assertEquals(3, instance.setFirstResult(3).getFirstResult());
    }

    /**
     * Test of getMaxResults method, of class JpqlQuery.
     */
    @Test
    public void testMaxResults() {
        assertEquals(10, instance.setMaxResults(10).getMaxResults());
    }

    /**
     * Test of getOrderSettings method, of class CriteriaQuery.
     */
    @Test
    public void testOrderSettings() {
        OrderSettings orderSettings = new OrderSettings();
        orderSettings.asc("id");
        orderSettings.desc("name");
        instance.asc("id").desc("name");
        assertEquals(orderSettings, instance.getOrderSettings());
    }

    /**
     * Test of eq method, of class CriteriaQuery.
     */
    @Test
    public void testEq() {
      assertEquals(new EqCriterion("name", "abc"), instance.eq("name", "abc").getQueryCriterion());
    }

    /**
     * Test of notEq method, of class CriteriaQuery.
     */
    @Test
    public void testNotEq() {
      assertEquals(new NotEqCriterion("name", "abc"), instance.notEq("name", "abc").getQueryCriterion());
    }

    /**
     * Test of gt method, of class CriteriaQuery.
     */
    @Test
    public void testGt() {
      assertEquals(new GtCriterion("id", 5), instance.gt("id", 5).getQueryCriterion());
    }

    /**
     * Test of ge method, of class CriteriaQuery.
     */
    @Test
    public void testGe() {
      assertEquals(new GeCriterion("id", 5), instance.ge("id", 5).getQueryCriterion());
    }

    /**
     * Test of lt method, of class CriteriaQuery.
     */
    @Test
    public void testLt() {
      assertEquals(new LtCriterion("id", 5), instance.lt("id", 5).getQueryCriterion());
    }

    /**
     * Test of le method, of class CriteriaQuery.
     */
    @Test
    public void testLe() {
      assertEquals(new LeCriterion("id", 5), instance.le("id", 5).getQueryCriterion());
    }

    /**
     * Test of eqProp method, of class CriteriaQuery.
     */
    @Test
    public void testEqProp() {
      assertEquals(new EqPropCriterion("id", "name"), instance.eqProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of notEqProp method, of class CriteriaQuery.
     */
    @Test
    public void testNotEqProp() {
      assertEquals(new NotEqPropCriterion("id", "name"), instance.notEqProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of gtProp method, of class CriteriaQuery.
     */
    @Test
    public void testGtProp() {
      assertEquals(new GtPropCriterion("id", "name"), instance.gtProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of geProp method, of class CriteriaQuery.
     */
    @Test
    public void testGeProp() {
      assertEquals(new GePropCriterion("id", "name"), instance.geProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of ltProp method, of class CriteriaQuery.
     */
    @Test
    public void testLtProp() {
      assertEquals(new LtPropCriterion("id", "name"), instance.ltProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of leProp method, of class CriteriaQuery.
     */
    @Test
    public void testLeProp() {
      assertEquals(new LePropCriterion("id", "name"), instance.leProp("id", "name").getQueryCriterion());
    }

    /**
     * Test of sizeEq method, of class CriteriaQuery.
     */
    @Test
    public void testSizeEq() {
      assertEquals(new SizeEqCriterion("id", 3), instance.sizeEq("id", 3).getQueryCriterion());
    }

    /**
     * Test of sizeNotEq method, of class CriteriaQuery.
     */
    @Test
    public void testSizeNotEq() {
      assertEquals(new SizeNotEqCriterion("id", 3), instance.sizeNotEq("id", 3).getQueryCriterion());
    }

    /**
     * Test of sizeGt method, of class CriteriaQuery.
     */
    @Test
    public void testSizeGt() {
      assertEquals(new SizeGtCriterion("id", 3), instance.sizeGt("id", 3).getQueryCriterion());
    }

    /**
     * Test of sizeGe method, of class CriteriaQuery.
     */
    @Test
    public void testSizeGe() {
      assertEquals(new SizeGeCriterion("id", 3), instance.sizeGe("id", 3).getQueryCriterion());
    }

    /**
     * Test of sizeLt method, of class CriteriaQuery.
     */
    @Test
    public void testSizeLt() {
      assertEquals(new SizeLtCriterion("id", 3), instance.sizeLt("id", 3).getQueryCriterion());
    }

    /**
     * Test of sizeLe method, of class CriteriaQuery.
     */
    @Test
    public void testSizeLe() {
      assertEquals(new SizeLeCriterion("id", 3), instance.sizeLe("id", 3).getQueryCriterion());
    }

    /**
     * Test of containsText method, of class CriteriaQuery.
     */
    @Test
    public void testContainsText() {
      assertEquals(new ContainsTextCriterion("name", "a"), instance.containsText("name", "a").getQueryCriterion());
    }

    /**
     * Test of startsWithText method, of class CriteriaQuery.
     */
    @Test
    public void testStartsWithText() {
      assertEquals(new StartsWithTextCriterion("name", "a"), instance.startsWithText("name", "a").getQueryCriterion());
    }

    /**
     * Test of in method, of class CriteriaQuery.
     */
    @Test
    public void testInCollection() {
        List<?> criterions = Arrays.asList("a", "b");
      assertEquals(new InCriterion("name", criterions), instance.in("name", criterions).getQueryCriterion());
    }

    /**
     * Test of in method, of class CriteriaQuery.
     */
    @Test
    public void testInArray() {
        Object[] criterions = new Object[] {"a", "b"};
      assertEquals(new InCriterion("name", criterions), instance.in("name", criterions).getQueryCriterion());
    }

    /**
     * Test of notIn method, of class CriteriaQuery.
     */
    @Test
    public void testNotInCollection() {
        List<?> criterions = Arrays.asList("a", "b");
      assertEquals(new NotInCriterion("name", criterions), instance.notIn("name", criterions).getQueryCriterion());
    }

    /**
     * Test of notIn method, of class CriteriaQuery.
     */
    @Test
    public void testNotInArray() {
        Object[] criterions = new Object[] {"a", "b"};
      assertEquals(new NotInCriterion("name", criterions), instance.notIn("name", criterions).getQueryCriterion());
    }

    /**
     * Test of between method, of class CriteriaQuery.
     */
    @Test
    public void testBetween() {
      assertEquals(new BetweenCriterion("name", "a", "b"), instance.between("name", "a", "b").getQueryCriterion());
    }

    /**
     * Test of isNull method, of class CriteriaQuery.
     */
    @Test
    public void testIsNull() {
      assertEquals(new IsNullCriterion("name"), instance.isNull("name").getQueryCriterion());
    }

    /**
     * Test of notNull method, of class CriteriaQuery.
     */
    @Test
    public void testNotNull() {
      assertEquals(new NotNullCriterion("name"), instance.notNull("name").getQueryCriterion());
    }

    /**
     * Test of isEmpty method, of class CriteriaQuery.
     */
    @Test
    public void testIsEmpty() {
      assertEquals(new IsEmptyCriterion("name"), instance.isEmpty("name").getQueryCriterion());
    }

    /**
     * Test of notEmpty method, of class CriteriaQuery.
     */
    @Test
    public void testNotEmpty() {
      assertEquals(new NotEmptyCriterion("name"), instance.notEmpty("name").getQueryCriterion());
    }

    /**
     * Test of isTrue method, of class CriteriaQuery.
     */
    @Test
    public void testIsTrue() {
      assertEquals(new EqCriterion("name", true), instance.isTrue("name").getQueryCriterion());
    }

    /**
     * Test of isFalse method, of class CriteriaQuery.
     */
    @Test
    public void testIsFalse() {
      assertEquals(new EqCriterion("name", false), instance.isFalse("name").getQueryCriterion());
    }

    /**
     * Test of isBlank method, of class CriteriaQuery.
     */
    @Test
    public void testIsBlank() {
        QueryCriterion criterion1 = new IsNullCriterion("name");
        QueryCriterion criterion2 = new EqCriterion("name", "");
        QueryCriterion criterion3 = new OrCriterion(criterion1, criterion2);
       
        assertEquals(criterion3, instance.isBlank("name").getQueryCriterion());
    }

    /**
     * Test of notBlank method, of class CriteriaQuery.
     */
    @Test
    public void testNotBlank() {
        QueryCriterion criterion1 = new NotNullCriterion("name");
        QueryCriterion criterion2 = new NotEqCriterion("name", "");
        QueryCriterion criterion3 = new AndCriterion(criterion1, criterion2);
       
        assertEquals(criterion3, instance.notBlank("name").getQueryCriterion());
    }

    /**
     * Test of not method, of class CriteriaQuery.
     */
    @Test
    public void testNot() {
        QueryCriterion criterion1 = new EqCriterion("name", "abc");
        QueryCriterion criterion2 = new NotCriterion(criterion1);
       
        assertEquals(criterion2, instance.not(criterion1).getQueryCriterion());
    }

    /**
     * Test of and method, of class CriteriaQuery.
     */
    @Test
    public void testAnd() {
        QueryCriterion criterion1 = new EqCriterion("name", "abc");
        QueryCriterion criterion2 = new GtCriterion("id", 5);
        QueryCriterion criterion3 = new AndCriterion(criterion1, criterion2);
       
        assertEquals(criterion3, instance.and(criterion1, criterion2).getQueryCriterion());
    }

    /**
     * Test of or method, of class CriteriaQuery.
     */
    @Test
    public void testOr() {
        QueryCriterion criterion1 = new EqCriterion("name", "abc");
        QueryCriterion criterion2 = new GtCriterion("id", 5);
        QueryCriterion criterion3 = new OrCriterion(criterion1, criterion2);
       
        assertEquals(criterion3, instance.or(criterion1, criterion2).getQueryCriterion());
    }

    /**
     * Test of list method, of class CriteriaQuery.
     */
    @Test
    public void testList() {
        List<Object> results = Arrays.asList(new Object[] {"a", "b"});
        when(repository.find(instance)).thenReturn(results);
        assertEquals(results, instance.list());
    }

    /**
     * Test of singleResult method, of class CriteriaQuery.
     */
    @Test
    public void testSingleResult() {
        when(repository.getSingleResult(instance)).thenReturn("abc");
        assertEquals("abc", instance.singleResult());
    }
   
    @Test
    public void testGetQueryString() {
      EqCriterion criterion1 = new EqCriterion("name", "abc");
      InCriterion criterion2 = new InCriterion("age", Arrays.asList(1, 2));
        instance.eq("name", "abc")
                        .isEmpty("post")
                        .notNull("birthday")
                        .in("age", Arrays.asList(1, 2))
                        .getQueryString();       
        assertEquals("select distinct(rootEntity) from org.dayatang.domain.entity.MyEntity as rootEntity  "
                + "where rootEntity.name = :rootEntity_name" + criterion1.hashCode() + " "
                + "and rootEntity.post is empty "
                + "and rootEntity.birthday is not null "
                + "and rootEntity.age in :rootEntity_age" + criterion2.hashCode(),
                instance.getQueryString());
        assertEquals(NamedParameters.create()
                .add("rootEntity_name" + criterion1.hashCode(), "abc")
                .add("rootEntity_age" + criterion2.hashCode(), Arrays.asList(1, 2)),
                instance.getParameters());
    }
   
    @Test
    public void testGetQueryString2() {
      EqCriterion criterion1 = new EqCriterion("name", "abc");
      InCriterion criterion2 = new InCriterion("age", Arrays.asList(1, 2));
     
     
        assertEquals("select distinct(rootEntity) from org.dayatang.domain.entity.MyEntity as rootEntity  "
                + "where rootEntity.name = :rootEntity_name" + criterion1.hashCode() + " "
                + "and rootEntity.post is empty "
                + "and rootEntity.birthday is not null "
                + "and rootEntity.age in :rootEntity_age" + criterion2.hashCode() + " "
                + "order by rootEntity.name asc",
                instance.eq("name", "abc")
                        .isEmpty("post")
                        .notNull("birthday")
                        .in("age", Arrays.asList(1, 2))
                        .asc("name")
                        .getQueryString());
    }
}
TOP

Related Classes of org.dayatang.domain.repository.CriteriaQueryTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.