Skip to content

Commit

Permalink
Add test code in GetFollowableTopicsUseCaseTest.kt([android#1327])
Browse files Browse the repository at this point in the history
  • Loading branch information
squart300kg committed Apr 3, 2024
1 parent 0f711be commit 16d73b3
Showing 1 changed file with 82 additions and 1 deletion.
Expand Up @@ -18,7 +18,12 @@ package com.google.samples.apps.nowinandroid.core.domain

import com.google.samples.apps.nowinandroid.core.testing.repository.TestRecentSearchRepository
import com.google.samples.apps.nowinandroid.core.testing.util.MainDispatcherRule
import kotlinx.coroutines.delay
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.test.runTest
import org.junit.Rule
import org.junit.Test
import kotlin.test.assertEquals

class GetRecentSearchQueriesUseCaseTest {

Expand All @@ -27,5 +32,81 @@ class GetRecentSearchQueriesUseCaseTest {

private val recentSearchRepository = TestRecentSearchRepository()

private val useCase = GetRecentSearchQueriesUseCase(
recentSearchRepository
)

}
@Test
fun whenNoParams_recentSearchQueriesAreReturnedUpTo10() = runTest {
// Obtain a stream of recent search queries with no param.
val recentSearchQueries = useCase()

// insert 5 search queries.
for (index in 0 until 5) {
recentSearchRepository.insertOrReplaceRecentSearch(testRecentSearchQueries[index])
// delay for saving value
delay(10L)
}

// Check that 5 recent search queries are ordered by latest.
assertEquals(
testRecentSearchQueries.take(5).reversed(),
recentSearchQueries.first().map { it.query },
)

// insert 9 more search queries.
for (index in 5 until testRecentSearchQueries.size) {
recentSearchRepository.insertOrReplaceRecentSearch(testRecentSearchQueries[index])
// delay for saving value
delay(10L)
}

// Check that recent search queries are ordered by latest up to 10.
assertEquals(
testRecentSearchQueries.reversed().take(10),
recentSearchQueries.first().map { it.query },
)
}

@Test
fun whenParamIsSetTo5_recentSearchQueriesAreReturnedUpTo5() = runTest {
// Obtain a stream of recent search queries with param set 5.
val recentSearchQueries = useCase(5)

// insert 2 search queries.
for (index in 0 until 2) {
recentSearchRepository.insertOrReplaceRecentSearch(testRecentSearchQueries[index])
// delay for saving value
delay(10L)
}

// Check that 5 recent search queries are ordered by latest.
assertEquals(
testRecentSearchQueries.take(2).reversed(),
recentSearchQueries.first().map { it.query },
)

// insert 12 more search queries.
for (index in 2 until testRecentSearchQueries.size) {
recentSearchRepository.insertOrReplaceRecentSearch(testRecentSearchQueries[index])
// delay for saving value
delay(10L)
}

// Check that recent search queries are ordered by latest up to 5.
assertEquals(
testRecentSearchQueries.reversed().take(5),
recentSearchQueries.first().map { it.query },
)
}
}

private val testRecentSearchQueries = listOf(
"Compose", "Wear OS",
"Jetpack", "Headlines",
"Architecture", "UI",
"Testing", "Android Studio",
"Performance", "New API",
"Games", "Android TV",
"Camera", "Media"
)

0 comments on commit 16d73b3

Please sign in to comment.