diff --git a/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt b/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt index 0538b48e52c4..6acdc1d6bfcf 100644 --- a/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt +++ b/app/src/main/java/com/duckduckgo/app/browser/BrowserViewModel.kt @@ -509,7 +509,8 @@ class BrowserViewModel @Inject constructor( ) { val duckAiFullScreenMode = duckAiFeatureState.showFullScreenMode.value logcat(INFO) { "Duck.ai openDuckChat duckChatSessionActive $duckChatSessionActive" } - sendCommand(OpenDuckChat(duckChatUrl, duckChatSessionActive, withTransition, tabs.value.size, duckAiFullScreenMode)) + val tabsCount = tabs.value?.size ?: 0 + sendCommand(OpenDuckChat(duckChatUrl, duckChatSessionActive, withTransition, tabsCount, duckAiFullScreenMode)) } } diff --git a/app/src/test/java/com/duckduckgo/app/browser/BrowserViewModelTest.kt b/app/src/test/java/com/duckduckgo/app/browser/BrowserViewModelTest.kt index 96a2ecb762d9..017e74b2db46 100644 --- a/app/src/test/java/com/duckduckgo/app/browser/BrowserViewModelTest.kt +++ b/app/src/test/java/com/duckduckgo/app/browser/BrowserViewModelTest.kt @@ -612,6 +612,39 @@ class BrowserViewModelTest { } } + @Test + fun `when openDuckChat called and tabs are null then command is sent with 0 tabs`() = runTest { + doReturn(MutableLiveData(null)).whenever(mockTabRepository).liveTabs + initTestee() + + testee.openDuckChat(duckChatUrl = "duck://chat", duckChatSessionActive = false, withTransition = false) + + testee.commands.test { + val command = awaitItem() + assertTrue(command is Command.OpenDuckChat) + command as Command.OpenDuckChat + assertEquals(0, command.tabs) + cancelAndIgnoreRemainingEvents() + } + } + + @Test + fun `when openDuckChat called then command is sent with correct tab count`() = runTest { + val tabs = listOf(TabEntity("1", "", "", position = 0)) + doReturn(MutableLiveData(tabs)).whenever(mockTabRepository).liveTabs + initTestee() + + testee.openDuckChat(duckChatUrl = "duck://chat", duckChatSessionActive = false, withTransition = false) + + testee.commands.test { + val command = awaitItem() + assertTrue(command is Command.OpenDuckChat) + command as Command.OpenDuckChat + assertEquals(tabs.size, command.tabs) + cancelAndIgnoreRemainingEvents() + } + } + private fun initTestee() { testee = BrowserViewModel( tabRepository = mockTabRepository,