[fenix] Closes https://github.com/mozilla-mobile/fenix/issues/19090: Show snackbar on adding to bookmarks from tabs tray (https://github.com/mozilla-mobile/fenix/pull/19807)
parent
3225b7ae30
commit
125e70ae1b
@ -0,0 +1,49 @@
|
||||
/* 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.tabstray.ext
|
||||
|
||||
import android.view.View
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.tabstray.TabsTrayFragment.Companion.ELEVATION
|
||||
|
||||
internal fun FenixSnackbar.message(
|
||||
tabSize: Int,
|
||||
isNewCollection: Boolean = false
|
||||
): FenixSnackbar {
|
||||
val stringRes = when {
|
||||
isNewCollection -> {
|
||||
R.string.create_collection_tabs_saved_new_collection
|
||||
}
|
||||
tabSize > 1 -> {
|
||||
R.string.create_collection_tabs_saved
|
||||
}
|
||||
else -> {
|
||||
R.string.create_collection_tab_saved
|
||||
}
|
||||
}
|
||||
setText(context.getString(stringRes))
|
||||
return this
|
||||
}
|
||||
|
||||
internal inline fun FenixSnackbar.anchorWithAction(
|
||||
anchor: View?,
|
||||
crossinline action: () -> Unit
|
||||
): FenixSnackbar {
|
||||
anchorView = anchor
|
||||
view.elevation = ELEVATION
|
||||
|
||||
setAction(context.getString(R.string.create_collection_view)) {
|
||||
action.invoke()
|
||||
}
|
||||
|
||||
return this
|
||||
}
|
||||
|
||||
internal fun FenixSnackbar.Companion.make(view: View) = make(
|
||||
duration = LENGTH_LONG,
|
||||
isDisplayedWithBrowserToolbar = true,
|
||||
view = view
|
||||
)
|
@ -0,0 +1,10 @@
|
||||
/* 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.tabstray.ext
|
||||
|
||||
/**
|
||||
* A helper that will return the default value of -1L for the home fragment navigation if Long is null.
|
||||
*/
|
||||
internal fun Long?.orDefault() = this ?: -1L
|
@ -0,0 +1,66 @@
|
||||
package org.mozilla.fenix.tabstray.ext
|
||||
|
||||
import android.content.Context
|
||||
import android.view.View
|
||||
import io.mockk.every
|
||||
import io.mockk.mockk
|
||||
import io.mockk.verifyOrder
|
||||
import org.junit.Test
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.components.FenixSnackbar
|
||||
import org.mozilla.fenix.tabstray.TabsTrayFragment.Companion.ELEVATION
|
||||
|
||||
class FenixSnackbarKtTest {
|
||||
|
||||
@Test
|
||||
fun `WHEN message is called with different parameters THEN correct text will be set`() {
|
||||
val mockContext: Context = mockk {
|
||||
every { getString(R.string.create_collection_tabs_saved_new_collection) }
|
||||
.answers { "test1" }
|
||||
every { getString(R.string.create_collection_tabs_saved) }
|
||||
.answers { "test2" }
|
||||
every { getString(R.string.create_collection_tab_saved) }
|
||||
.answers { "test3" }
|
||||
}
|
||||
val snackbar: FenixSnackbar = mockk {
|
||||
every { context }.answers { mockContext }
|
||||
}
|
||||
every { snackbar.setText(any()) }.answers { snackbar }
|
||||
|
||||
snackbar.message(1, true)
|
||||
snackbar.message(2, false)
|
||||
snackbar.message(1, false)
|
||||
|
||||
verifyOrder {
|
||||
snackbar.setText("test1")
|
||||
snackbar.setText("test2")
|
||||
snackbar.setText("test3")
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN anchorWithAction is called THEN correct text will be set`() {
|
||||
val mockContext: Context = mockk {
|
||||
every { getString(R.string.create_collection_view) }
|
||||
.answers { "test1" }
|
||||
}
|
||||
val anchor: View = mockk(relaxed = true)
|
||||
val view: View = mockk(relaxed = true)
|
||||
val snackbar: FenixSnackbar = mockk {
|
||||
every { context }.answers { mockContext }
|
||||
}
|
||||
|
||||
every { snackbar.setAnchorView(anchor) }.answers { snackbar }
|
||||
every { snackbar.view }.answers { view }
|
||||
every { snackbar.setAction(any(), any()) }.answers { mockk(relaxed = true) }
|
||||
every { snackbar.anchorView }.answers { anchor }
|
||||
|
||||
snackbar.anchorWithAction(anchor, mockk(relaxed = true))
|
||||
|
||||
verifyOrder {
|
||||
snackbar.anchorView = anchor
|
||||
view.elevation = ELEVATION
|
||||
snackbar.setAction("test1", any())
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
package org.mozilla.fenix.tabstray.ext
|
||||
|
||||
import org.junit.Assert.assertEquals
|
||||
import org.junit.Test
|
||||
|
||||
class LongKtTest {
|
||||
|
||||
@Test
|
||||
fun `WHEN value is null THEN default is returned`() {
|
||||
val value: Long? = null
|
||||
|
||||
assertEquals(value.orDefault(), -1L)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `WHEN value is not null THEN value is returned`() {
|
||||
val value: Long? = 100L
|
||||
|
||||
assertEquals(value.orDefault(), 100L)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue