diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 6c3b2160d..65ed19cfe 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -21,6 +21,7 @@ import android.view.accessibility.AccessibilityEvent import android.widget.Button import android.widget.LinearLayout import android.widget.PopupWindow +import androidx.annotation.VisibleForTesting import androidx.appcompat.app.AlertDialog import androidx.appcompat.content.res.AppCompatResources import androidx.constraintlayout.widget.ConstraintLayout @@ -273,11 +274,12 @@ class HomeFragment : Fragment() { * Returns a [TopSitesConfig] which specifies how many top sites to display and whether or * not frequently visited sites should be displayed. */ - private fun getTopSitesConfig(): TopSitesConfig { + @VisibleForTesting + internal fun getTopSitesConfig(): TopSitesConfig { val settings = requireContext().settings() return TopSitesConfig( settings.topSitesMaxLimit, - FrecencyThresholdOption.SKIP_ONE_TIME_PAGES + if (settings.showTopFrecentSites) FrecencyThresholdOption.SKIP_ONE_TIME_PAGES else null ) } @@ -428,7 +430,8 @@ class HomeFragment : Fragment() { if (searchEngine != null) { val iconSize = requireContext().resources.getDimensionPixelSize(R.dimen.preference_icon_drawable_size) - val searchIcon = BitmapDrawable(requireContext().resources, searchEngine.icon) + val searchIcon = + BitmapDrawable(requireContext().resources, searchEngine.icon) searchIcon.setBounds(0, 0, iconSize, iconSize) search_engine_icon?.setImageDrawable(searchIcon) } else { diff --git a/app/src/test/java/org/mozilla/fenix/home/HomeFragmentTest.kt b/app/src/test/java/org/mozilla/fenix/home/HomeFragmentTest.kt new file mode 100644 index 000000000..8f24fa8e8 --- /dev/null +++ b/app/src/test/java/org/mozilla/fenix/home/HomeFragmentTest.kt @@ -0,0 +1,68 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.home + +import android.content.Context +import io.mockk.every +import io.mockk.mockk +import io.mockk.spyk +import kotlinx.coroutines.ExperimentalCoroutinesApi +import org.junit.Assert +import org.junit.Before +import org.junit.Test +import org.junit.runner.RunWith +import org.mozilla.fenix.ext.settings +import org.mozilla.fenix.helpers.FenixRobolectricTestRunner +import org.mozilla.fenix.utils.Settings + +@ExperimentalCoroutinesApi +@RunWith(FenixRobolectricTestRunner::class) +class HomeFragmentTest { + + private lateinit var settings: Settings + private lateinit var context: Context + private lateinit var homeFragment: HomeFragment + + @Before + fun setup() { + context = mockk(relaxed = true) + settings = mockk(relaxed = true) + + homeFragment = spyk(HomeFragment()) + + every { homeFragment.context } returns context + every { context.settings() } returns settings + } + + @Test + fun `GIVEN showTopFrecentSites is false WHEN getTopSitesConfig is called THEN it returns TopSitesConfig with null frecencyConfig`() { + every { settings.showTopFrecentSites } returns false + every { settings.topSitesMaxLimit } returns 10 + + val topSitesConfig = homeFragment.getTopSitesConfig() + + Assert.assertNull(topSitesConfig.frecencyConfig) + } + + @Test + fun `GIVEN showTopFrecentSites is true WHEN getTopSitesConfig is called THEN it returns TopSitesConfig with non-null frecencyConfig`() { + every { context.settings().showTopFrecentSites } returns true + every { settings.topSitesMaxLimit } returns 10 + + val topSitesConfig = homeFragment.getTopSitesConfig() + + Assert.assertNotNull(topSitesConfig.frecencyConfig) + } + + @Test + fun `GIVEN a topSitesMaxLimit WHEN getTopSitesConfig is called THEN it returns TopSitesConfig with totalSites = topSitesMaxLimit`() { + val topSitesMaxLimit = 10 + every { settings.topSitesMaxLimit } returns topSitesMaxLimit + + val topSitesConfig = homeFragment.getTopSitesConfig() + + Assert.assertEquals(topSitesMaxLimit, topSitesConfig.totalSites) + } +}