package co.smartreceipts.android.sync.drive.listeners; 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 co.smartreceipts.android.persistence.database.operations.DatabaseOperationMetadata; import co.smartreceipts.android.persistence.database.operations.OperationFamilyType; import co.smartreceipts.android.sync.drive.managers.DriveDatabaseManager; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; @RunWith(RobolectricTestRunner.class) public class DatabaseBackupListenerTest { // Class under test DatabaseBackupListener<Object> mListener; @Mock DriveDatabaseManager mDriveDatabaseManager; @Before public void setUp() throws Exception { MockitoAnnotations.initMocks(this); mListener = new DatabaseBackupListener<>(mDriveDatabaseManager); } @Test public void onInsertSuccess() { mListener.onInsertSuccess(new Object(), new DatabaseOperationMetadata()); verify(mDriveDatabaseManager).syncDatabase(); } @Test public void onSyncInsertSuccess() { mListener.onInsertSuccess(new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verify(mDriveDatabaseManager, never()).syncDatabase(); } @Test public void onUpdateSuccess() { mListener.onUpdateSuccess(new Object(), new Object(), new DatabaseOperationMetadata()); verify(mDriveDatabaseManager).syncDatabase(); } @Test public void onSyncUpdateSuccess() { mListener.onUpdateSuccess(new Object(), new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verify(mDriveDatabaseManager, never()).syncDatabase(); } @Test public void onDeleteSuccess() { mListener.onDeleteSuccess(new Object(), new DatabaseOperationMetadata()); verify(mDriveDatabaseManager).syncDatabase(); } @Test public void onSyncDeleteSuccess() { mListener.onDeleteSuccess(new Object(), new DatabaseOperationMetadata(OperationFamilyType.Sync)); verify(mDriveDatabaseManager, never()).syncDatabase(); } }