@@ -452,6 +452,8 @@ class BrowserTabViewModelTest {
452
452
453
453
private val mockHasPendingTabLaunchFlow = MutableStateFlow (false )
454
454
455
+ private val mockHasPendingDuckAiOpenFlow = MutableStateFlow (false )
456
+
455
457
private val mockAppBuildConfig: AppBuildConfig = mock()
456
458
457
459
private val mockDuckDuckGoUrlDetector: DuckDuckGoUrlDetector = mock()
@@ -657,6 +659,7 @@ class BrowserTabViewModelTest {
657
659
whenever(mockDuckAiFeatureState.showInputScreen).thenReturn(mockDuckAiFeatureStateInputScreenFlow)
658
660
whenever(mockDuckAiFeatureState.showInputScreenAutomaticallyOnNewTab).thenReturn(mockDuckAiFeatureStateInputScreenOpenAutomaticallyFlow)
659
661
whenever(mockExternalIntentProcessingState.hasPendingTabLaunch).thenReturn(mockHasPendingTabLaunchFlow)
662
+ whenever(mockExternalIntentProcessingState.hasPendingDuckAiOpen).thenReturn(mockHasPendingDuckAiOpenFlow)
660
663
whenever(mockOnboardingDesignExperimentManager.isModifiedControlEnrolledAndEnabled()).thenReturn(false )
661
664
whenever(mockOnboardingDesignExperimentManager.isBuckEnrolledAndEnabled()).thenReturn(false )
662
665
whenever(mockOnboardingDesignExperimentManager.isBbEnrolledAndEnabled()).thenReturn(false )
@@ -6995,6 +6998,58 @@ class BrowserTabViewModelTest {
6995
6998
)
6996
6999
}
6997
7000
7001
+ @Test
7002
+ fun whenInputScreenEnabledAndDuckAiOpenThenLaunchInputScreenCommandSuppressed () = runTest {
7003
+ val initialTabId = " initial-tab"
7004
+ val initialTab = TabEntity (tabId = initialTabId, url = " https://example.com" , title = " EX" , skipHome = false , viewed = true , position = 0 )
7005
+ val ntpTabId = " ntp-tab"
7006
+ val ntpTab = TabEntity (tabId = ntpTabId, url = null , title = " " , skipHome = false , viewed = true , position = 0 )
7007
+ whenever(mockTabRepository.getTab(initialTabId)).thenReturn(initialTab)
7008
+ whenever(mockTabRepository.getTab(ntpTabId)).thenReturn(ntpTab)
7009
+ flowSelectedTab.emit(initialTab)
7010
+
7011
+ testee.loadData(tabId = ntpTabId, initialUrl = null , skipHome = false , isExternal = false )
7012
+ mockDuckAiFeatureStateInputScreenOpenAutomaticallyFlow.emit(true )
7013
+ mockHasPendingDuckAiOpenFlow.emit(true )
7014
+
7015
+ flowSelectedTab.emit(ntpTab)
7016
+
7017
+ verify(mockCommandObserver, atLeastOnce()).onChanged(commandCaptor.capture())
7018
+ val commands = commandCaptor.allValues
7019
+ assertFalse(
7020
+ " LaunchInputScreen command should be suppressed when Duck.ai is opened" ,
7021
+ commands.any { it is Command .LaunchInputScreen },
7022
+ )
7023
+ }
7024
+
7025
+ @Test
7026
+ fun whenInputScreenEnabledAndDuckAiClosedThenLaunchInputScreenCommandTriggered () = runTest {
7027
+ val initialTabId = " initial-tab"
7028
+ val initialTab = TabEntity (tabId = initialTabId, url = " https://example.com" , title = " EX" , skipHome = false , viewed = true , position = 0 )
7029
+ val ntpTabId = " ntp-tab"
7030
+ val ntpTab = TabEntity (tabId = ntpTabId, url = null , title = " " , skipHome = false , viewed = true , position = 0 )
7031
+ whenever(mockTabRepository.getTab(initialTabId)).thenReturn(initialTab)
7032
+ whenever(mockTabRepository.getTab(ntpTabId)).thenReturn(ntpTab)
7033
+ flowSelectedTab.emit(initialTab)
7034
+
7035
+ testee.loadData(tabId = ntpTabId, initialUrl = null , skipHome = false , isExternal = false )
7036
+ mockDuckAiFeatureStateInputScreenOpenAutomaticallyFlow.emit(true )
7037
+ mockHasPendingDuckAiOpenFlow.emit(true )
7038
+
7039
+ // Switch to a new tab with no URL
7040
+ flowSelectedTab.emit(ntpTab)
7041
+
7042
+ // Close Duck.ai
7043
+ mockHasPendingDuckAiOpenFlow.emit(false )
7044
+
7045
+ verify(mockCommandObserver, atLeastOnce()).onChanged(commandCaptor.capture())
7046
+ val commands = commandCaptor.allValues
7047
+ assertTrue(
7048
+ " LaunchInputScreen command should be triggered when Duck.ai is closed" ,
7049
+ commands.any { it is Command .LaunchInputScreen },
7050
+ )
7051
+ }
7052
+
6998
7053
@Test
6999
7054
fun whenEvaluateSerpLogoStateCalledWithDuckDuckGoUrlAndFeatureEnabledThenExtractSerpLogoCommandIssued () {
7000
7055
whenever(mockSerpEasterEggLogoToggles.feature()).thenReturn(mockEnabledToggle)
0 commit comments