mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-24 11:45:28 +00:00
Add support for arbitrary rows in contact search.
This commit is contained in:
committed by
Greyson Parrelli
parent
d76d13f76c
commit
5d14166a27
@@ -1,21 +1,26 @@
|
||||
package org.thoughtcrime.securesms.contacts.paged
|
||||
|
||||
import android.app.Application
|
||||
import androidx.core.os.bundleOf
|
||||
import org.junit.Assert
|
||||
import org.junit.Before
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.junit.runners.JUnit4
|
||||
import org.mockito.kotlin.any
|
||||
import org.mockito.kotlin.anyOrNull
|
||||
import org.mockito.kotlin.isNull
|
||||
import org.mockito.kotlin.mock
|
||||
import org.mockito.kotlin.whenever
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
import org.robolectric.annotation.Config
|
||||
import org.thoughtcrime.securesms.MockCursor
|
||||
import org.thoughtcrime.securesms.database.model.DistributionListPrivacyMode
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.recipients.RecipientId
|
||||
import org.thoughtcrime.securesms.util.adapter.mapping.MappingModel
|
||||
|
||||
@RunWith(JUnit4::class)
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
@Config(application = Application::class)
|
||||
class ContactSearchPagedDataSourceTest {
|
||||
|
||||
private val repository: ContactSearchPagedDataSourceRepository = mock()
|
||||
@@ -117,6 +122,36 @@ class ContactSearchPagedDataSourceTest {
|
||||
Assert.assertEquals(expected, resultKeys)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given only arbitrary elements, when I size, then I expect 3`() {
|
||||
val testSubject = createArbitrarySubject()
|
||||
val expected = 3
|
||||
val actual = testSubject.size()
|
||||
|
||||
Assert.assertEquals(expected, actual)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `Given only arbitrary elements, when I load 1, then I expect 1`() {
|
||||
val testSubject = createArbitrarySubject()
|
||||
val expected = ContactSearchData.Arbitrary("two", bundleOf("n" to "two"))
|
||||
val actual = testSubject.load(1, 1) { false }[0] as ContactSearchData.Arbitrary
|
||||
|
||||
Assert.assertEquals(expected.data?.getString("n"), actual.data?.getString("n"))
|
||||
}
|
||||
|
||||
private fun createArbitrarySubject(): ContactSearchPagedDataSource {
|
||||
val configuration = ContactSearchConfiguration.build {
|
||||
arbitrary(
|
||||
"one",
|
||||
"two",
|
||||
"three"
|
||||
)
|
||||
}
|
||||
|
||||
return ContactSearchPagedDataSource(configuration, repository, ArbitraryRepoFake())
|
||||
}
|
||||
|
||||
private fun createStoriesSubject(): ContactSearchPagedDataSource {
|
||||
val configuration = ContactSearchConfiguration.build {
|
||||
addSection(
|
||||
@@ -161,4 +196,24 @@ class ContactSearchPagedDataSourceTest {
|
||||
|
||||
return ContactSearchPagedDataSource(configuration, repository)
|
||||
}
|
||||
|
||||
private class ArbitraryModel : MappingModel<ArbitraryModel> {
|
||||
override fun areItemsTheSame(newItem: ArbitraryModel): Boolean = true
|
||||
|
||||
override fun areContentsTheSame(newItem: ArbitraryModel): Boolean = true
|
||||
}
|
||||
|
||||
private class ArbitraryRepoFake : ArbitraryRepository {
|
||||
override fun getSize(section: ContactSearchConfiguration.Section.Arbitrary, query: String?): Int = section.types.size
|
||||
|
||||
override fun getData(section: ContactSearchConfiguration.Section.Arbitrary, query: String?, startIndex: Int, endIndex: Int): List<ContactSearchData.Arbitrary> {
|
||||
return section.types.toList().slice(startIndex..endIndex).map {
|
||||
ContactSearchData.Arbitrary(it, bundleOf("n" to it))
|
||||
}
|
||||
}
|
||||
|
||||
override fun getMappingModel(arbitrary: ContactSearchData.Arbitrary): MappingModel<*> {
|
||||
return ArbitraryModel()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user