package com.fsck.k9.activity; import android.content.Context; import com.fsck.k9.Account; import com.fsck.k9.K9; import com.fsck.k9.K9RobolectricTestRunner; import com.fsck.k9.mail.Message; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.robolectric.RuntimeEnvironment; import static junit.framework.Assert.assertEquals; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; @RunWith(K9RobolectricTestRunner.class) public class ActivityListenerTest { private static final String FOLDER = "folder"; private static final String ERROR_MESSAGE = "errorMessage"; private static final int COUNT = 23; private Context context; private Account account; private Message message; private ActivityListener activityListener; @Before public void before() { context = RuntimeEnvironment.application; account = createAccount(); message = mock(Message.class); activityListener = new ActivityListener(); } @Test public void getOperation__whenFolderStatusChanged() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.folderStatusChanged(account, FOLDER, COUNT); String operation = activityListener.getOperation(context); assertEquals("Poll account:folder", operation); } @Test public void getOperation__whenSynchronizeMailboxStarted() { activityListener.synchronizeMailboxStarted(account, FOLDER); String operation = activityListener.getOperation(context); assertEquals("Poll account:folder", operation); } @Test public void getOperation__whenSynchronizeMailboxProgress_shouldResultInValidStatus() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.synchronizeMailboxProgress(account, FOLDER, 1, 2); String operation = activityListener.getOperation(context); assertEquals("Poll account:folder 1/2", operation); } @Test public void getOperation__whenSynchronizeMailboxFailed_shouldResultInValidStatus() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.synchronizeMailboxFailed(account, FOLDER, ERROR_MESSAGE); String operation = activityListener.getOperation(context); if (K9.isDebug()) { assertEquals("Polling and pushing disabled", operation); } else { assertEquals("Syncing disabled", operation); } } @Test public void getOperation__whenSynchronizeMailboxFailedAfterHeadersStarted_shouldResultInValidStatus() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.synchronizeMailboxHeadersStarted(account, FOLDER); activityListener.synchronizeMailboxFailed(account, FOLDER, ERROR_MESSAGE); String operation = activityListener.getOperation(context); if (K9.isDebug()) { assertEquals("Polling and pushing disabled", operation); } else { assertEquals("Syncing disabled", operation); } } @Test public void getOperation__whenSynchronizeMailboxFinished() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.synchronizeMailboxFinished(account, FOLDER, COUNT, COUNT); String operation = activityListener.getOperation(context); if (K9.isDebug()) { assertEquals("Polling and pushing disabled", operation); } else { assertEquals("Syncing disabled", operation); } } @Test public void getOperation__whenSynchronizeMailboxHeadersStarted_shouldResultInValidStatus() { activityListener.synchronizeMailboxHeadersStarted(account, FOLDER); String operation = activityListener.getOperation(context); assertEquals("Fetching headers account:folder", operation); } @Test public void getOperation__whenSynchronizeMailboxHeadersProgress() { activityListener.synchronizeMailboxHeadersStarted(account, FOLDER); activityListener.synchronizeMailboxHeadersProgress(account, FOLDER, 2, 3); String operation = activityListener.getOperation(context); assertEquals("Fetching headers account:folder 2/3", operation); } @Test public void getOperation__whenSynchronizeMailboxHeadersFinished() { activityListener.synchronizeMailboxHeadersStarted(account, FOLDER); activityListener.synchronizeMailboxHeadersFinished(account, FOLDER, COUNT, COUNT); String operation = activityListener.getOperation(context); assertEquals("", operation); } @Test public void getOperation__whenSynchronizeMailboxNewMessage() { activityListener.synchronizeMailboxStarted(account, FOLDER); activityListener.synchronizeMailboxNewMessage(account, FOLDER, message); String operation = activityListener.getOperation(context); assertEquals("Poll account:folder", operation); } private Account createAccount() { Account account = mock(Account.class); when(account.getDescription()).thenReturn("account"); return account; } }