175 lines
5.3 KiB
Kotlin
175 lines
5.3 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.collections
|
|
|
|
import android.view.View
|
|
import android.view.ViewGroup
|
|
import android.widget.Button
|
|
import android.widget.ImageButton
|
|
import android.widget.TextView
|
|
import androidx.core.view.isVisible
|
|
import io.mockk.Called
|
|
import io.mockk.mockk
|
|
import io.mockk.verify
|
|
import mozilla.components.feature.tab.collections.TabCollection
|
|
import mozilla.components.support.test.robolectric.testContext
|
|
import org.junit.Assert.assertEquals
|
|
import org.junit.Assert.assertFalse
|
|
import org.junit.Assert.assertTrue
|
|
import org.junit.Before
|
|
import org.junit.Test
|
|
import org.junit.runner.RunWith
|
|
import org.mozilla.fenix.helpers.FenixRobolectricTestRunner
|
|
import org.mozilla.fenix.home.Tab
|
|
|
|
@RunWith(FenixRobolectricTestRunner::class)
|
|
class CollectionCreationBottomBarViewTest {
|
|
|
|
private lateinit var bottomBarView: CollectionCreationBottomBarView
|
|
private lateinit var interactor: CollectionCreationInteractor
|
|
private lateinit var layout: ViewGroup
|
|
private lateinit var iconButton: ImageButton
|
|
private lateinit var textView: TextView
|
|
private lateinit var saveButton: Button
|
|
|
|
@Before
|
|
fun setup() {
|
|
interactor = mockk(relaxed = true)
|
|
layout = mockk(relaxed = true)
|
|
iconButton = ImageButton(testContext)
|
|
textView = TextView(testContext)
|
|
saveButton = Button(testContext)
|
|
|
|
bottomBarView = CollectionCreationBottomBarView(
|
|
interactor,
|
|
layout,
|
|
iconButton,
|
|
textView,
|
|
saveButton
|
|
)
|
|
}
|
|
|
|
@Test
|
|
fun testIconButtonUpdateForSelectTabs() {
|
|
bottomBarView.update(SaveCollectionStep.SelectTabs, CollectionCreationState(0))
|
|
|
|
verify { layout.setOnClickListener(null) }
|
|
verify { layout.isClickable = false }
|
|
|
|
assertEquals("Close", iconButton.contentDescription)
|
|
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_YES, iconButton.importantForAccessibility)
|
|
|
|
iconButton.performClick()
|
|
verify { interactor.close() }
|
|
}
|
|
|
|
@Test
|
|
fun testIconButtonUpdateForSelectCollection() {
|
|
bottomBarView.update(SaveCollectionStep.SelectCollection, CollectionCreationState(0))
|
|
|
|
verify { layout wasNot Called }
|
|
|
|
assertEquals(null, iconButton.contentDescription)
|
|
assertEquals(View.IMPORTANT_FOR_ACCESSIBILITY_NO, iconButton.importantForAccessibility)
|
|
|
|
iconButton.performClick()
|
|
verify { interactor.addNewCollection() }
|
|
}
|
|
|
|
@Test
|
|
fun testTextViewUpdateForSelectTabs() {
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabs = emptySet()
|
|
)
|
|
)
|
|
assertEquals("Select tabs to save", textView.text)
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabs = setOf(mockk())
|
|
)
|
|
)
|
|
assertEquals("1 tab selected", textView.text)
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabs = setOf(mockk(), mockk())
|
|
)
|
|
)
|
|
assertEquals("2 tabs selected", textView.text)
|
|
}
|
|
|
|
@Test
|
|
fun testTextViewUpdateForSelectCollection() {
|
|
bottomBarView.update(SaveCollectionStep.SelectCollection, CollectionCreationState(0))
|
|
|
|
assertEquals("Add new collection", textView.text)
|
|
}
|
|
|
|
@Test
|
|
fun testSaveButtonUpdateForSelectTabs() {
|
|
val collection = mockk<TabCollection>()
|
|
val tabs = setOf<Tab>(mockk(), mockk())
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabCollection = null,
|
|
selectedTabs = emptySet()
|
|
)
|
|
)
|
|
assertFalse(saveButton.isVisible)
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabCollection = collection,
|
|
selectedTabs = emptySet()
|
|
)
|
|
)
|
|
assertFalse(saveButton.isVisible)
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabCollection = null,
|
|
selectedTabs = tabs
|
|
)
|
|
)
|
|
assertTrue(saveButton.isVisible)
|
|
saveButton.performClick()
|
|
verify { interactor.saveTabsToCollection(tabs.toList()) }
|
|
|
|
bottomBarView.update(
|
|
SaveCollectionStep.SelectTabs,
|
|
CollectionCreationState(
|
|
0,
|
|
selectedTabCollection = collection,
|
|
selectedTabs = tabs
|
|
)
|
|
)
|
|
assertTrue(saveButton.isVisible)
|
|
saveButton.performClick()
|
|
verify { interactor.selectCollection(collection, tabs.toList()) }
|
|
}
|
|
|
|
@Test
|
|
fun testSaveButtonUpdateForSelectCollection() {
|
|
bottomBarView.update(SaveCollectionStep.SelectCollection, CollectionCreationState(0))
|
|
|
|
assertFalse(saveButton.isVisible)
|
|
}
|
|
}
|