You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.7 KiB
Kotlin
107 lines
3.7 KiB
Kotlin
/* 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.sync.ext
|
|
|
|
import io.mockk.every
|
|
import io.mockk.mockk
|
|
import mozilla.components.browser.storage.sync.SyncedDeviceTabs
|
|
import mozilla.components.browser.storage.sync.Tab
|
|
import mozilla.components.browser.storage.sync.TabEntry
|
|
import mozilla.components.concept.sync.DeviceType
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Test
|
|
import org.mozilla.fenix.tabstray.ext.toComposeList
|
|
import org.mozilla.fenix.tabstray.syncedtabs.SyncedTabsListItem
|
|
|
|
class SyncedDeviceTabsTest {
|
|
private val noTabDevice = SyncedDeviceTabs(
|
|
device = mockk {
|
|
every { displayName } returns "Charcoal"
|
|
every { id } returns "123"
|
|
every { deviceType } returns DeviceType.DESKTOP
|
|
},
|
|
tabs = emptyList(),
|
|
)
|
|
|
|
private val oneTabDevice = SyncedDeviceTabs(
|
|
device = mockk {
|
|
every { displayName } returns "Charcoal"
|
|
every { id } returns "1234"
|
|
every { deviceType } returns DeviceType.DESKTOP
|
|
},
|
|
tabs = listOf(
|
|
Tab(
|
|
history = listOf(
|
|
TabEntry(
|
|
title = "Mozilla",
|
|
url = "https://mozilla.org",
|
|
iconUrl = null,
|
|
),
|
|
),
|
|
active = 0,
|
|
lastUsed = 0L,
|
|
inactive = false,
|
|
),
|
|
),
|
|
)
|
|
|
|
private val twoTabDevice = SyncedDeviceTabs(
|
|
device = mockk {
|
|
every { displayName } returns "Emerald"
|
|
every { id } returns "12345"
|
|
every { deviceType } returns DeviceType.MOBILE
|
|
},
|
|
tabs = listOf(
|
|
Tab(
|
|
history = listOf(
|
|
TabEntry(
|
|
title = "Mozilla",
|
|
url = "https://mozilla.org",
|
|
iconUrl = null,
|
|
),
|
|
),
|
|
active = 0,
|
|
lastUsed = 0L,
|
|
inactive = false,
|
|
),
|
|
Tab(
|
|
history = listOf(
|
|
TabEntry(
|
|
title = "Firefox",
|
|
url = "https://firefox.com",
|
|
iconUrl = null,
|
|
),
|
|
),
|
|
active = 0,
|
|
lastUsed = 0L,
|
|
inactive = false,
|
|
),
|
|
),
|
|
)
|
|
|
|
@Test
|
|
fun `GIVEN two synced devices WHEN the compose list is generated THEN two device section is returned`() {
|
|
val syncedDeviceList = listOf(oneTabDevice, twoTabDevice)
|
|
val listData = syncedDeviceList.toComposeList()
|
|
|
|
assertEquals(2, listData.count())
|
|
assertTrue(listData[0] is SyncedTabsListItem.DeviceSection)
|
|
assertEquals(oneTabDevice.tabs.size, (listData[0] as SyncedTabsListItem.DeviceSection).tabs.size)
|
|
assertTrue(listData[1] is SyncedTabsListItem.DeviceSection)
|
|
assertEquals(twoTabDevice.tabs.size, (listData[1] as SyncedTabsListItem.DeviceSection).tabs.size)
|
|
}
|
|
|
|
@Test
|
|
fun `GIVEN one synced device with no tabs WHEN the compose list is generated THEN one device with an empty tabs list is returned`() {
|
|
val syncedDeviceList = listOf(noTabDevice)
|
|
val listData = syncedDeviceList.toComposeList()
|
|
|
|
assertEquals(1, listData.count())
|
|
assertTrue(listData[0] is SyncedTabsListItem.DeviceSection)
|
|
assertEquals(0, (listData[0] as SyncedTabsListItem.DeviceSection).tabs.size)
|
|
}
|
|
}
|