package org.glucosio.android; import android.support.annotation.NonNull; import org.glucosio.android.db.DatabaseHandler; import org.glucosio.android.db.User; import org.glucosio.android.tools.Preferences; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.ArgumentCaptor; import org.mockito.Captor; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.Mockito.never; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @RunWith(MockitoJUnitRunner.class) public class GlucosioApplicationTest { @InjectMocks private GlucosioApplicationForTest application; @Mock private Preferences preferencesMock; @Mock private DatabaseHandler databaseHandlerMock; @Mock private User userMock; @Captor private ArgumentCaptor<User> userCaptor; @Test public void ShouldClearLanguage_WhenSetFromHelloActivityAndNotFixedYet() throws Exception { when(databaseHandlerMock.getUser(1)).thenReturn(userMock); application.onCreate(); verify(databaseHandlerMock).updateUser(userCaptor.capture()); assertThat(userCaptor.getValue().getPreferred_language()).isNull(); } @Test public void ShouldSaveLanguageClearedToPreferences_WhenItIsDone() throws Exception { when(databaseHandlerMock.getUser(1)).thenReturn(userMock); application.onCreate(); verify(preferencesMock).saveLocaleCleaned(); } @Test public void ShouldNotClearLanguage_WhenAlreadyDone() throws Exception { when(preferencesMock.isLocaleCleaned()).thenReturn(true); application.onCreate(); verify(userMock, never()).setPreferred_language(null); verify(databaseHandlerMock, never()).updateUser(userMock); } static class GlucosioApplicationForTest extends GlucosioApplication { private final DatabaseHandler dbHandler; private final Preferences preferences; private GlucosioApplicationForTest(DatabaseHandler dbHandler, Preferences preferences) { this.dbHandler = dbHandler; this.preferences = preferences; } @NonNull @Override public DatabaseHandler getDBHandler() { return dbHandler; } @NonNull @Override public Preferences getPreferences() { return preferences; } @Override protected void initFont() { //don't do anything for now } } }