Package com.philip.journal.core.dao

Source Code of com.philip.journal.core.dao.UserDAOImplTest

/**
* @Created Sep 10, 2010 1:08:31 PM
* @author r39
*/
package com.philip.journal.core.dao;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;

import java.util.Date;

import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;

import com.philip.journal.common.DateUtils;
import com.philip.journal.core.JournalTestCommon;
import com.philip.journal.core.bean.User;
import com.philip.journal.core.exception.JournalException;

/**
* Test class for UserDAO.
*
* @see com.philip.journal.common.DateUtils. This is required by this test class.
*/
public class UserDAOImplTest extends BaseJournalTestDAO {

    /** IOC wired User DAO. */
    @Autowired
    private transient UserDAO userDAO;

    /** Test time out and persist maximum allowed time in milliseconds. */
    static final int TIMEOUT = 1000;

    /** Test artifact. Non existent username. */
    private static final String TEST_X_USERNAME = "%!@#%%%!@#";

    /**
     * Case 1: Username found.
     *
     * Test method for {@link com.philip.journal.core.dao.UserDAOImpl#readByUsername(java.lang.String)}.
     */
    @Test
    public void testReadByUsernameCase1()
    {
        final User user = userDAO.readByUsername(JournalTestCommon.TEST_USERNAME);
        assertNotNull("Case 1: Username found.", user);
    }

    /** Case 2: Username not found. */
    @Test
    public void testReadByUsernameCase2()
    {
        final User notUser = userDAO.readByUsername(TEST_X_USERNAME);
        assertNull("Case 2: Username not found.", notUser);
    }

    /** Case 3: Null username. */
    @Test
    public void testReadByUsernameCase3()
    {
        final User notUser = userDAO.readByUsername(null);
        assertNull("Case 3: Null username.", notUser);
    }

    /**
     * Case 1(N): Null user.
     *
     * Test method for {@link com.philip.journal.core.dao.UserDAOImpl#save(com.philip.journal.core.bean.User)} .
     */
    @Test(timeout = TIMEOUT, expected = JournalException.class)
    public void testSaveUserCase1()
    {
        userDAO.save(null);
    }

    /**
     * Case 2: Normal flow. Existing User. Existing instance must be updated.
     * <ol>
     * <li>Case 2.1: Correct date set.
     * <li>Case 2.2: Correct time set.
     * </ol>
     */
    @Test(timeout = TIMEOUT)
    public void testSaveUserCase2()
    {

        final User user = userDAO.readByUsername(JournalTestCommon.TEST_USERNAME);
        final String genId = getCommon().generateUniqueId();
        user.setChecksum(genId);
        user.setPassword(genId);
        user.setUpdater(user);

        userDAO.save(user);

        final Date now = new Date();
        final long dateDelta = DateUtils.getInstance().getDayDifference(now, user.getUpdateDate());
        final long timeDelta = DateUtils.getInstance().getTimeDifference(now, user.getUpdateDate());

        assertEquals("Case 2.1: Correct date set." + dateDelta, 0, dateDelta);
        assertTrue("Case 2.2: Correct time set.", timeDelta < TIMEOUT);
    }

    /**
     * Case 3: Normal flow. Existing User. Stored instance must be updated.
     * <ol>
     * <li>Case 3.1: Password updated.
     * <li>Case 3.2: Checksum updated.
     * <li>Case 3.3: Updater field was set.
     * <li>Case 3.4: Correct date set.
     * <li>Case 3.5: Correct time set.
     * </ol>
     */
    @Test(timeout = TIMEOUT)
    public void testSaveUserCase3()
    {
        final User user = userDAO.readByUsername(JournalTestCommon.TEST_USERNAME);
        final String genId = getCommon().generateUniqueId();
        user.setChecksum(genId);
        user.setPassword(genId);
        user.setUpdater(user);
        userDAO.save(user);

        final Date now = new Date();
        final long dateDelta = DateUtils.getInstance().getDayDifference(now, user.getUpdateDate());
        final long timeDelta = DateUtils.getInstance().getTimeDifference(now, user.getUpdateDate());
        final User newUser = userDAO.readByUsername(JournalTestCommon.TEST_USERNAME);
        assertEquals("Case 3.1: Password updated.", genId, newUser.getPassword());
        assertEquals("Case 3.2: Checksum updated.", genId, newUser.getChecksum());
        assertNotNull("Case 3.3: Updater field was set.", newUser.getUpdater());
        assertEquals("Case 3.4: Correct date set." + dateDelta, 0, dateDelta);
        assertTrue("Case 3.5: Correct time set.", timeDelta < TIMEOUT);
    }


    public void setUserDAO(final UserDAO pUserDAO) {
        this.userDAO = pUserDAO;
    }

    @Override
    protected Object getTargetDAOImpl() {
        return userDAO;
    }
}
TOP

Related Classes of com.philip.journal.core.dao.UserDAOImplTest

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.