package org.croudtrip.trips;
import com.google.common.collect.Lists;
import junit.framework.TestCase;
import org.croudtrip.api.trips.JoinTripRequest;
import org.croudtrip.api.trips.JoinTripStatus;
import org.croudtrip.api.trips.SuperTrip;
import org.croudtrip.api.trips.TripQuery;
import org.croudtrip.gcm.GcmManager;
import org.croudtrip.logs.LogManager;
import org.hibernate.SessionFactory;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import mockit.Expectations;
import mockit.Mocked;
import mockit.Verifications;
import mockit.integration.junit4.JMockit;
@RunWith(JMockit.class)
public class ExpireJoinTripRequestsExecutorTest extends TestCase {
private static final long currentTimestamp = System.currentTimeMillis() / 1000;
private static final TripQuery query1 = new TripQuery.Builder()
.setCreationTimestamp(currentTimestamp)
.setMaxWaitingTimeInSeconds(100)
.build();
private static final TripQuery query2 = new TripQuery.Builder()
.setCreationTimestamp(currentTimestamp - 10)
.setMaxWaitingTimeInSeconds(1)
.build();
private static final JoinTripRequest
request1 = new JoinTripRequest.Builder()
.setStatus(JoinTripStatus.PASSENGER_ACCEPTED)
.setSuperTrip(new SuperTrip.Builder().setQuery(query1).build())
.build(),
request2 = new JoinTripRequest.Builder()
.setStatus(JoinTripStatus.PASSENGER_ACCEPTED)
.setSuperTrip(new SuperTrip.Builder().setQuery(query2).build())
.build(),
request3 = new JoinTripRequest.Builder()
.setStatus(JoinTripStatus.DRIVER_ACCEPTED)
.setSuperTrip(new SuperTrip.Builder().setQuery(query2).build())
.build();
@Mocked TripsManager tripsManager;
@Mocked GcmManager gcmManager;
@Mocked SessionFactory sessionFactory;
@Mocked LogManager logManager;
private ExpireJoinTripRequestsExecutor executor;
@Before
public void setupExecutor() {
executor = new ExpireJoinTripRequestsExecutor(tripsManager, gcmManager, sessionFactory, logManager);
}
@Test
public void testExpireJoinRequests() throws Exception {
new Expectations() {{
tripsManager.findAllJoinRequests();
result = Lists.newArrayList(request1, request2);
}};
executor.doRun();
new Verifications() {{
tripsManager.updateJoinRequestPassengerCancel(request1); times = 0;
tripsManager.updateJoinRequestPassengerCancel(request2); times = 1;
tripsManager.updateJoinRequestPassengerCancel(request3); times = 0;
gcmManager.sendJoinTripRequestExpiredToPassenger(request2);
}};
}
}