Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.d4rk.androidtutorials.java.ui.screens.main;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

Expand Down Expand Up @@ -37,6 +38,7 @@ public class MainViewModelTest {
private ShouldShowStartupScreenUseCase shouldShowStartupScreenUseCase;
private MarkStartupScreenShownUseCase markStartupScreenShownUseCase;
private GetAppUpdateManagerUseCase getAppUpdateManagerUseCase;
private MainViewModel viewModel;

private final String[] themeValues = {"MODE_NIGHT_FOLLOW_SYSTEM", "MODE_NIGHT_NO", "MODE_NIGHT_YES"};
private final String[] bottomNavBarLabelsValues = {"labeled", "selected", "unlabeled"};
Expand All @@ -51,15 +53,8 @@ public void setUp() {
shouldShowStartupScreenUseCase = Mockito.mock(ShouldShowStartupScreenUseCase.class);
markStartupScreenShownUseCase = Mockito.mock(MarkStartupScreenShownUseCase.class);
getAppUpdateManagerUseCase = Mockito.mock(GetAppUpdateManagerUseCase.class);
}

@Test
public void applySettingsUpdatesUiStateForLabeledHome() {
Mockito.when(applyThemeSettingsUseCase.invoke(themeValues)).thenReturn(true);
Mockito.when(getBottomNavLabelVisibilityUseCase.invoke()).thenReturn("labeled");
Mockito.when(getDefaultTabPreferenceUseCase.invoke()).thenReturn("home");

MainViewModel viewModel = new MainViewModel(
viewModel = new MainViewModel(
applyThemeSettingsUseCase,
getBottomNavLabelVisibilityUseCase,
getDefaultTabPreferenceUseCase,
Expand All @@ -68,6 +63,13 @@ public void applySettingsUpdatesUiStateForLabeledHome() {
markStartupScreenShownUseCase,
getAppUpdateManagerUseCase
);
}

@Test
public void applySettingsUpdatesUiStateForLabeledHome() {
Mockito.when(applyThemeSettingsUseCase.invoke(themeValues)).thenReturn(true);
Mockito.when(getBottomNavLabelVisibilityUseCase.invoke()).thenReturn("labeled");
Mockito.when(getDefaultTabPreferenceUseCase.invoke()).thenReturn("home");

List<Boolean> loading = new ArrayList<>();
viewModel.getLoadingState().observeForever(loading::add);
Expand All @@ -89,16 +91,6 @@ public void applySettingsUpdatesUiStateForSelectedAndroidStudio() {
Mockito.when(getBottomNavLabelVisibilityUseCase.invoke()).thenReturn("selected");
Mockito.when(getDefaultTabPreferenceUseCase.invoke()).thenReturn("android_studio");

MainViewModel viewModel = new MainViewModel(
applyThemeSettingsUseCase,
getBottomNavLabelVisibilityUseCase,
getDefaultTabPreferenceUseCase,
applyLanguageSettingsUseCase,
shouldShowStartupScreenUseCase,
markStartupScreenShownUseCase,
getAppUpdateManagerUseCase
);

List<Boolean> loading = new ArrayList<>();
viewModel.getLoadingState().observeForever(loading::add);

Expand All @@ -110,7 +102,7 @@ public void applySettingsUpdatesUiStateForSelectedAndroidStudio() {
assertNotNull(state);
assertEquals(NavigationBarView.LABEL_VISIBILITY_SELECTED, state.bottomNavVisibility());
assertEquals(R.id.navigation_android_studio, state.defaultNavDestination());
assertTrue(!state.themeChanged());
assertFalse(state.themeChanged());
}

@Test
Expand All @@ -119,16 +111,6 @@ public void applySettingsUpdatesUiStateForUnlabeledAbout() {
Mockito.when(getBottomNavLabelVisibilityUseCase.invoke()).thenReturn("unlabeled");
Mockito.when(getDefaultTabPreferenceUseCase.invoke()).thenReturn("about");

MainViewModel viewModel = new MainViewModel(
applyThemeSettingsUseCase,
getBottomNavLabelVisibilityUseCase,
getDefaultTabPreferenceUseCase,
applyLanguageSettingsUseCase,
shouldShowStartupScreenUseCase,
markStartupScreenShownUseCase,
getAppUpdateManagerUseCase
);

List<Boolean> loading = new ArrayList<>();
viewModel.getLoadingState().observeForever(loading::add);

Expand All @@ -143,6 +125,21 @@ public void applySettingsUpdatesUiStateForUnlabeledAbout() {
assertTrue(state.themeChanged());
}

@Test
public void shouldShowStartupScreenDelegatesToUseCase() {
Mockito.when(shouldShowStartupScreenUseCase.invoke()).thenReturn(false);

assertFalse(viewModel.shouldShowStartupScreen());
Mockito.verify(shouldShowStartupScreenUseCase).invoke();
}

@Test
public void markStartupScreenShownDelegatesToUseCase() {
viewModel.markStartupScreenShown();

Mockito.verify(markStartupScreenShownUseCase).invoke();
}

private int callVisibilityMode(String value) throws Exception {
Method method = MainViewModel.class.getDeclaredMethod(
"getVisibilityMode", String.class, String[].class);
Expand Down