Package in.partake.controller

Source Code of in.partake.controller.AbstractPartakeControllerTest

package in.partake.controller;

import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;
import static org.junit.Assert.assertThat;
import in.partake.AbstractPartakeTestWithApplication;
import in.partake.app.PartakeTestApp;
import in.partake.base.PartakeException;
import in.partake.base.PartakeParamNamesConstants;
import in.partake.base.TimeUtil;
import in.partake.model.EventEx;
import in.partake.model.IPartakeDAOs;
import in.partake.model.UserEx;
import in.partake.model.access.DBAccess;
import in.partake.model.access.Transaction;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.daofacade.EventDAOFacade;
import in.partake.model.daofacade.UserDAOFacade;
import in.partake.model.daoutil.DAOUtil;
import in.partake.model.dto.Event;
import in.partake.model.dto.EventTicket;
import in.partake.model.dto.EventTicketNotification;
import in.partake.model.dto.MessageEnvelope;
import in.partake.model.dto.TwitterMessage;
import in.partake.model.dto.UserCalendarLink;
import in.partake.model.dto.UserImage;
import in.partake.model.dto.UserNotification;
import in.partake.model.dto.UserOpenIDLink;
import in.partake.model.dto.UserPreference;
import in.partake.model.dto.UserReceivedMessage;
import in.partake.model.dto.UserThumbnail;
import in.partake.model.dto.UserTicket;
import in.partake.model.fixture.TestDataProviderConstants;
import in.partake.resource.Constants;
import in.partake.resource.ServerErrorCode;

import java.util.List;
import java.util.UUID;

import org.apache.commons.lang.StringUtils;
import org.hamcrest.Matchers;
import org.junit.Before;

import play.test.Helpers;

