package org.croudtrip.trips;
import com.google.common.collect.Lists;
import org.croudtrip.api.trips.TripOffer;
import org.croudtrip.api.trips.TripOfferStatus;
import org.croudtrip.db.TripOfferDAO;
import org.croudtrip.logs.LogManager;
import org.hibernate.SessionFactory;
import org.junit.Assert;
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 DisableTripOffersExecutorTest {
@Mocked TripOfferDAO tripOfferDAO;
@Mocked RunningTripQueriesManager runningTripQueriesManager;
@Mocked SessionFactory sessionFactory;
@Mocked LogManager logManager;
private DisableTripOffersExecutor executor;
@Before
public void setupExecutor() {
this.executor = new DisableTripOffersExecutor(tripOfferDAO, runningTripQueriesManager, sessionFactory, logManager);
}
@Test
public void testDisableOffer() throws Exception {
final TripOffer offer1 = new TripOffer.Builder()
.setStatus(TripOfferStatus.FINISHED)
.build();
final TripOffer offer2 = new TripOffer.Builder()
.setStatus(TripOfferStatus.ACTIVE)
.setLastPositonUpdateInSeconds(0)
.build();
new Expectations() {{
tripOfferDAO.findAll();
result = Lists.newArrayList(offer1, offer2);
}};
executor.doRun();
new Verifications() {{
TripOffer updatedOffer;
tripOfferDAO.update(updatedOffer = withCapture());
Assert.assertEquals(TripOfferStatus.DISABLED, updatedOffer.getStatus());
}};
}
@Test
public void testEnableOffer() throws Exception {
final TripOffer offer1 = new TripOffer.Builder()
.setStatus(TripOfferStatus.FINISHED)
.build();
final TripOffer offer2 = new TripOffer.Builder()
.setStatus(TripOfferStatus.DISABLED)
.setLastPositonUpdateInSeconds(System.currentTimeMillis() / 1000)
.build();
new Expectations() {{
tripOfferDAO.findAll();
result = Lists.newArrayList(offer1, offer2);
}};
executor.doRun();
new Verifications() {{
TripOffer updatedOffer;
tripOfferDAO.update(updatedOffer = withCapture());
Assert.assertEquals(TripOfferStatus.ACTIVE, updatedOffer.getStatus());
runningTripQueriesManager.checkAndUpdateRunningQueries(updatedOffer);
}};
}
}