Add test for initial logins list state

pull/184/head
Tiger Oakes 4 years ago committed by ekager
parent f2a6aa4f25
commit acbad66f45

@ -10,6 +10,7 @@ import mozilla.components.concept.storage.Login
import mozilla.components.lib.state.Action import mozilla.components.lib.state.Action
import mozilla.components.lib.state.State import mozilla.components.lib.state.State
import mozilla.components.lib.state.Store import mozilla.components.lib.state.Store
import org.mozilla.fenix.utils.Settings
/** /**
* Class representing a parcelable saved logins item * Class representing a parcelable saved logins item
@ -80,6 +81,16 @@ data class LoginsListState(
val duplicateLogins: List<SavedLogin> val duplicateLogins: List<SavedLogin>
) : State ) : State
fun createInitialLoginsListState(settings: Settings) = LoginsListState(
isLoading = true,
loginList = emptyList(),
filteredItems = emptyList(),
searchedForText = null,
sortingStrategy = settings.savedLoginsSortingStrategy,
highlightedItem = settings.savedLoginsMenuHighlightedItem,
duplicateLogins = emptyList() // assume on load there are no dupes
)
/** /**
* Handles changes in the saved logins list, including updates and filtering. * Handles changes in the saved logins list, including updates and filtering.
*/ */

