@@ -30,9 +30,15 @@ import com.duckduckgo.common.test.CoroutineTestRule
30
30
import com.duckduckgo.duckchat.api.DuckChatSettingsNoParams
31
31
import com.duckduckgo.duckchat.impl.feature.AIChatImageUploadFeature
32
32
import com.duckduckgo.duckchat.impl.feature.DuckChatFeature
33
- import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.ChoiceSelectionCallback
33
+ import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarCallback
34
34
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarOptionBottomSheetDialog
35
35
import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarOptionBottomSheetDialogFactory
36
+ import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection.SEARCH_AND_AI
37
+ import com.duckduckgo.duckchat.impl.inputscreen.newaddressbaroption.NewAddressBarSelection.SEARCH_ONLY
38
+ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED
39
+ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED
40
+ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelName.DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW
41
+ import com.duckduckgo.duckchat.impl.pixel.DuckChatPixelParameters.NEW_ADDRESS_BAR_SELECTION
36
42
import com.duckduckgo.duckchat.impl.repository.DuckChatFeatureRepository
37
43
import com.duckduckgo.duckchat.impl.ui.DuckChatWebViewActivityWithParams
38
44
import com.duckduckgo.feature.toggles.api.FakeFeatureToggleFactory
@@ -61,6 +67,7 @@ import org.mockito.Mockito.mock
61
67
import org.mockito.Mockito.spy
62
68
import org.mockito.kotlin.any
63
69
import org.mockito.kotlin.argumentCaptor
70
+ import org.mockito.kotlin.times
64
71
import org.mockito.kotlin.verify
65
72
import org.mockito.kotlin.whenever
66
73
@@ -852,10 +859,10 @@ class RealDuckChatTest {
852
859
}
853
860
854
861
@Test
855
- fun `when choice selection callback onSearchAndDuckAiSelected called then setInputScreenUserSetting is called ` () = runTest {
856
- var capturedCallback: ChoiceSelectionCallback ? = null
862
+ fun `when onDisplayed called then DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED pixel is fired ` () = runTest {
863
+ var capturedCallback: NewAddressBarCallback ? = null
857
864
whenever(mockNewAddressBarOptionBottomSheetDialogFactory.create(any(), any(), any())).thenAnswer { invocation ->
858
- capturedCallback = invocation.getArgument<ChoiceSelectionCallback ?>(2 )
865
+ capturedCallback = invocation.getArgument<NewAddressBarCallback ?>(2 )
859
866
mockNewAddressBarOptionBottomSheetDialog
860
867
}
861
868
@@ -871,11 +878,95 @@ class RealDuckChatTest {
871
878
verify(mockNewAddressBarOptionBottomSheetDialog).show()
872
879
873
880
assertNotNull(capturedCallback)
874
- capturedCallback!! .onSearchAndDuckAiSelected()
881
+ capturedCallback!! .onDisplayed()
882
+
883
+ verify(mockPixel).fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_DISPLAYED )
884
+ }
885
+
886
+ @Test
887
+ fun `when onConfirmed called with SEARCH_AND_AI then setInputScreenUserSetting to true and pixel fired with search_and_ai` () = runTest {
888
+ var capturedCallback: NewAddressBarCallback ? = null
889
+ whenever(mockNewAddressBarOptionBottomSheetDialogFactory.create(any(), any(), any())).thenAnswer { invocation ->
890
+ capturedCallback = invocation.getArgument<NewAddressBarCallback ?>(2 )
891
+ mockNewAddressBarOptionBottomSheetDialog
892
+ }
893
+
894
+ val mockContext = mock<Context >()
895
+ testee.showNewAddressBarOptionChoiceScreen(mockContext, true )
896
+
897
+ verify(mockNewAddressBarOptionBottomSheetDialogFactory).create(
898
+ any(),
899
+ any(),
900
+ any(),
901
+ )
902
+
903
+ verify(mockNewAddressBarOptionBottomSheetDialog).show()
904
+
905
+ assertNotNull(capturedCallback)
906
+ capturedCallback!! .onConfirmed(SEARCH_AND_AI )
875
907
876
908
coroutineRule.testScope.advanceUntilIdle()
877
909
878
910
verify(mockDuckChatFeatureRepository).setInputScreenUserSetting(true )
911
+ verify(mockPixel).fire(
912
+ pixel = DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED ,
913
+ parameters = mapOf (NEW_ADDRESS_BAR_SELECTION to " search_and_ai" ),
914
+ )
915
+ }
916
+
917
+ @Test
918
+ fun `when onConfirmed called with SEARCH_ONLY then DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED pixel is fired with search_only` () = runTest {
919
+ var capturedCallback: NewAddressBarCallback ? = null
920
+ whenever(mockNewAddressBarOptionBottomSheetDialogFactory.create(any(), any(), any())).thenAnswer { invocation ->
921
+ capturedCallback = invocation.getArgument<NewAddressBarCallback ?>(2 )
922
+ mockNewAddressBarOptionBottomSheetDialog
923
+ }
924
+
925
+ val mockContext = mock<Context >()
926
+ testee.showNewAddressBarOptionChoiceScreen(mockContext, true )
927
+
928
+ verify(mockNewAddressBarOptionBottomSheetDialogFactory).create(
929
+ any(),
930
+ any(),
931
+ any(),
932
+ )
933
+
934
+ verify(mockNewAddressBarOptionBottomSheetDialog).show()
935
+
936
+ assertNotNull(capturedCallback)
937
+ capturedCallback!! .onConfirmed(SEARCH_ONLY )
938
+
939
+ verify(mockDuckChatFeatureRepository, times(0 )).setInputScreenUserSetting(any())
940
+ verify(mockPixel).fire(
941
+ pixel = DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_CONFIRMED ,
942
+ parameters = mapOf (NEW_ADDRESS_BAR_SELECTION to " search_only" ),
943
+ )
944
+ }
945
+
946
+ @Test
947
+ fun `when onNotNow called then DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW pixel is fired` () = runTest {
948
+ var capturedCallback: NewAddressBarCallback ? = null
949
+ whenever(mockNewAddressBarOptionBottomSheetDialogFactory.create(any(), any(), any())).thenAnswer { invocation ->
950
+ capturedCallback = invocation.getArgument<NewAddressBarCallback ?>(2 )
951
+ mockNewAddressBarOptionBottomSheetDialog
952
+ }
953
+
954
+ val mockContext = mock<Context >()
955
+ testee.showNewAddressBarOptionChoiceScreen(mockContext, true )
956
+
957
+ verify(mockNewAddressBarOptionBottomSheetDialogFactory).create(
958
+ any(),
959
+ any(),
960
+ any(),
961
+ )
962
+
963
+ verify(mockNewAddressBarOptionBottomSheetDialog).show()
964
+
965
+ assertNotNull(capturedCallback)
966
+ capturedCallback!! .onNotNow()
967
+
968
+ verify(mockDuckChatFeatureRepository, times(0 )).setInputScreenUserSetting(any())
969
+ verify(mockPixel).fire(DUCK_CHAT_NEW_ADDRESS_BAR_PICKER_NOT_NOW )
879
970
}
880
971
881
972
companion object {
0 commit comments