public abstract class AbstractPartakeControllerTest
    extends AbstractPartakeTestWithApplication
    implements TestDataProviderConstants, PartakeActionURLConstants, PartakeParamNamesConstants {

    enum HttpMethod {
        GET,
        POST
    }

    protected final HttpMethod GET = HttpMethod.GET;
    protected final HttpMethod POST = HttpMethod.POST;

    // Make setUp called before each test.
    @Before
    public void setUp() throws Exception {
        PartakeTestApp.getTestService().setDefaultFixtures();
        TimeUtil.resetCurrentDate();
    }

    protected ActionProxy getActionProxy(HttpMethod method, String url) {
        switch (method) {
        case GET:
            return ActionProxy.get(url);
        case POST:
            return ActionProxy.post(url);
        }

        throw new RuntimeException("method should not be null");
    }

    /** log in した状態にする */
    protected void loginAs(ActionProxy proxy, String userId) throws DAOException, PartakeException {
        proxy.addSession(Constants.Session.USER_ID_KEY, userId);
    }

    /** logout する */
    protected void logout(ActionProxy proxy) throws DAOException {
        proxy.addSession(Constants.Session.USER_ID_KEY, null);
    }

    protected void addFormParameter(ActionProxy proxy, String key, String value) {
        proxy.addFormParameter(key, value);
    }

    protected void addFormParameter(ActionProxy proxy, String key, String[] values) {
        for (String value : values)
            addFormParameter(proxy, key, value);
    }

    @Deprecated
    protected void addParameter(ActionProxy proxy, String key, Object obj) {
        if (obj instanceof String)
            addFormParameter(proxy, key, (String) obj);
        else if (obj instanceof String[])
            addFormParameter(proxy, key, (String[]) obj);
        else
            throw new RuntimeException("ASSERT_NOT_REACHED");
    }

    protected void addValidSessionTokenToParameter(ActionProxy proxy) {
        String validToken = proxy.session(Constants.Session.TOKEN_KEY);
        if (StringUtils.isEmpty(validToken)) {
            validToken = UUID.randomUUID().toString();
            proxy.addSession(Constants.Session.TOKEN_KEY, validToken);
        }

        addFormParameter(proxy, Constants.Session.TOKEN_KEY, validToken);
    }

    protected void addInvalidSessionTokenToParameter(ActionProxy proxy) {
        String validToken = proxy.session(Constants.Session.TOKEN_KEY);
        if (StringUtils.isEmpty(validToken)) {
            validToken = UUID.randomUUID().toString();
            proxy.addSession(Constants.Session.TOKEN_KEY, validToken);
        }

        String invalidToken = validToken + "-invalid";
        addFormParameter(proxy, Constants.Session.TOKEN_KEY, invalidToken);
    }

    // ----------------------------------------------------------------------

    protected void assertLoggedOut(ActionProxy proxy) {
        assertThat(Helpers.session(proxy.getResult()).get(Constants.Session.USER_ID_KEY), nullValue());
    }

    protected void assertResultLoginRequired(ActionProxy proxy) throws Exception {
        assertThat(Helpers.redirectLocation(proxy.getResult()), Matchers.startsWith("/loginRequired"));
    }

    protected void assertResultRedirect(ActionProxy proxy, String url) throws Exception {
        assertThat(Helpers.status(proxy.getResult()), is(303));

        if (url != null)
            assertThat(Helpers.redirectLocation(proxy.getResult()), is(url));
    }

    protected void assertResultForbidden(ActionProxy proxy) throws Exception {
        assertThat(Helpers.redirectLocation(proxy.getResult()), Matchers.startsWith("/forbidden"));
    }

    protected void assertResultNotFound(ActionProxy proxy) throws Exception {
        assertThat(Helpers.redirectLocation(proxy.getResult()), Matchers.startsWith("/notfound"));
    }

    protected void assertResultError(ActionProxy proxy) throws Exception {
        assertThat(Helpers.redirectLocation(proxy.getResult()), Matchers.startsWith("/error"));
    }

    protected void assertResultError(ActionProxy proxy, ServerErrorCode errorCode) throws Exception {
        assertResultError(proxy);
        assertThat(Helpers.redirectLocation(proxy.getResult()), is("/error?errorCode=" + errorCode.getErrorCode()));
    }

    // ----------------------------------------------------------------------
    // DB Accessors

    protected List<MessageEnvelope> loadMessageEnvelopes() throws DAOException, PartakeException {
        return new DBAccess<List<MessageEnvelope>>() {
            @Override
            protected List<MessageEnvelope> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return DAOUtil.convertToList(daos.getMessageEnvelopeAccess().getIterator(con));
            }
        }.execute();
    }

    protected UserEx loadUserEx(final String userId) throws DAOException, PartakeException {
        return new DBAccess<UserEx>() {
            @Override
            protected UserEx doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return UserDAOFacade.getUserEx(con, daos, userId);
            }
        }.execute();
    }

    protected UserPreference loadUserPreference(final String userId) throws DAOException, PartakeException {
        return new DBAccess<UserPreference>() {
            @Override
            protected UserPreference doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getUserPreferenceAccess().find(con, userId);
            }
        }.execute();
    }

    protected Event loadEvent(final String eventId) throws DAOException, PartakeException {
        return new DBAccess<Event>() {
            @Override
            protected Event doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getEventAccess().find(con, eventId);
            }
        }.execute();
    }

    protected EventEx loadEventEx(final String eventId) throws DAOException, PartakeException {
        return new DBAccess<EventEx>() {
            @Override
            protected EventEx doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return EventDAOFacade.getEventEx(con, daos, eventId);
            }
        }.execute();
    }

    protected String storeEvent(final Event event) throws DAOException, PartakeException {
        return new Transaction<String>() {
            protected String doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException ,PartakeException {
                if (event.getId() == null) {
                    String eventId = daos.getEventAccess().getFreshId(con);
                    event.setId(eventId);
                }
                daos.getEventAccess().put(con, event);
                return event.getId();
            };
        }.execute();
    }

    protected List<EventTicket> loadEventTickets(final String eventId) throws DAOException, PartakeException {
        return new Transaction<List<EventTicket>>() {
            protected List<EventTicket> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException ,PartakeException {
                return daos.getEventTicketAccess().findEventTicketsByEventId(con, eventId);
            };
        }.execute();
    }

    protected EventTicket loadEventTicket(final UUID eventTicketId) throws DAOException, PartakeException {
        return new Transaction<EventTicket>() {
            protected EventTicket doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getEventTicketAccess().find(con, eventTicketId);
            };
        }.execute();
    }

    protected void storeEventTicket(final EventTicket ticket) throws DAOException, PartakeException {
        new Transaction<Void>() {
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException ,PartakeException {
                daos.getEventTicketAccess().put(con, ticket);
                return null;
            };
        }.execute();
    }

    protected List<UserOpenIDLink> loadOpenIDIdentifiers(final String userId) throws DAOException, PartakeException {
        return new DBAccess<List<UserOpenIDLink>>() {
            @Override
            protected List<UserOpenIDLink> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getOpenIDLinkageAccess().findByUserId(con, userId);
            }
        }.execute();
    }

    protected MessageEnvelope loadEnvelope(final String id) throws DAOException, PartakeException {
        return new DBAccess<MessageEnvelope>() {
            @Override
            protected MessageEnvelope doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getMessageEnvelopeAccess().find(con, id);
            }
        }.execute();
    }


    protected List<MessageEnvelope> loadEnvelopes() throws DAOException, PartakeException {
        return new DBAccess<List<MessageEnvelope>>() {
            @Override
            protected List<MessageEnvelope> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return DAOUtil.convertToList(daos.getMessageEnvelopeAccess().getIterator(con));
            }
        }.execute();
    }

    protected String loadCalendarIdFromUser(final String userId) throws DAOException, PartakeException {
        return new DBAccess<String>() {
            @Override
            protected String doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                UserCalendarLink linkage = daos.getCalendarAccess().findByUserId(con, userId);
                if (linkage == null)
                    return null;
                return linkage.getId();
            }
        }.execute();
    }

    protected UserTicket loadEnrollment(final String enrollmentId) throws DAOException, PartakeException {
        return new DBAccess<UserTicket>() {
            @Override
            protected UserTicket doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getEnrollmentAccess().find(con, enrollmentId);
            }
        }.execute();
    }

    protected UserTicket loadEnrollment(final String userId, final UUID ticketId) throws DAOException, PartakeException {
        return new DBAccess<UserTicket>() {
            @Override
            protected UserTicket doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getEnrollmentAccess().findByTicketIdAndUserId(con, ticketId, userId);
            }
        }.execute();
    }

    protected void removeUserTicketsByEventId(final String eventId) throws DAOException, PartakeException {
        new Transaction<Void>() {
            @Override
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                List<UserTicket> tickets = daos.getEnrollmentAccess().findByEventId(con, eventId, 0, Integer.MAX_VALUE);
                for (UserTicket ticket : tickets) {
                    System.out.println(ticket);
                    daos.getEnrollmentAccess().removeByEventTicketIdAndUserId(con, ticket.getTicketId(), ticket.getUserId());
                }

                return null;
            }
        }.execute();
    }

    protected List<EventTicketNotification> loadEventTicketNotificationsByEventId(final UUID ticketId) throws Exception {
        return new DBAccess<List<EventTicketNotification>>() {
            @Override
            protected List<EventTicketNotification> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getEventNotificationAccess().findByTicketId(con, ticketId, 0, Integer.MAX_VALUE);
            }
        }.execute();
    }

    protected String storeEnrollment(final UserTicket enrollment) throws DAOException, PartakeException {
        return new Transaction<String>() {
            @Override
            protected String doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                if (enrollment.getId() == null) {
                    String enrollmentId = daos.getEnrollmentAccess().getFreshId(con);
                    enrollment.setId(enrollmentId);
                }
                daos.getEnrollmentAccess().put(con, enrollment);
                return enrollment.getId();
            }
        }.execute();
    }

    protected UserImage loadImage(final String imageId) throws DAOException, PartakeException {
        return new DBAccess<UserImage>() {
            @Override
            protected UserImage doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getImageAccess().find(con, imageId);
            }
        }.execute();
    }

    protected UserThumbnail loadThumbnail(final String imageId) throws DAOException, PartakeException {
        return new DBAccess<UserThumbnail>() {
            @Override
            protected UserThumbnail doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getThumbnailAccess().find(con, imageId);
            }
        }.execute();
    }

    protected TwitterMessage loadTwitterMessage(final String twitterMessageId) throws DAOException, PartakeException {
        return new DBAccess<TwitterMessage>() {
            @Override
            protected TwitterMessage doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getTwitterMessageAccess().find(con, twitterMessageId);
            }
        }.execute();
    }

    protected UserNotification loadUserNotification(final String userNotificationId) throws DAOException, PartakeException {
        return new DBAccess<UserNotification>() {
            @Override
            protected UserNotification doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getUserNotificationAccess().find(con, userNotificationId);
            }
        }.execute();
    }

    protected List<UserNotification> loadUserNotificationsByUserId(final String userId) throws Exception {
        return new DBAccess<List<UserNotification>>() {
            @Override
            protected List<UserNotification> doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getUserNotificationAccess().findByUserId(con, userId, 0, Integer.MAX_VALUE);
            }
        }.execute();
    }

    protected UserReceivedMessage loadUserReceivedMessage(final UUID userReceivedMessageId) throws DAOException, PartakeException {
        return new DBAccess<UserReceivedMessage>() {
            @Override
            protected UserReceivedMessage doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                return daos.getUserReceivedMessageAccess().find(con, userReceivedMessageId);
            }
        }.execute();
    }

}
TOP

Related Classes of in.partake.controller.AbstractPartakeControllerTest

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.