1
1
package com .d4rk .androidtutorials .java .ui .screens .main ;
2
2
3
3
import static org .junit .Assert .assertEquals ;
4
+ import static org .junit .Assert .assertFalse ;
4
5
import static org .junit .Assert .assertNotNull ;
5
6
import static org .junit .Assert .assertTrue ;
6
7
@@ -37,6 +38,7 @@ public class MainViewModelTest {
37
38
private ShouldShowStartupScreenUseCase shouldShowStartupScreenUseCase ;
38
39
private MarkStartupScreenShownUseCase markStartupScreenShownUseCase ;
39
40
private GetAppUpdateManagerUseCase getAppUpdateManagerUseCase ;
41
+ private MainViewModel viewModel ;
40
42
41
43
private final String [] themeValues = {"MODE_NIGHT_FOLLOW_SYSTEM" , "MODE_NIGHT_NO" , "MODE_NIGHT_YES" };
42
44
private final String [] bottomNavBarLabelsValues = {"labeled" , "selected" , "unlabeled" };
@@ -51,15 +53,8 @@ public void setUp() {
51
53
shouldShowStartupScreenUseCase = Mockito .mock (ShouldShowStartupScreenUseCase .class );
52
54
markStartupScreenShownUseCase = Mockito .mock (MarkStartupScreenShownUseCase .class );
53
55
getAppUpdateManagerUseCase = Mockito .mock (GetAppUpdateManagerUseCase .class );
54
- }
55
-
56
- @ Test
57
- public void applySettingsUpdatesUiStateForLabeledHome () {
58
- Mockito .when (applyThemeSettingsUseCase .invoke (themeValues )).thenReturn (true );
59
- Mockito .when (getBottomNavLabelVisibilityUseCase .invoke ()).thenReturn ("labeled" );
60
- Mockito .when (getDefaultTabPreferenceUseCase .invoke ()).thenReturn ("home" );
61
56
62
- MainViewModel viewModel = new MainViewModel (
57
+ viewModel = new MainViewModel (
63
58
applyThemeSettingsUseCase ,
64
59
getBottomNavLabelVisibilityUseCase ,
65
60
getDefaultTabPreferenceUseCase ,
@@ -68,6 +63,13 @@ public void applySettingsUpdatesUiStateForLabeledHome() {
68
63
markStartupScreenShownUseCase ,
69
64
getAppUpdateManagerUseCase
70
65
);
66
+ }
67
+
68
+ @ Test
69
+ public void applySettingsUpdatesUiStateForLabeledHome () {
70
+ Mockito .when (applyThemeSettingsUseCase .invoke (themeValues )).thenReturn (true );
71
+ Mockito .when (getBottomNavLabelVisibilityUseCase .invoke ()).thenReturn ("labeled" );
72
+ Mockito .when (getDefaultTabPreferenceUseCase .invoke ()).thenReturn ("home" );
71
73
72
74
List <Boolean > loading = new ArrayList <>();
73
75
viewModel .getLoadingState ().observeForever (loading ::add );
@@ -89,16 +91,6 @@ public void applySettingsUpdatesUiStateForSelectedAndroidStudio() {
89
91
Mockito .when (getBottomNavLabelVisibilityUseCase .invoke ()).thenReturn ("selected" );
90
92
Mockito .when (getDefaultTabPreferenceUseCase .invoke ()).thenReturn ("android_studio" );
91
93
92
- MainViewModel viewModel = new MainViewModel (
93
- applyThemeSettingsUseCase ,
94
- getBottomNavLabelVisibilityUseCase ,
95
- getDefaultTabPreferenceUseCase ,
96
- applyLanguageSettingsUseCase ,
97
- shouldShowStartupScreenUseCase ,
98
- markStartupScreenShownUseCase ,
99
- getAppUpdateManagerUseCase
100
- );
101
-
102
94
List <Boolean > loading = new ArrayList <>();
103
95
viewModel .getLoadingState ().observeForever (loading ::add );
104
96
@@ -110,7 +102,7 @@ public void applySettingsUpdatesUiStateForSelectedAndroidStudio() {
110
102
assertNotNull (state );
111
103
assertEquals (NavigationBarView .LABEL_VISIBILITY_SELECTED , state .bottomNavVisibility ());
112
104
assertEquals (R .id .navigation_android_studio , state .defaultNavDestination ());
113
- assertTrue (! state .themeChanged ());
105
+ assertFalse ( state .themeChanged ());
114
106
}
115
107
116
108
@ Test
@@ -119,16 +111,6 @@ public void applySettingsUpdatesUiStateForUnlabeledAbout() {
119
111
Mockito .when (getBottomNavLabelVisibilityUseCase .invoke ()).thenReturn ("unlabeled" );
120
112
Mockito .when (getDefaultTabPreferenceUseCase .invoke ()).thenReturn ("about" );
121
113
122
- MainViewModel viewModel = new MainViewModel (
123
- applyThemeSettingsUseCase ,
124
- getBottomNavLabelVisibilityUseCase ,
125
- getDefaultTabPreferenceUseCase ,
126
- applyLanguageSettingsUseCase ,
127
- shouldShowStartupScreenUseCase ,
128
- markStartupScreenShownUseCase ,
129
- getAppUpdateManagerUseCase
130
- );
131
-
132
114
List <Boolean > loading = new ArrayList <>();
133
115
viewModel .getLoadingState ().observeForever (loading ::add );
134
116
@@ -143,6 +125,21 @@ public void applySettingsUpdatesUiStateForUnlabeledAbout() {
143
125
assertTrue (state .themeChanged ());
144
126
}
145
127
128
+ @ Test
129
+ public void shouldShowStartupScreenDelegatesToUseCase () {
130
+ Mockito .when (shouldShowStartupScreenUseCase .invoke ()).thenReturn (false );
131
+
132
+ assertFalse (viewModel .shouldShowStartupScreen ());
133
+ Mockito .verify (shouldShowStartupScreenUseCase ).invoke ();
134
+ }
135
+
136
+ @ Test
137
+ public void markStartupScreenShownDelegatesToUseCase () {
138
+ viewModel .markStartupScreenShown ();
139
+
140
+ Mockito .verify (markStartupScreenShownUseCase ).invoke ();
141
+ }
142
+
146
143
private int callVisibilityMode (String value ) throws Exception {
147
144
Method method = MainViewModel .class .getDeclaredMethod (
148
145
"getVisibilityMode" , String .class , String [].class );
0 commit comments