@@ -46,6 +46,7 @@ import com.duckduckgo.app.browser.LongPressHandler.RequiredAction.OpenInNewTab
4646import com.duckduckgo.app.browser.addtohome.AddToHomeCapabilityDetector
4747import com.duckduckgo.app.browser.downloader.FileDownloader
4848import com.duckduckgo.app.browser.favicon.FaviconManager
49+ import com.duckduckgo.app.browser.logindetection.FireproofDialogsEventHandler
4950import com.duckduckgo.app.browser.logindetection.LoginDetected
5051import com.duckduckgo.app.browser.logindetection.NavigationAwareLoginDetector
5152import com.duckduckgo.app.browser.logindetection.NavigationEvent
@@ -233,6 +234,9 @@ class BrowserTabViewModelTest {
233234 @Mock
234235 private lateinit var geoLocationPermissions: GeoLocationPermissions
235236
237+ @Mock
238+ private lateinit var fireproofDialogsEventHandler: FireproofDialogsEventHandler
239+
236240 private val lazyFaviconManager = Lazy { mockFaviconManager }
237241
238242 private lateinit var mockAutoCompleteApi: AutoCompleteApi
@@ -254,6 +258,8 @@ class BrowserTabViewModelTest {
254258
255259 private val loginEventLiveData = MutableLiveData <LoginDetected >()
256260
261+ private val fireproofDialogsEventHandlerLiveData = MutableLiveData <FireproofDialogsEventHandler .Event >()
262+
257263 private val dismissedCtaDaoChannel = Channel <List <DismissedCta >>()
258264
259265 @Before
@@ -266,6 +272,7 @@ class BrowserTabViewModelTest {
266272 locationPermissionsDao = db.locationPermissionsDao()
267273
268274 mockAutoCompleteApi = AutoCompleteApi (mockAutoCompleteService, mockBookmarksDao)
275+ val fireproofWebsiteRepository = FireproofWebsiteRepository (fireproofWebsiteDao, coroutineRule.testDispatcherProvider, lazyFaviconManager)
269276
270277 whenever(mockDismissedCtaDao.dismissedCtas()).thenReturn(dismissedCtaDaoChannel.consumeAsFlow())
271278 whenever(mockTabRepository.flowTabs).thenReturn(flowOf(emptyList()))
@@ -297,6 +304,7 @@ class BrowserTabViewModelTest {
297304 whenever(mockPrivacyPractices.privacyPracticesFor(any())).thenReturn(PrivacyPractices .UNKNOWN )
298305 whenever(mockAppInstallStore.installTimestamp).thenReturn(System .currentTimeMillis() - TimeUnit .DAYS .toMillis(1 ))
299306 whenever(mockUserWhitelistDao.contains(anyString())).thenReturn(false )
307+ whenever(fireproofDialogsEventHandler.event).thenReturn(fireproofDialogsEventHandlerLiveData)
300308
301309 testee = BrowserTabViewModel (
302310 statisticsUpdater = mockStatisticsUpdater,
@@ -318,7 +326,7 @@ class BrowserTabViewModelTest {
318326 searchCountDao = mockSearchCountDao,
319327 pixel = mockPixel,
320328 dispatchers = coroutineRule.testDispatcherProvider,
321- fireproofWebsiteRepository = FireproofWebsiteRepository (fireproofWebsiteDao, coroutineRule.testDispatcherProvider, lazyFaviconManager) ,
329+ fireproofWebsiteRepository = fireproofWebsiteRepository ,
322330 locationPermissionsRepository = LocationPermissionsRepository (
323331 locationPermissionsDao,
324332 lazyFaviconManager,
@@ -331,7 +339,8 @@ class BrowserTabViewModelTest {
331339 useOurAppDetector = UseOurAppDetector (mockUserEventsStore),
332340 variantManager = mockVariantManager,
333341 fileDownloader = mockFileDownloader,
334- globalPrivacyControl = GlobalPrivacyControlManager (mockSettingsStore)
342+ globalPrivacyControl = GlobalPrivacyControlManager (mockSettingsStore),
343+ fireproofDialogsEventHandler = fireproofDialogsEventHandler
335344 )
336345
337346 testee.loadData(" abc" , null , false )
@@ -2093,24 +2102,28 @@ class BrowserTabViewModelTest {
20932102 }
20942103
20952104 @Test
2096- fun whenUserFireproofsWebsiteFromLoginDialogThenShowConfirmationIsIssuedWithExpectedDomain () {
2097- loadUrl(" http://mobile.example.com/" , isBrowserShowing = true )
2105+ fun whenUserFireproofsWebsiteFromLoginDialogThenShowConfirmationIsIssuedWithExpectedDomain () = coroutineRule.runBlocking {
2106+ whenever(fireproofDialogsEventHandler.onUserConfirmedFireproofDialog(anyString())).doAnswer {
2107+ val domain = it.arguments.first() as String
2108+ fireproofDialogsEventHandlerLiveData.postValue(FireproofDialogsEventHandler .Event .FireproofWebSiteSuccess (FireproofWebsiteEntity (domain)))
2109+ }
2110+
20982111 testee.onUserConfirmedFireproofDialog(" login.example.com" )
2112+
20992113 assertCommandIssued<Command .ShowFireproofWebSiteConfirmation > {
21002114 assertEquals(" login.example.com" , this .fireproofWebsiteEntity.domain)
21012115 }
21022116 }
21032117
21042118 @Test
2105- fun whenUserFireproofsWebsiteFromLoginDialogThenPixelSent () {
2106- testee.onUserConfirmedFireproofDialog( " login.example.com " )
2107- verify(mockPixel).fire( Pixel . PixelName . FIREPROOF_WEBSITE_LOGIN_ADDED )
2108- }
2119+ fun whenAskToDisableLoginDetectionEventReceivedThenAskUserToDisableLoginDetection () = coroutineRule.runBlocking {
2120+ whenever(fireproofDialogsEventHandler.onUserDismissedFireproofLoginDialog()).doAnswer {
2121+ fireproofDialogsEventHandlerLiveData.postValue( FireproofDialogsEventHandler . Event . AskToDisableLoginDetection )
2122+ }
21092123
2110- @Test
2111- fun whenUserDismissesFireproofWebsiteLoginDialogThenPixelSent () {
21122124 testee.onUserDismissedFireproofLoginDialog()
2113- verify(mockPixel).fire(Pixel .PixelName .FIREPROOF_WEBSITE_LOGIN_DISMISS )
2125+
2126+ assertCommandIssued<Command .AskToDisableLoginDetection >()
21142127 }
21152128
21162129 @Test
0 commit comments