Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@

package com.duckduckgo.duckchat.impl.inputscreen.ui

import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import com.duckduckgo.app.di.ActivityContext
import com.duckduckgo.di.scopes.ActivityScope
import com.duckduckgo.duckchat.api.inputscreen.InputScreenActivityParams
import com.duckduckgo.duckchat.impl.DuckChatInternal
Expand All @@ -37,6 +40,7 @@ interface InputScreenConfigResolver {
@SingleInstanceIn(scope = ActivityScope::class)
class InputScreenConfigResolverImpl @Inject constructor(
private val duckChatInternal: DuckChatInternal,
@ActivityContext private val activityContext: Context,
) : InputScreenConfigResolver {
companion object {
fun useTopBar(
Expand All @@ -59,5 +63,5 @@ class InputScreenConfigResolverImpl @Inject constructor(
useTopBar(
isTopOmnibar = isTopOmnibar,
duckChatInternal = duckChatInternal,
)
) || activityContext.resources.configuration.orientation == Configuration.ORIENTATION_LANDSCAPE
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,10 @@

package com.duckduckgo.duckchat.impl.inputscreen.ui

import android.content.Context
import android.content.Intent
import android.content.res.Configuration
import android.content.res.Resources
import androidx.test.ext.junit.runners.AndroidJUnit4
import com.duckduckgo.duckchat.api.inputscreen.InputScreenActivityParams
import com.duckduckgo.duckchat.impl.DuckChatInternal
Expand All @@ -33,13 +36,19 @@ import org.mockito.kotlin.whenever
class InputScreenConfigResolverTest {
private val duckChatInternal: DuckChatInternal = mock()
private val inputScreenBottomBarEnabled = MutableStateFlow(false)
private val mockActivityContext: Context = mock()
private val mockResources: Resources = mock()
private val configuration = Configuration()

private lateinit var inputScreenConfigResolver: InputScreenConfigResolverImpl

@Before
fun setup() {
whenever(duckChatInternal.inputScreenBottomBarEnabled).thenReturn(inputScreenBottomBarEnabled)
inputScreenConfigResolver = InputScreenConfigResolverImpl(duckChatInternal)
whenever(mockActivityContext.resources).thenReturn(mockResources)
whenever(mockResources.configuration).thenReturn(configuration)
configuration.orientation = Configuration.ORIENTATION_PORTRAIT
inputScreenConfigResolver = InputScreenConfigResolverImpl(duckChatInternal, mockActivityContext)
}

@Test
Expand Down Expand Up @@ -118,4 +127,68 @@ class InputScreenConfigResolverTest {

assertFalse(inputScreenConfigResolver.useTopBar())
}

@Test
fun `when landscape and isTopOmnibar true and bottom bar enabled then useTopBar returns true`() {
configuration.orientation = Configuration.ORIENTATION_LANDSCAPE

val intent = Intent().apply {
putExtra(
"ACTIVITY_SERIALIZABLE_PARAMETERS_ARG",
InputScreenActivityParams(query = "", isTopOmnibar = true),
)
}
inputScreenConfigResolver.onInputScreenCreated(intent)
inputScreenBottomBarEnabled.value = true

assertTrue(inputScreenConfigResolver.useTopBar())
}

@Test
fun `when landscape and isTopOmnibar true and bottom bar disabled then useTopBar returns true`() {
configuration.orientation = Configuration.ORIENTATION_LANDSCAPE

val intent = Intent().apply {
putExtra(
"ACTIVITY_SERIALIZABLE_PARAMETERS_ARG",
InputScreenActivityParams(query = "", isTopOmnibar = true),
)
}
inputScreenConfigResolver.onInputScreenCreated(intent)
inputScreenBottomBarEnabled.value = false

assertTrue(inputScreenConfigResolver.useTopBar())
}

@Test
fun `when landscape and isTopOmnibar false and bottom bar enabled then useTopBar returns true`() {
configuration.orientation = Configuration.ORIENTATION_LANDSCAPE

val intent = Intent().apply {
putExtra(
"ACTIVITY_SERIALIZABLE_PARAMETERS_ARG",
InputScreenActivityParams(query = "", isTopOmnibar = false),
)
}
inputScreenConfigResolver.onInputScreenCreated(intent)
inputScreenBottomBarEnabled.value = true

assertTrue(inputScreenConfigResolver.useTopBar())
}

@Test
fun `when landscape and isTopOmnibar false and bottom bar disabled then useTopBar returns true`() {
configuration.orientation = Configuration.ORIENTATION_LANDSCAPE

val intent = Intent().apply {
putExtra(
"ACTIVITY_SERIALIZABLE_PARAMETERS_ARG",
InputScreenActivityParams(query = "", isTopOmnibar = false),
)
}
inputScreenConfigResolver.onInputScreenCreated(intent)
inputScreenBottomBarEnabled.value = false

assertTrue(inputScreenConfigResolver.useTopBar())
}
}
Loading