[fenix] FNX-14513 ⁃ For https://github.com/mozilla-mobile/fenix/issues/12862: Use concept-menu in library (https://github.com/mozilla-mobile/fenix/pull/13332)
parent
f26917773c
commit
0e2cdbb0e0
@ -0,0 +1,98 @@
|
||||
/* 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.library.bookmarks
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.concept.menu.candidate.TextStyle
|
||||
import mozilla.components.concept.storage.BookmarkNodeType
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.library.bookmarks.BookmarkItemMenu.Item
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class BookmarkItemMenuTest {
|
||||
|
||||
private lateinit var context: Context
|
||||
private lateinit var onItemTapped: (Item) -> Unit
|
||||
private lateinit var menu: BookmarkItemMenu
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
context = ContextThemeWrapper(testContext, R.style.NormalTheme)
|
||||
onItemTapped = mockk(relaxed = true)
|
||||
menu = BookmarkItemMenu(context, onItemTapped)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `delete item has special styling`() {
|
||||
val deleteItem = menu.menuItems(BookmarkNodeType.SEPARATOR).last()
|
||||
assertEquals("Delete", deleteItem.text)
|
||||
assertEquals(
|
||||
TextStyle(color = context.getColorFromAttr(R.attr.destructive)),
|
||||
deleteItem.textStyle
|
||||
)
|
||||
|
||||
deleteItem.onClick()
|
||||
verify { onItemTapped(Item.Delete) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `edit item appears for folders`() {
|
||||
val folderItems = menu.menuItems(BookmarkNodeType.FOLDER)
|
||||
assertEquals(2, folderItems.size)
|
||||
val (edit, delete) = folderItems
|
||||
|
||||
assertEquals("Edit", edit.text)
|
||||
edit.onClick()
|
||||
verify { onItemTapped(Item.Edit) }
|
||||
|
||||
assertEquals("Delete", delete.text)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `all item appears for sites`() {
|
||||
val siteItems = menu.menuItems(BookmarkNodeType.ITEM)
|
||||
assertEquals(6, siteItems.size)
|
||||
val (edit, copy, share, openInNewTab, openInPrivateTab, delete) = siteItems
|
||||
|
||||
assertEquals("Edit", edit.text)
|
||||
assertEquals("Copy", copy.text)
|
||||
assertEquals("Share", share.text)
|
||||
assertEquals("Open in new tab", openInNewTab.text)
|
||||
assertEquals("Open in private tab", openInPrivateTab.text)
|
||||
assertEquals("Delete", delete.text)
|
||||
|
||||
edit.onClick()
|
||||
verify { onItemTapped(Item.Edit) }
|
||||
|
||||
copy.onClick()
|
||||
verify { onItemTapped(Item.Copy) }
|
||||
|
||||
share.onClick()
|
||||
verify { onItemTapped(Item.Share) }
|
||||
|
||||
openInNewTab.onClick()
|
||||
verify { onItemTapped(Item.OpenInNewTab) }
|
||||
|
||||
openInPrivateTab.onClick()
|
||||
verify { onItemTapped(Item.OpenInPrivateTab) }
|
||||
|
||||
delete.onClick()
|
||||
verify { onItemTapped(Item.Delete) }
|
||||
}
|
||||
|
||||
private operator fun <T> List<T>.component6(): T {
|
||||
return get(5)
|
||||
}
|
||||
}
|
@ -0,0 +1,76 @@
|
||||
/* 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.library.history
|
||||
|
||||
import android.content.Context
|
||||
import androidx.appcompat.view.ContextThemeWrapper
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verify
|
||||
import mozilla.components.concept.menu.candidate.TextStyle
|
||||
import mozilla.components.support.ktx.android.content.getColorFromAttr
|
||||
import mozilla.components.support.test.robolectric.testContext
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
||||
import org.mozilla.fenix.library.history.HistoryItemMenu.Item
|
||||
|
||||
@RunWith(FenixRobolectricTestRunner::class)
|
||||
class HistoryItemMenuTest {
|
||||
|
||||
private lateinit var context: Context
|
||||
private lateinit var onItemTapped: (Item) -> Unit
|
||||
private lateinit var menu: HistoryItemMenu
|
||||
|
||||
@Before
|
||||
fun setup() {
|
||||
context = ContextThemeWrapper(testContext, R.style.NormalTheme)
|
||||
onItemTapped = mockk(relaxed = true)
|
||||
menu = HistoryItemMenu(context, onItemTapped)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `delete item has special styling`() {
|
||||
val deleteItem = menu.menuItems().last()
|
||||
assertEquals("Delete", deleteItem.text)
|
||||
assertEquals(
|
||||
TextStyle(color = context.getColorFromAttr(R.attr.destructive)),
|
||||
deleteItem.textStyle
|
||||
)
|
||||
|
||||
deleteItem.onClick()
|
||||
verify { onItemTapped(Item.Delete) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `builds menu items`() {
|
||||
val items = menu.menuItems()
|
||||
assertEquals(5, items.size)
|
||||
val (copy, share, openInNewTab, openInPrivateTab, delete) = items
|
||||
|
||||
assertEquals("Copy", copy.text)
|
||||
assertEquals("Share", share.text)
|
||||
assertEquals("Open in new tab", openInNewTab.text)
|
||||
assertEquals("Open in private tab", openInPrivateTab.text)
|
||||
assertEquals("Delete", delete.text)
|
||||
|
||||
copy.onClick()
|
||||
verify { onItemTapped(Item.Copy) }
|
||||
|
||||
share.onClick()
|
||||
verify { onItemTapped(Item.Share) }
|
||||
|
||||
openInNewTab.onClick()
|
||||
verify { onItemTapped(Item.OpenInNewTab) }
|
||||
|
||||
openInPrivateTab.onClick()
|
||||
verify { onItemTapped(Item.OpenInPrivateTab) }
|
||||
|
||||
delete.onClick()
|
||||
verify { onItemTapped(Item.Delete) }
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue