Package org.projectx.hibernate.dao

Source Code of org.projectx.hibernate.dao.EntityHibernateDaoSupportTest

package org.projectx.hibernate.dao;

import static org.easymock.EasyMock.createMock;
import static org.easymock.EasyMock.expect;
import static org.easymock.EasyMock.expectLastCall;
import static org.easymock.EasyMock.isA;
import static org.easymock.EasyMock.replay;
import static org.easymock.EasyMock.verify;
import static org.junit.Assert.assertEquals;

import java.io.Serializable;
import java.util.Collection;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.projectx.hibernate.dao.hibernate.CriteriaCallback;
import org.projectx.hibernate.dao.hibernate.NamedQueryCallback;
import org.springframework.orm.hibernate3.HibernateCallback;
import org.springframework.orm.hibernate3.HibernateTemplate;

/**
* Test for {@link AbstractEntityHibernateDaoSupport} class
*
* @author Erez Mazor (erezmazor@gmail.com)
*/
public class EntityHibernateDaoSupportTest {
  private static final Long ID = 7L;
  private static final TestEntity TEST_ENTITY = new TestEntity(ID);
  private static final List<TestEntity> TEST_ENTITIES = Collections.singletonList(TEST_ENTITY);
  private HibernateTemplate hibernateTemplate;
  private TestDao dao;

  @Before
  public void setup() {
    hibernateTemplate = createMock(HibernateTemplate.class);
    dao = new TestDao(hibernateTemplate);
  }

  @Test
  public void testFindAll() {
    expect(hibernateTemplate.loadAll(TestEntity.class)).andReturn(TEST_ENTITIES);
    replay(hibernateTemplate);
    final List<TestEntity> result = dao.findAll();
    verify(hibernateTemplate);
    assertEquals("incorrect collection sizes", TEST_ENTITIES.size(), result.size());
    assertEquals("incorrect entiies", TEST_ENTITIES.get(0), result.get(0));
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testFindEntity() {
    expect(hibernateTemplate.execute(isA(HibernateCallback.class))).andReturn(TEST_ENTITY);

    final CriteriaCallback callback = createMock(CriteriaCallback.class);
    replay(hibernateTemplate, callback);
    final TestEntity result = dao.findEntity(callback);
    verify(hibernateTemplate, callback);

    assertEquals("incorrect entiies", TEST_ENTITY, result);
  }

  @Test
  public void testFindByPrimaryKey() {
    expect(hibernateTemplate.get("TestEntity", ID)).andReturn(TEST_ENTITY);
    replay(hibernateTemplate);
    final TestEntity result = dao.findByPrimaryKey(ID);
    verify(hibernateTemplate);

    assertEquals("incorrect entiies", TEST_ENTITY, result);
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testFindByPrimaryKeys() {
    expect(hibernateTemplate.execute(isA(HibernateCallback.class))).andReturn(
        Collections.singletonList(TEST_ENTITY));
    replay(hibernateTemplate);
    final List<TestEntity> result = dao.findByPrimaryKeys(Collections.singletonList(ID));
    verify(hibernateTemplate);

    assertEquals("incorrect entiies", TEST_ENTITY, result.get(0));
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testFindByPrimaryKeysOrdered() {
    expect(hibernateTemplate.execute(isA(HibernateCallback.class))).andReturn(
        Collections.singletonList(TEST_ENTITY));
    replay(hibernateTemplate);
    final List<TestEntity> result = dao.findByPrimaryKeysOrdered(Collections.singletonList(ID));
    verify(hibernateTemplate);

    assertEquals("incorrect entiies", TEST_ENTITY, result.get(0));

    assertEquals(Collections.emptyList(),
        dao.findByPrimaryKeysOrdered(new LinkedList<Serializable>()));
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testExecuteUpdate() {
    expect(hibernateTemplate.execute(isA(HibernateCallback.class))).andReturn(1);
    replay(hibernateTemplate);
    final NamedQueryCallback<TestEntity> callback = createMock(NamedQueryCallback.class);
    final int result = dao.executeUpdate(callback);
    verify(hibernateTemplate);

    assertEquals("incorrect number of records updated", 1, result);
  }

  @Test
  public void testUpdate() {
    hibernateTemplate.saveOrUpdate(isA(String.class), isA(TestEntity.class));
    expectLastCall();
    replay(hibernateTemplate);
    final TestEntity result = dao.update(TEST_ENTITY);
    verify(hibernateTemplate);

    assertEquals("incorrect entity updated", result, TEST_ENTITY);
  }

  @Test
  public void testDelete() {
    hibernateTemplate.delete(isA(TestEntity.class));
    expectLastCall();
    replay(hibernateTemplate);
    dao.delete(TEST_ENTITY);
    verify(hibernateTemplate);
  }

  @Test
  public void testDeleteByPK() {
    expect(hibernateTemplate.load(isA(String.class), isA(Long.class))).andReturn(TEST_ENTITY);
    hibernateTemplate.delete(isA(TestEntity.class));
    expectLastCall();
    replay(hibernateTemplate);
    dao.deleteByPK(ID);
    verify(hibernateTemplate);
  }

  @Test
  public void testDeleteByPKs() {
    expect(hibernateTemplate.load(isA(String.class), isA(Long.class))).andReturn(TEST_ENTITY);
    hibernateTemplate.delete(isA(TestEntity.class));
    expectLastCall();
    replay(hibernateTemplate);
    final Collection<Serializable> ids = new LinkedList<Serializable>();
    ids.add(ID);
    dao.deleteByPKs(ids);
    verify(hibernateTemplate);
  }

  @Test
  public void testEvictEntity() {
    expect(hibernateTemplate.load(isA(String.class), isA(Long.class))).andReturn(TEST_ENTITY);
    hibernateTemplate.evict(isA(TestEntity.class));
    expectLastCall();
    replay(hibernateTemplate);
    dao.evictEntity(TEST_ENTITY);
    verify(hibernateTemplate);
  }

  @Test
  @SuppressWarnings("unchecked")
  public void testCount() {
    final CriteriaCallback callback = createMock(CriteriaCallback.class);

    expect(hibernateTemplate.execute(isA(HibernateCallback.class))).andReturn(1);
    expectLastCall();
    replay(hibernateTemplate);
    dao.count(callback);
    verify(hibernateTemplate);
  }

  private static final class TestDao extends AbstractEntityHibernateDaoSupport<TestEntity> {

    public TestDao(final HibernateTemplate hibernateTemplate) {
      super(hibernateTemplate);
    }

    @Override
    public Class<TestEntity> getEntityClass() {
      return TestEntity.class;
    }
  }
}
TOP

Related Classes of org.projectx.hibernate.dao.EntityHibernateDaoSupportTest

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.