@@ -57,7 +57,7 @@ class SplitTunnelingViewModelTest {
57
57
initTestSubject(emptyList())
58
58
val actualState: SplitTunnelingUiState = testSubject.uiState.value
59
59
60
- val initialExpectedState = SplitTunnelingUiState .Loading
60
+ val initialExpectedState = SplitTunnelingUiState .Loading (enabled = false )
61
61
62
62
assertEquals(initialExpectedState, actualState)
63
63
@@ -70,9 +70,14 @@ class SplitTunnelingViewModelTest {
70
70
{
71
71
lambda< (Set <String >) -> Unit > ().invoke(emptySet())
72
72
}
73
+ every { mockedSplitTunneling.enabledChange = captureLambda() } answers
74
+ {
75
+ lambda< (Boolean ) -> Unit > ().invoke(true )
76
+ }
73
77
initTestSubject(emptyList())
74
78
val expectedState =
75
79
SplitTunnelingUiState .ShowAppList (
80
+ enabled = true ,
76
81
excludedApps = emptyList(),
77
82
includedApps = emptyList(),
78
83
showSystemApps = false
@@ -88,11 +93,16 @@ class SplitTunnelingViewModelTest {
88
93
{
89
94
lambda< (Set <String >) -> Unit > ().invoke(setOf (appExcluded.packageName))
90
95
}
96
+ every { mockedSplitTunneling.enabledChange = captureLambda() } answers
97
+ {
98
+ lambda< (Boolean ) -> Unit > ().invoke(true )
99
+ }
91
100
92
101
initTestSubject(listOf (appExcluded, appNotExcluded))
93
102
94
103
val expectedState =
95
104
SplitTunnelingUiState .ShowAppList (
105
+ enabled = true ,
96
106
excludedApps = listOf (appExcluded),
97
107
includedApps = listOf (appNotExcluded),
98
108
showSystemApps = false
@@ -102,7 +112,7 @@ class SplitTunnelingViewModelTest {
102
112
val actualState = awaitItem()
103
113
assertEquals(expectedState, actualState)
104
114
verifyAll {
105
- mockedSplitTunneling.enabled
115
+ mockedSplitTunneling.enabledChange = any()
106
116
mockedSplitTunneling.excludedAppsChange = any()
107
117
}
108
118
}
@@ -118,17 +128,23 @@ class SplitTunnelingViewModelTest {
118
128
excludedAppsCallback = lambda()
119
129
excludedAppsCallback.invoke(setOf (app.packageName))
120
130
}
131
+ every { mockedSplitTunneling.enabledChange = captureLambda() } answers
132
+ {
133
+ lambda< (Boolean ) -> Unit > ().invoke(true )
134
+ }
121
135
122
136
initTestSubject(listOf (app))
123
137
124
138
val expectedStateBeforeAction =
125
139
SplitTunnelingUiState .ShowAppList (
140
+ enabled = true ,
126
141
excludedApps = listOf (app),
127
142
includedApps = emptyList(),
128
143
showSystemApps = false
129
144
)
130
145
val expectedStateAfterAction =
131
146
SplitTunnelingUiState .ShowAppList (
147
+ enabled = true ,
132
148
excludedApps = emptyList(),
133
149
includedApps = listOf (app),
134
150
showSystemApps = false
@@ -141,7 +157,7 @@ class SplitTunnelingViewModelTest {
141
157
assertEquals(expectedStateAfterAction, awaitItem())
142
158
143
159
verifyAll {
144
- mockedSplitTunneling.enabled
160
+ mockedSplitTunneling.enabledChange = any()
145
161
mockedSplitTunneling.excludedAppsChange = any()
146
162
mockedSplitTunneling.includeApp(app.packageName)
147
163
}
@@ -158,18 +174,24 @@ class SplitTunnelingViewModelTest {
158
174
excludedAppsCallback = lambda()
159
175
excludedAppsCallback.invoke(emptySet())
160
176
}
177
+ every { mockedSplitTunneling.enabledChange = captureLambda() } answers
178
+ {
179
+ lambda< (Boolean ) -> Unit > ().invoke(true )
180
+ }
161
181
162
182
initTestSubject(listOf (app))
163
183
164
184
val expectedStateBeforeAction =
165
185
SplitTunnelingUiState .ShowAppList (
186
+ enabled = true ,
166
187
excludedApps = emptyList(),
167
188
includedApps = listOf (app),
168
189
showSystemApps = false
169
190
)
170
191
171
192
val expectedStateAfterAction =
172
193
SplitTunnelingUiState .ShowAppList (
194
+ enabled = true ,
173
195
excludedApps = listOf (app),
174
196
includedApps = emptyList(),
175
197
showSystemApps = false
@@ -182,13 +204,34 @@ class SplitTunnelingViewModelTest {
182
204
assertEquals(expectedStateAfterAction, awaitItem())
183
205
184
206
verifyAll {
185
- mockedSplitTunneling.enabled
207
+ mockedSplitTunneling.enabledChange = any()
186
208
mockedSplitTunneling.excludedAppsChange = any()
187
209
mockedSplitTunneling.excludeApp(app.packageName)
188
210
}
189
211
}
190
212
}
191
213
214
+ @Test
215
+ fun test_disabled_state () = runTest {
216
+ every { mockedSplitTunneling.excludedAppsChange = captureLambda() } answers
217
+ {
218
+ lambda< (Set <String >) -> Unit > ().invoke(emptySet())
219
+ }
220
+ every { mockedSplitTunneling.enabledChange = captureLambda() } answers
221
+ {
222
+ lambda< (Boolean ) -> Unit > ().invoke(false )
223
+ }
224
+
225
+ initTestSubject(emptyList())
226
+
227
+ val expectedState = SplitTunnelingUiState .ShowAppList (enabled = false )
228
+
229
+ testSubject.uiState.test {
230
+ val actualState = awaitItem()
231
+ assertEquals(expectedState, actualState)
232
+ }
233
+ }
234
+
192
235
private fun initTestSubject (appList : List <AppData >) {
193
236
every { mockedApplicationsProvider.getAppsList() } returns appList
194
237
every { mockedServiceConnectionManager.connectionState } returns
0 commit comments