For #24006 - Return a null change payload if the new top sites list is larger than the old

upstream-sync
Gabriel Luong 2 years ago committed by mergify[bot]
parent e643591338
commit a6b5ab6726

@ -21,10 +21,10 @@ import org.mozilla.fenix.components.tips.Tip
import org.mozilla.fenix.home.BottomSpacerViewHolder import org.mozilla.fenix.home.BottomSpacerViewHolder
import org.mozilla.fenix.home.HomeFragmentStore import org.mozilla.fenix.home.HomeFragmentStore
import org.mozilla.fenix.home.TopPlaceholderViewHolder import org.mozilla.fenix.home.TopPlaceholderViewHolder
import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder
import org.mozilla.fenix.home.pocket.PocketCategoriesViewHolder import org.mozilla.fenix.home.pocket.PocketCategoriesViewHolder
import org.mozilla.fenix.home.pocket.PocketRecommendationsHeaderViewHolder import org.mozilla.fenix.home.pocket.PocketRecommendationsHeaderViewHolder
import org.mozilla.fenix.home.pocket.PocketStoriesViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksHeaderViewHolder
import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksViewHolder import org.mozilla.fenix.home.recentbookmarks.view.RecentBookmarksViewHolder
import org.mozilla.fenix.home.recenttabs.view.RecentTabViewHolder import org.mozilla.fenix.home.recenttabs.view.RecentTabViewHolder
import org.mozilla.fenix.home.recenttabs.view.RecentTabsHeaderViewHolder import org.mozilla.fenix.home.recenttabs.view.RecentTabsHeaderViewHolder
@ -84,11 +84,13 @@ sealed class AdapterItem(@LayoutRes val viewType: Int) {
* *
* See https://github.com/mozilla-mobile/fenix/pull/20189#issuecomment-877124730 * See https://github.com/mozilla-mobile/fenix/pull/20189#issuecomment-877124730
*/ */
@Suppress("ComplexCondition")
override fun getChangePayload(newItem: AdapterItem): Any? { override fun getChangePayload(newItem: AdapterItem): Any? {
val newTopSites = (newItem as? TopSitePager) val newTopSites = (newItem as? TopSitePager)
val oldTopSites = (this as? TopSitePager) val oldTopSites = (this as? TopSitePager)
if (newTopSites == null || oldTopSites == null || if (newTopSites == null || oldTopSites == null ||
newTopSites.topSites.size > oldTopSites.topSites.size ||
(newTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE) (newTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE)
!= (oldTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE) != (oldTopSites.topSites.size > TopSitePagerViewHolder.TOP_SITES_PER_PAGE)
) { ) {

@ -49,6 +49,18 @@ class SessionControlAdapterTest {
assertNull(result) assertNull(result)
} }
@Test
fun `GIVEN topSitePager with 3 topSites WHEN getChangePayload with 5 items THEN return null`() {
val newItem = TopSitePager(mockk(relaxed = true))
val topSitePager = TopSitePager(mockk(relaxed = true))
every { topSitePager.topSites.size } returns 3
every { newItem.topSites.size } returns 5
val result = topSitePager.getChangePayload(newItem)
assertNull(result)
}
@Test @Test
fun `GIVEN two topSites WHEN getChangePayload called with one changed item THEN return TopSitePagerPayload with changes`() { fun `GIVEN two topSites WHEN getChangePayload called with one changed item THEN return TopSitePagerPayload with changes`() {
val topSite0 = TopSite.Frecent(-1, "topSite0", "", 0) val topSite0 = TopSite.Frecent(-1, "topSite0", "", 0)

Loading…
Cancel
Save