@ -33,11 +33,11 @@ import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.settings.logins.LoginsAction import org.mozilla.fenix.settings.logins.LoginsAction
import org.mozilla.fenix.settings.logins.LoginsFragmentStore import org.mozilla.fenix.settings.logins.LoginsFragmentStore
import org.mozilla.fenix.settings.logins.LoginsListState
import org.mozilla.fenix.settings.logins.SavedLogin import org.mozilla.fenix.settings.logins.SavedLogin
import org.mozilla.fenix.settings.logins.togglePasswordReveal
import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
import org.mozilla.fenix.settings.logins.createInitialLoginsListState
import org.mozilla.fenix.settings.logins.interactor.EditLoginInteractor import org.mozilla.fenix.settings.logins.interactor.EditLoginInteractor
import org.mozilla.fenix.settings.logins.togglePasswordReveal
/** /**
* Displays the editable saved login information for a single website * Displays the editable saved login information for a single website
@ -69,15 +69,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
loginsFragmentStore = StoreProvider.get(this) { loginsFragmentStore = StoreProvider.get(this) {
LoginsFragmentStore( LoginsFragmentStore(
LoginsListState( createInitialLoginsListState(requireContext().settings())
isLoading = true,
loginList = listOf(),
filteredItems = listOf(),
searchedForText = null,
sortingStrategy = requireContext().settings().savedLoginsSortingStrategy,
highlightedItem = requireContext().settings().savedLoginsMenuHighlightedItem,
duplicateLogins = listOf()
)
) )
} }

@ -41,6 +41,7 @@ import org.mozilla.fenix.settings.logins.LoginsFragmentStore
import org.mozilla.fenix.settings.logins.LoginsListState import org.mozilla.fenix.settings.logins.LoginsListState
import org.mozilla.fenix.settings.logins.SavedLogin import org.mozilla.fenix.settings.logins.SavedLogin
import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
import org.mozilla.fenix.settings.logins.createInitialLoginsListState
import org.mozilla.fenix.settings.logins.interactor.LoginDetailInteractor import org.mozilla.fenix.settings.logins.interactor.LoginDetailInteractor
import org.mozilla.fenix.settings.logins.togglePasswordReveal import org.mozilla.fenix.settings.logins.togglePasswordReveal
import org.mozilla.fenix.settings.logins.view.LoginDetailView import org.mozilla.fenix.settings.logins.view.LoginDetailView
@ -68,15 +69,7 @@ class LoginDetailFragment : Fragment(R.layout.fragment_login_detail) {
val view = inflater.inflate(R.layout.fragment_login_detail, container, false) val view = inflater.inflate(R.layout.fragment_login_detail, container, false)
savedLoginsStore = StoreProvider.get(this) { savedLoginsStore = StoreProvider.get(this) {
LoginsFragmentStore( LoginsFragmentStore(
LoginsListState( createInitialLoginsListState(requireContext().settings())
isLoading = true,
loginList = listOf(),
filteredItems = listOf(),
searchedForText = null,
sortingStrategy = requireContext().settings().savedLoginsSortingStrategy,
highlightedItem = requireContext().settings().savedLoginsMenuHighlightedItem,
duplicateLogins = listOf() // assume on load there are no dupes
)
) )
} }
loginDetailView = LoginDetailView( loginDetailView = LoginDetailView(

@ -35,11 +35,11 @@ import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.ext.showToolbar import org.mozilla.fenix.ext.showToolbar
import org.mozilla.fenix.settings.logins.LoginsAction import org.mozilla.fenix.settings.logins.LoginsAction
import org.mozilla.fenix.settings.logins.LoginsFragmentStore import org.mozilla.fenix.settings.logins.LoginsFragmentStore
import org.mozilla.fenix.settings.logins.LoginsListState
import org.mozilla.fenix.settings.logins.SavedLoginsSortingStrategyMenu import org.mozilla.fenix.settings.logins.SavedLoginsSortingStrategyMenu
import org.mozilla.fenix.settings.logins.SortingStrategy import org.mozilla.fenix.settings.logins.SortingStrategy
import org.mozilla.fenix.settings.logins.controller.LoginsListController import org.mozilla.fenix.settings.logins.controller.LoginsListController
import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController import org.mozilla.fenix.settings.logins.controller.SavedLoginsStorageController
import org.mozilla.fenix.settings.logins.createInitialLoginsListState
import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
import org.mozilla.fenix.settings.logins.view.SavedLoginsListView import org.mozilla.fenix.settings.logins.view.SavedLoginsListView
@ -77,15 +77,7 @@ class SavedLoginsFragment : Fragment() {
val view = inflater.inflate(R.layout.fragment_saved_logins, container, false) val view = inflater.inflate(R.layout.fragment_saved_logins, container, false)
savedLoginsStore = StoreProvider.get(this) { savedLoginsStore = StoreProvider.get(this) {
LoginsFragmentStore( LoginsFragmentStore(
LoginsListState( createInitialLoginsListState(requireContext().settings())
isLoading = true,
loginList = listOf(),
filteredItems = listOf(),
searchedForText = null,
sortingStrategy = requireContext().settings().savedLoginsSortingStrategy,
highlightedItem = requireContext().settings().savedLoginsMenuHighlightedItem,
duplicateLogins = listOf() // assume on load there are no dupes
)
) )
} }

@ -4,6 +4,7 @@
package org.mozilla.fenix.settings.logins package org.mozilla.fenix.settings.logins
import io.mockk.every
import io.mockk.mockk import io.mockk.mockk
import mozilla.components.concept.storage.Login import mozilla.components.concept.storage.Login
import mozilla.components.support.test.ext.joinBlocking import mozilla.components.support.test.ext.joinBlocking
@ -12,6 +13,7 @@ import org.junit.Assert.assertFalse
import org.junit.Assert.assertNull import org.junit.Assert.assertNull
import org.junit.Assert.assertTrue import org.junit.Assert.assertTrue
import org.junit.Test import org.junit.Test
import org.mozilla.fenix.utils.Settings
class LoginsFragmentStoreTest { class LoginsFragmentStoreTest {
@ -34,6 +36,26 @@ class LoginsFragmentStoreTest {
duplicateLogins = listOf() duplicateLogins = listOf()
) )
@Test
fun `create initial state`() {
val settings = mockk<Settings>()
every { settings.savedLoginsSortingStrategy } returns SortingStrategy.LastUsed
every { settings.savedLoginsMenuHighlightedItem } returns SavedLoginsSortingStrategyMenu.Item.LastUsedSort
assertEquals(
LoginsListState(
isLoading = true,
loginList = emptyList(),
filteredItems = emptyList(),
searchedForText = null,
sortingStrategy = SortingStrategy.LastUsed,
highlightedItem = SavedLoginsSortingStrategyMenu.Item.LastUsedSort,
duplicateLogins = emptyList()
),
createInitialLoginsListState(settings)
)
}
@Test @Test
fun `convert login to saved login`() { fun `convert login to saved login`() {
val login = Login( val login = Login(

Loading…
Cancel
Save