add tests for paged loading components

This commit is contained in:
2025-03-02 23:06:42 +06:00
parent 3b7dde3cb1
commit e70d34d91a
4 changed files with 169 additions and 28 deletions

View File

@@ -0,0 +1,47 @@
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.runComposeUiTest
import dev.inmo.micro_utils.pagination.*
import dev.inmo.micro_utils.pagination.compose.InfinityPagedComponent
import dev.inmo.micro_utils.pagination.compose.PagedComponent
import org.jetbrains.annotations.TestOnly
import kotlin.test.Test
import kotlin.test.assertContentEquals
import kotlin.test.assertEquals
class InfinityPagedComponentTests {
@OptIn(ExperimentalTestApi::class)
@Test
@TestOnly
fun testSimpleLoad() = runComposeUiTest {
var expectedList = listOf<Int>()
setContent {
InfinityPagedComponent<Int>(
size = 1,
loader = {
PaginationResult(
page = it.page,
size = it.size,
results = (it.firstIndex .. it.lastIndex).toList(),
objectsNumber = 3
).also {
expectedList += it.results
}
}
) {
assertEquals(expectedList, it)
LaunchedEffect(it ?.size) {
loadNext()
}
}
}
waitForIdle()
assertContentEquals(
listOf(0, 1, 2),
expectedList
)
}
}

View File

@@ -0,0 +1,64 @@
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.ui.test.ExperimentalTestApi
import androidx.compose.ui.test.runComposeUiTest
import dev.inmo.micro_utils.pagination.*
import dev.inmo.micro_utils.pagination.compose.PagedComponent
import org.jetbrains.annotations.TestOnly
import kotlin.test.Test
import kotlin.test.assertEquals
class PagedComponentTests {
@OptIn(ExperimentalTestApi::class)
@Test
@TestOnly
fun testSimpleLoad() = runComposeUiTest {
var expectedPage = PaginationResult(
page = 0,
size = 1,
results = listOf(0),
objectsNumber = 3
)
var previousPage = expectedPage
setContent {
PagedComponent<Int>(
initialPage = 0,
size = 1,
loader = {
previousPage = expectedPage
expectedPage = PaginationResult(
page = it.page,
size = it.size,
results = (it.firstIndex .. it.lastIndex).toList(),
objectsNumber = 3
)
expectedPage
}
) {
assertEquals(expectedPage, it)
assertEquals(expectedPage.results, it.results)
if (it.isLastPage || it.page < previousPage.page) {
if (it.isFirstPage) {
// do nothing - end of test
} else {
loadPrevious()
}
} else {
loadNext()
}
}
}
waitForIdle()
assertEquals(
PaginationResult(
page = 0,
size = 1,
results = listOf(0),
objectsNumber = 3
),
expectedPage
)
}
}