package co.smartreceipts.android.persistence.database.controllers.impl; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.MockitoAnnotations; import org.robolectric.RobolectricTestRunner; import java.util.Collections; import co.smartreceipts.android.model.Trip; import co.smartreceipts.android.persistence.database.controllers.TableController; import co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata; import co.smartreceipts.android.persistence.database.operations.OperationFamilyType; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyZeroInteractions; @RunWith(RobolectricTestRunner.class) public class RefreshTripPricesListenerTest { // Class under test RefreshTripPricesListener<Object> mRefreshTripPricesListener; @Mock TableController<Trip> mTripTableController; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mRefreshTripPricesListener = new RefreshTripPricesListener<>(mTripTableController); } @Test public void onGetSuccess() { mRefreshTripPricesListener.onGetSuccess(Collections.emptyList()); verifyZeroInteractions(mTripTableController); } @Test public void onGetFailure() { mRefreshTripPricesListener.onGetFailure(null); verifyZeroInteractions(mTripTableController); } @Test public void onInsertSuccess() { mRefreshTripPricesListener.onInsertSuccess(new Object(), new DatabaseOperationMetadata()); verify(mTripTableController).get(); } @Test public void onSyncInsertSuccess() { mRefreshTripPricesListener.onInsertSuccess(new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } @Test public void onInsertFailure() { mRefreshTripPricesListener.onInsertFailure(new Object(), null, new DatabaseOperationMetadata()); mRefreshTripPricesListener.onInsertFailure(new Object(), null, new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } @Test public void onUpdateSuccess() { mRefreshTripPricesListener.onUpdateSuccess(new Object(), new Object(), new DatabaseOperationMetadata()); verify(mTripTableController).get(); } @Test public void onSyncUpdateSuccess() { mRefreshTripPricesListener.onUpdateSuccess(new Object(), new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } @Test public void onUpdateFailure() { mRefreshTripPricesListener.onUpdateFailure(new Object(), null, new DatabaseOperationMetadata()); mRefreshTripPricesListener.onUpdateFailure(new Object(), null, new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } @Test public void onDeleteSuccess() { mRefreshTripPricesListener.onDeleteSuccess(new Object(), new DatabaseOperationMetadata()); verify(mTripTableController).get(); } @Test public void onSyncDeleteSuccess() { mRefreshTripPricesListener.onDeleteSuccess(new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } @Test public void onDeleteFailure() { mRefreshTripPricesListener.onDeleteFailure(new Object(), null, new DatabaseOperationMetadata()); mRefreshTripPricesListener.onDeleteFailure(new Object(), null, new DatabaseOperationMetadata(OperationFamilyType.Sync)); verifyZeroInteractions(mTripTableController); } }