@@ -22,6 +22,7 @@ import android.support.test.InstrumentationRegistry
2222import com.duckduckgo.app.browser.R
2323import com.duckduckgo.app.privacymonitor.HttpsStatus
2424import com.duckduckgo.app.privacymonitor.PrivacyMonitor
25+ import com.duckduckgo.app.privacymonitor.model.TermsOfService
2526import com.duckduckgo.app.privacymonitor.store.PrivacySettingsStore
2627import com.nhaarman.mockito_kotlin.mock
2728import com.nhaarman.mockito_kotlin.whenever
@@ -38,7 +39,6 @@ class PrivacyDashboardViewModelTest {
3839 var instantTaskExecutorRule = InstantTaskExecutorRule ()
3940
4041 private lateinit var viewStateObserver: Observer <PrivacyDashboardViewModel .ViewState >
41- private lateinit var monitor: PrivacyMonitor
4242 private lateinit var settingStore: PrivacySettingsStore
4343
4444 private val testee: PrivacyDashboardViewModel by lazy {
@@ -50,9 +50,7 @@ class PrivacyDashboardViewModelTest {
5050 @Before
5151 fun before () {
5252 viewStateObserver = mock()
53- monitor = mock()
5453 settingStore = mock()
55- whenever(monitor.https).thenReturn(HttpsStatus .SECURE )
5654 }
5755
5856 @After
@@ -91,6 +89,7 @@ class PrivacyDashboardViewModelTest {
9189
9290 @Test
9391 fun whenHttpsStatusIsSecureThenTextAndIconReflectSame () {
92+ val monitor = monitor()
9493 whenever(monitor.https).thenReturn(HttpsStatus .SECURE )
9594 testee.onPrivacyMonitorChanged(monitor)
9695 assertEquals(getStringResource(R .string.httpsGood), testee.viewState.value?.httpsText)
@@ -99,6 +98,7 @@ class PrivacyDashboardViewModelTest {
9998
10099 @Test
101100 fun whenHttpsStatusIsMixedThenTextAndIconReflectSame () {
101+ val monitor = monitor()
102102 whenever(monitor.https).thenReturn(HttpsStatus .MIXED )
103103 testee.onPrivacyMonitorChanged(monitor)
104104 assertEquals(getStringResource(R .string.httpsMixed), testee.viewState.value?.httpsText)
@@ -107,6 +107,7 @@ class PrivacyDashboardViewModelTest {
107107
108108 @Test
109109 fun whenHttpsStatusIsNoneThenTextAndIconReflectSame () {
110+ val monitor = monitor()
110111 whenever(monitor.https).thenReturn(HttpsStatus .NONE )
111112 testee.onPrivacyMonitorChanged(monitor)
112113 assertEquals(getStringResource(R .string.httpsBad), testee.viewState.value?.httpsText)
@@ -115,13 +116,15 @@ class PrivacyDashboardViewModelTest {
115116
116117 @Test
117118 fun whenNoTrackersNetworksThenNetworkIconIsGood () {
119+ val monitor = monitor()
118120 whenever(monitor.networkCount).thenReturn(0 )
119121 testee.onPrivacyMonitorChanged(monitor)
120122 assertEquals(R .drawable.dashboard_networks_good, testee.viewState.value?.networksIcon)
121123 }
122124
123125 @Test
124126 fun whenTenTrackerNetworksAndAllBlockedThenNetworkIconIsGood () {
127+ val monitor = monitor()
125128 whenever(monitor.networkCount).thenReturn(10 )
126129 whenever(monitor.allTrackersBlocked).thenReturn(true )
127130 testee.onPrivacyMonitorChanged(monitor)
@@ -130,6 +133,7 @@ class PrivacyDashboardViewModelTest {
130133
131134 @Test
132135 fun whenTenTrackerNetworksAndNotAllBlockedThenNetworkIconIsBad () {
136+ val monitor = monitor()
133137 whenever(monitor.networkCount).thenReturn(10 )
134138 whenever(monitor.allTrackersBlocked).thenReturn(false )
135139 testee.onPrivacyMonitorChanged(monitor)
@@ -138,13 +142,15 @@ class PrivacyDashboardViewModelTest {
138142
139143 @Test
140144 fun whenNoMajorTrackersNetworksThenMajorNetworkIconIsGood () {
145+ val monitor = monitor()
141146 whenever(monitor.majorNetworkCount).thenReturn(0 )
142147 testee.onPrivacyMonitorChanged(monitor)
143148 assertEquals(R .drawable.dashboard_major_networks_good, testee.viewState.value?.majorNetworksIcon)
144149 }
145150
146151 @Test
147152 fun whenTenMajorTrackerNetworksAndAllBlockedThenMajorNetworkIconIsGood () {
153+ val monitor = monitor()
148154 whenever(monitor.majorNetworkCount).thenReturn(10 )
149155 whenever(monitor.allTrackersBlocked).thenReturn(true )
150156 testee.onPrivacyMonitorChanged(monitor)
@@ -153,6 +159,7 @@ class PrivacyDashboardViewModelTest {
153159
154160 @Test
155161 fun whenTenMajorTrackerNetworksAndNotAllBlockedThenMajorNetworkIconIsBad () {
162+ val monitor = monitor()
156163 whenever(monitor.majorNetworkCount).thenReturn(10 )
157164 whenever(monitor.allTrackersBlocked).thenReturn(false )
158165 testee.onPrivacyMonitorChanged(monitor)
@@ -161,6 +168,7 @@ class PrivacyDashboardViewModelTest {
161168
162169 @Test
163170 fun whenNoTrackerNetworksThenNetworkTextShowsZeroBlocked () {
171+ val monitor = monitor()
164172 whenever(monitor.networkCount).thenReturn(0 )
165173 whenever(monitor.allTrackersBlocked).thenReturn(true )
166174 testee.onPrivacyMonitorChanged(monitor)
@@ -169,6 +177,7 @@ class PrivacyDashboardViewModelTest {
169177
170178 @Test
171179 fun whenTenTrackerNetworksAndAllBlockedThenNetworkTextShowsTenBlocked () {
180+ val monitor = monitor()
172181 whenever(monitor.networkCount).thenReturn(10 )
173182 whenever(monitor.allTrackersBlocked).thenReturn(true )
174183 testee.onPrivacyMonitorChanged(monitor)
@@ -177,6 +186,7 @@ class PrivacyDashboardViewModelTest {
177186
178187 @Test
179188 fun whenTenTrackersNetworksAndNotAllBlockedThenNetworkTextShowsTenFound () {
189+ val monitor = monitor()
180190 whenever(monitor.networkCount).thenReturn(10 )
181191 whenever(monitor.allTrackersBlocked).thenReturn(false )
182192 testee.onPrivacyMonitorChanged(monitor)
@@ -185,6 +195,7 @@ class PrivacyDashboardViewModelTest {
185195
186196 @Test
187197 fun whenNoMajorTrackersNetworksThenMajorNetworkTextShowsZeroBlocked () {
198+ val monitor = monitor()
188199 whenever(monitor.majorNetworkCount).thenReturn(0 )
189200 whenever(monitor.allTrackersBlocked).thenReturn(true )
190201 testee.onPrivacyMonitorChanged(monitor)
@@ -193,6 +204,7 @@ class PrivacyDashboardViewModelTest {
193204
194205 @Test
195206 fun whenTenMajorTrackerNetworksAndAllBlockedThenMajorNetworkTextShowsTenBlocked () {
207+ val monitor = monitor()
196208 whenever(monitor.majorNetworkCount).thenReturn(10 )
197209 whenever(monitor.allTrackersBlocked).thenReturn(true )
198210 testee.onPrivacyMonitorChanged(monitor)
@@ -201,6 +213,7 @@ class PrivacyDashboardViewModelTest {
201213
202214 @Test
203215 fun whenTenMajorTrackerNetworksAndNotAllBlockedThenMajorNetworkTextShowsTenFound () {
216+ val monitor = monitor()
204217 whenever(monitor.majorNetworkCount).thenReturn(10 )
205218 whenever(monitor.allTrackersBlocked).thenReturn(false )
206219 testee.onPrivacyMonitorChanged(monitor)
@@ -217,6 +230,44 @@ class PrivacyDashboardViewModelTest {
217230 assertEquals(" 0 Major Tracker Networks Blocked" , testee.viewState.value?.majorNetworksText)
218231 }
219232
233+ @Test
234+ fun whenTermsAreGoodThenTextAndIconReflectSame () {
235+ val terms = TermsOfService (classification = " A" , goodPrivacyTerms = listOf (" good" ))
236+ testee.onPrivacyMonitorChanged(monitor(terms))
237+ assertEquals(getStringResource(R .string.termsGood), testee.viewState.value?.termsText)
238+ assertEquals(R .drawable.dashboard_terms_good, testee.viewState.value?.termsIcon)
239+ }
240+
241+ @Test
242+ fun whenTermsArePoorThenTextAndIconReflectSame () {
243+ val terms = TermsOfService (classification = " E" , badPrivacyTerms = listOf (" bad" ))
244+ testee.onPrivacyMonitorChanged(monitor(terms))
245+ assertEquals(getStringResource(R .string.termsBad), testee.viewState.value?.termsText)
246+ assertEquals(R .drawable.dashboard_terms_bad, testee.viewState.value?.termsIcon)
247+ }
248+
249+ @Test
250+ fun whenTermsAreMixedThenTextAndIconReflectSame () {
251+ val terms = TermsOfService (goodPrivacyTerms = listOf (" good" ), badPrivacyTerms = listOf (" bad" ))
252+ testee.onPrivacyMonitorChanged(monitor(terms))
253+ assertEquals(getStringResource(R .string.termsMixed), testee.viewState.value?.termsText)
254+ assertEquals(R .drawable.dashboard_terms_neutral, testee.viewState.value?.termsIcon)
255+ }
256+
257+ @Test
258+ fun whenTermsAreUnknownThenTextAndIconReflectSame () {
259+ testee.onPrivacyMonitorChanged(monitor())
260+ assertEquals(getStringResource(R .string.termsUnknown), testee.viewState.value?.termsText)
261+ assertEquals(R .drawable.dashboard_terms_neutral, testee.viewState.value?.termsIcon)
262+ }
263+
264+ private fun monitor (terms : TermsOfService = TermsOfService ()): PrivacyMonitor {
265+ val monitor: PrivacyMonitor = mock()
266+ whenever(monitor.https).thenReturn(HttpsStatus .SECURE )
267+ whenever(monitor.termsOfService).thenReturn(terms)
268+ return monitor
269+ }
270+
220271 private fun getStringResource (id : Int ): String =
221272 InstrumentationRegistry .getTargetContext().getString(id)
222273}
0 commit comments