Package in.partake.daemon.impl

Source Code of in.partake.daemon.impl.EventReminderTaskTest

package in.partake.daemon.impl;

import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import in.partake.app.PartakeTestApp;
import in.partake.base.DateTime;
import in.partake.base.PartakeException;
import in.partake.base.TimeUtil;
import in.partake.controller.AbstractPartakeControllerTest;
import in.partake.model.IPartakeDAOs;
import in.partake.model.access.Transaction;
import in.partake.model.dao.DAOException;
import in.partake.model.dao.PartakeConnection;
import in.partake.model.dto.UserTicket;
import in.partake.model.dto.Event;
import in.partake.model.dto.EventTicketNotification;
import in.partake.model.dto.EventTicket;
import in.partake.model.dto.UserNotification;
import in.partake.model.dto.auxiliary.AttendanceStatus;
import in.partake.model.dto.auxiliary.MessageDelivery;
import in.partake.model.dto.auxiliary.ModificationStatus;
import in.partake.model.dto.auxiliary.NotificationType;
import in.partake.model.dto.auxiliary.ParticipationStatus;
import in.partake.model.fixture.TestDataProviderConstants;
import java.util.List;
import java.util.UUID;

import org.junit.Before;
import org.junit.Test;

public class EventReminderTaskTest extends AbstractPartakeControllerTest implements TestDataProviderConstants {

    @Before
    public void setUp() throws Exception {
        super.setUp();
        PartakeTestApp.getTestService().setDefaultFixtures();
    }

    @Test
    public void sendReminderWhenEmpty() throws Exception {
        truncate();
        new EventReminderTask().run();
    }

    @Test
    public void sendReminder() throws Exception {
        truncate();

        DateTime now = TimeUtil.getCurrentDateTime();
        Event event = PartakeTestApp.getTestService().getTestDataProviderSet().getEventProvider().create();
        event.setOwnerId(DEFAULT_USER_ID);
        event.setBeginDate(now.nHourAfter(12));
        storeEvent(event);

        UUID ticketId = UUID.randomUUID();
        EventTicket ticket = EventTicket.createDefaultTicket(ticketId, event.getId());
        storeEventTicket(ticket);

        String id = UUID.randomUUID().toString();
        UserTicket enrollment = new UserTicket(id, DEFAULT_USER_ID, ticketId, event.getId(), "comment", ParticipationStatus.ENROLLED,
                ModificationStatus.ENROLLED, AttendanceStatus.PRESENT, null, now, now, now);
        storeEnrollment(enrollment);

        // This event should be reminded.
        new EventReminderTask().run();

        // Check EventNotification and UserNotification.
        List<UserNotification> userNotifications = loadUserNotificationsByUserId(DEFAULT_USER_ID);
        assertThat(userNotifications.size(), is(1));
        UserNotification userNotification = userNotifications.get(0);
        assertThat(userNotification.getTicketId(), is(ticket.getId()));
        assertThat(userNotification.getDelivery(), is(MessageDelivery.INQUEUE));
        assertThat(userNotification.getNotificationType(), is(NotificationType.EVENT_ONEDAY_BEFORE_REMINDER));

        List<EventTicketNotification> eventNotifications = loadEventTicketNotificationsByEventId(ticketId);
        assertThat(eventNotifications.size(), is(3));

        // Re-run.
        new EventReminderTask().run();

        userNotifications = loadUserNotificationsByUserId(DEFAULT_USER_ID);
        assertThat(userNotifications.size(), is(1));
        eventNotifications = loadEventTicketNotificationsByEventId(ticketId);
        assertThat(eventNotifications.size(), is(3));
    }

    private void truncate() throws Exception {
        new Transaction<Void>() {
            @Override
            protected Void doExecute(PartakeConnection con, IPartakeDAOs daos) throws DAOException, PartakeException {
                daos.getEventAccess().truncate(con);
                daos.getEnrollmentAccess().truncate(con);
                daos.getEventNotificationAccess().truncate(con);
                daos.getUserNotificationAccess().truncate(con);
                return null;
            }
        }.execute();
    }
}
TOP

Related Classes of in.partake.daemon.impl.EventReminderTaskTest

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.