Replace: cached filed of TestRecentSearchRepository change from 'MutableList' to 'MutableSharedFlow'

Change-Id: Ic7f914d5a3963812d0647a2f0b89f732f2d4188c
pull/1359/head
sangyoon 4 weeks ago
parent bcb827aa5d
commit 5eecf4ed87

@ -48,8 +48,8 @@ class GetRecentSearchQueriesUseCaseTest {
// Check that the number of recent search queries are up to 10. // Check that the number of recent search queries are up to 10.
assertEquals( assertEquals(
10, expected = 10,
recentSearchQueries.first().size, actual = recentSearchQueries.first().size,
) )
} }
@ -61,7 +61,6 @@ class GetRecentSearchQueriesUseCaseTest {
// insert search queries over 10. // insert search queries over 10.
testRecentSearchQueries.forEach { query -> testRecentSearchQueries.forEach { query ->
recentSearchRepository.insertOrReplaceRecentSearch(query) recentSearchRepository.insertOrReplaceRecentSearch(query)
advanceUntilIdle()
} }
// Check that search queries is ordered in recently up to 10 // Check that search queries is ordered in recently up to 10

@ -18,19 +18,26 @@ package com.google.samples.apps.nowinandroid.core.testing.repository
import com.google.samples.apps.nowinandroid.core.data.model.RecentSearchQuery import com.google.samples.apps.nowinandroid.core.data.model.RecentSearchQuery
import com.google.samples.apps.nowinandroid.core.data.repository.RecentSearchRepository import com.google.samples.apps.nowinandroid.core.data.repository.RecentSearchRepository
import kotlinx.coroutines.channels.BufferOverflow
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.flowOf import kotlinx.coroutines.flow.MutableSharedFlow
import kotlinx.coroutines.flow.first
import kotlinx.coroutines.flow.map
class TestRecentSearchRepository : RecentSearchRepository { class TestRecentSearchRepository : RecentSearchRepository {
private val cachedRecentSearches: MutableList<RecentSearchQuery> = mutableListOf() private val cachedRecentSearches = MutableSharedFlow<MutableList<RecentSearchQuery>>(
replay = 1,
onBufferOverflow = BufferOverflow.DROP_OLDEST
).apply { tryEmit(mutableListOf()) }
override fun getRecentSearchQueries(limit: Int): Flow<List<RecentSearchQuery>> = override fun getRecentSearchQueries(limit: Int): Flow<List<RecentSearchQuery>> =
flowOf(cachedRecentSearches.sortedByDescending { it.queriedDate }.take(limit)) cachedRecentSearches.map { it.sortedByDescending { it.queriedDate }.take(limit) }
override suspend fun insertOrReplaceRecentSearch(searchQuery: String) { override suspend fun insertOrReplaceRecentSearch(searchQuery: String) {
cachedRecentSearches.add(RecentSearchQuery(searchQuery)) val searchQueries = cachedRecentSearches.map { it.apply { add(RecentSearchQuery(searchQuery)) } }.first()
cachedRecentSearches.emit(searchQueries)
} }
override suspend fun clearRecentSearches() = cachedRecentSearches.clear() override suspend fun clearRecentSearches() = cachedRecentSearches.emit(mutableListOf())
} }

Loading…
Cancel
Save