@@ -36,9 +36,9 @@ import com.duckduckgo.app.browser.addToHome.AddToHomeCapabilityDetector
36
36
import com.duckduckgo.app.browser.favicon.FaviconDownloader
37
37
import com.duckduckgo.app.browser.omnibar.OmnibarEntryConverter
38
38
import com.duckduckgo.app.browser.session.WebViewSessionStorage
39
+ import com.duckduckgo.app.cta.db.DismissedCtaDao
40
+ import com.duckduckgo.app.cta.ui.CtaViewModel
39
41
import com.duckduckgo.app.feedback.db.SurveyDao
40
- import com.duckduckgo.app.feedback.model.Survey
41
- import com.duckduckgo.app.feedback.model.Survey.Status.SCHEDULED
42
42
import com.duckduckgo.app.global.db.AppConfigurationDao
43
43
import com.duckduckgo.app.global.db.AppConfigurationEntity
44
44
import com.duckduckgo.app.global.db.AppDatabase
@@ -50,11 +50,14 @@ import com.duckduckgo.app.privacy.db.SiteVisitedEntity
50
50
import com.duckduckgo.app.privacy.model.PrivacyPractices
51
51
import com.duckduckgo.app.privacy.store.PrevalenceStore
52
52
import com.duckduckgo.app.settings.db.SettingsDataStore
53
+ import com.duckduckgo.app.statistics.VariantManager
53
54
import com.duckduckgo.app.statistics.api.StatisticsUpdater
55
+ import com.duckduckgo.app.statistics.pixels.Pixel
54
56
import com.duckduckgo.app.tabs.model.TabRepository
55
57
import com.duckduckgo.app.trackerdetection.model.TrackerNetwork
56
58
import com.duckduckgo.app.trackerdetection.model.TrackerNetworks
57
59
import com.duckduckgo.app.trackerdetection.model.TrackingEvent
60
+ import com.duckduckgo.app.widget.ui.WidgetCapabilities
58
61
import com.nhaarman.mockitokotlin2.*
59
62
import org.junit.After
60
63
import org.junit.Assert.*
@@ -126,11 +129,25 @@ class BrowserTabViewModelTest {
126
129
private lateinit var mockAddToHomeCapabilityDetector: AddToHomeCapabilityDetector
127
130
128
131
@Mock
129
- private lateinit var surveyDao: SurveyDao
132
+ private lateinit var mockSurveyDao: SurveyDao
133
+
134
+ @Mock
135
+ private lateinit var mockDismissedCtaDao: DismissedCtaDao
130
136
131
137
@Mock
132
138
private lateinit var mockAppInstallStore: AppInstallStore
133
139
140
+ @Mock
141
+ private lateinit var mockPixel: Pixel
142
+
143
+ @Mock
144
+ private lateinit var mockVariantManager: VariantManager
145
+
146
+ @Mock
147
+ private lateinit var mockWidgetCapabilities: WidgetCapabilities
148
+
149
+ private lateinit var ctaViewModel: CtaViewModel
150
+
134
151
@Captor
135
152
private lateinit var commandCaptor: ArgumentCaptor <Command >
136
153
@@ -147,13 +164,24 @@ class BrowserTabViewModelTest {
147
164
db = Room .inMemoryDatabaseBuilder(getInstrumentation().targetContext, AppDatabase ::class .java)
148
165
.allowMainThreadQueries()
149
166
.build()
167
+
150
168
appConfigurationDao = db.appConfigurationDao()
151
169
170
+ ctaViewModel = CtaViewModel (
171
+ mockAppInstallStore,
172
+ mockPixel,
173
+ mockSurveyDao,
174
+ mockWidgetCapabilities,
175
+ mockDismissedCtaDao,
176
+ mockVariantManager
177
+ )
178
+
152
179
val siteFactory = SiteFactory (mockPrivacyPractices, mockTrackerNetworks, prevalenceStore = mockPrevalenceStore)
153
180
154
181
whenever(mockTabsRepository.retrieveSiteData(any())).thenReturn(MutableLiveData ())
155
182
whenever(mockPrivacyPractices.privacyPracticesFor(any())).thenReturn(PrivacyPractices .UNKNOWN )
156
183
whenever(mockAppInstallStore.installTimestamp).thenReturn(System .currentTimeMillis() - TimeUnit .DAYS .toMillis(1 ))
184
+ whenever(mockVariantManager.getVariant(any())).thenReturn(VariantManager .DEFAULT_VARIANT )
157
185
158
186
testee = BrowserTabViewModel (
159
187
statisticsUpdater = mockStatisticsUpdater,
@@ -162,17 +190,16 @@ class BrowserTabViewModelTest {
162
190
siteFactory = siteFactory,
163
191
tabRepository = mockTabsRepository,
164
192
networkLeaderboardDao = mockNetworkLeaderboardDao,
165
- bookmarksDao = bookmarksDao,
166
193
autoCompleteApi = mockAutoCompleteApi,
167
194
appSettingsPreferencesStore = mockSettingsStore,
195
+ bookmarksDao = bookmarksDao,
168
196
longPressHandler = mockLongPressHandler,
197
+ appConfigurationDao = appConfigurationDao,
169
198
webViewSessionStorage = webViewSessionStorage,
170
199
specialUrlDetector = SpecialUrlDetectorImpl (),
171
200
faviconDownloader = mockFaviconDownloader,
172
201
addToHomeCapabilityDetector = mockAddToHomeCapabilityDetector,
173
- appConfigurationDao = appConfigurationDao,
174
- surveyDao = surveyDao,
175
- appInstallStore = mockAppInstallStore
202
+ ctaViewModel = ctaViewModel
176
203
)
177
204
178
205
testee.loadData(" abc" , null )
@@ -228,15 +255,15 @@ class BrowserTabViewModelTest {
228
255
testee.url.value = " http://exmaple.com"
229
256
testee.onViewVisible()
230
257
verify(mockCommandObserver, atLeastOnce()).onChanged(commandCaptor.capture())
231
- assertTrue(commandCaptor.lastValue is Command .HideKeyboard )
258
+ assertTrue(commandCaptor.allValues.contains( Command .HideKeyboard ) )
232
259
}
233
260
234
261
@Test
235
262
fun whenViewBecomesVisibleWithoutActiveSiteThenKeyboardShown () {
236
263
testee.url.value = null
237
264
testee.onViewVisible()
238
265
verify(mockCommandObserver, atLeastOnce()).onChanged(commandCaptor.capture())
239
- assertTrue(commandCaptor.lastValue is Command .ShowKeyboard )
266
+ assertTrue(commandCaptor.allValues.contains( Command .ShowKeyboard ) )
240
267
}
241
268
242
269
@Test
@@ -741,39 +768,6 @@ class BrowserTabViewModelTest {
741
768
assertNull(command.url)
742
769
}
743
770
744
- @Test
745
- fun whenScheduledSurveyChangesAndNewSurveyInstallationDayMatchesDaysInstalledThenHasValidSurveyIsTrue () {
746
- testee.onSurveyChanged(Survey (" abc" , " http://example.com" , 1 , SCHEDULED ))
747
- assertTrue(testee.surveyViewState.value!! .hasValidSurvey)
748
- }
749
-
750
- @Test
751
- fun whenScheduledSurveyChangesAndNewSurveyInstallationDoesNotMatchDaysInstalledThenHasValidSurveyIsFalse () {
752
- testee.onSurveyChanged(Survey (" abc" , " http://example.com" , 2 , SCHEDULED ))
753
- assertFalse(testee.surveyViewState.value!! .hasValidSurvey)
754
- }
755
-
756
- @Test
757
- fun whenScheduledSurveyIsNullThenHasValidSurveyIsFalse () {
758
- testee.onSurveyChanged(null )
759
- assertFalse(testee.surveyViewState.value!! .hasValidSurvey)
760
- }
761
-
762
- @Test
763
- fun whenSurveyExistsAndUserOpensSurveyThenSurveyShown () {
764
- testee.onSurveyChanged(Survey (" abc" , " http://example.com" , 1 , SCHEDULED ))
765
- testee.onUserOpenedSurvey()
766
- val command = captureCommands().value as Command .LaunchSurvey
767
- assertNotNull(command)
768
- }
769
-
770
- @Test
771
- fun whenUserDismissesSurveyThenSurveyCancelledAndHasValidSurveyIsFalse () {
772
- testee.onUserDismissedSurvey()
773
- assertFalse(testee.surveyViewState.value!! .hasValidSurvey)
774
- verify(surveyDao).cancelScheduledSurveys()
775
- }
776
-
777
771
@Test
778
772
fun whenUserSelectsToShareLinkWithNullUrlThenShareLinkCommandNotSent () {
779
773
testee.userSharingLink(null )
0 commit comments