Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ import io.getstream.log.taggedLogger
import io.getstream.result.Result
import kotlinx.coroutines.flow.StateFlow

private const val MESSAGE_LIMIT = 1
private const val MEMBER_LIMIT = 30
private const val INITIAL_CHANNEL_OFFSET = 0
private const val CHANNEL_LIMIT = 30

Expand Down Expand Up @@ -154,13 +152,16 @@ internal class QueryChannelsLogic(
*/
internal suspend fun queryFirstPage(): Result<List<Channel>> {
logger.d { "[queryFirstPage] no args" }
val currentRequest = queryChannelsStateLogic.getState().currentRequest.value
val messageLimit = currentRequest?.messageLimit
val memberLimit = currentRequest?.memberLimit
val request = QueryChannelsRequest(
filter = filter,
offset = INITIAL_CHANNEL_OFFSET,
limit = CHANNEL_LIMIT,
querySort = sort,
messageLimit = MESSAGE_LIMIT,
memberLimit = MEMBER_LIMIT,
messageLimit = messageLimit,
memberLimit = memberLimit,
)

queryChannelsStateLogic.setCurrentRequest(request)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package io.getstream.chat.android.state.plugin.logic.querychannels.internal

import io.getstream.chat.android.client.ChatClient
import io.getstream.chat.android.client.api.models.QueryChannelsRequest
import io.getstream.chat.android.client.query.QueryChannelsSpec
import io.getstream.chat.android.client.query.pagination.AnyChannelPaginationRequest
import io.getstream.chat.android.models.Channel
Expand All @@ -26,6 +27,7 @@ import io.getstream.chat.android.models.querysort.QuerySortByField
import io.getstream.chat.android.randomChannel
import io.getstream.chat.android.state.plugin.state.querychannels.QueryChannelsState
import io.getstream.chat.android.test.TestCoroutineRule
import io.getstream.chat.android.test.asCall
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.test.runTest
import org.junit.Rule
Expand Down Expand Up @@ -65,6 +67,7 @@ internal class QueryChannelsLogicTest {

whenever(queryChannelsStateLogic.getState()) doReturn queryChannelsState
whenever(queryChannelsState.recoveryNeeded) doReturn MutableStateFlow(false)
whenever(queryChannelsState.currentRequest) doReturn MutableStateFlow(null)
whenever(queryChannelsStateLogic.getQuerySpecs()) doReturn queryChannelsSpec

logic = QueryChannelsLogic(
Expand Down Expand Up @@ -225,4 +228,59 @@ internal class QueryChannelsLogicTest {
verify(queryChannelsStateLogic).addChannelsState(cachedChannels)
verify(queryChannelsDatabaseLogic).insertQueryChannels(queryChannelsSpec)
}

// region queryFirstPage

@Test
fun `queryFirstPage uses null messageLimit and memberLimit when no prior request exists`() = runTest {
// Given - currentRequest is null (default from setUp)
whenever(client.queryChannelsInternal(any()))
.thenReturn(emptyList<Channel>().asCall())

// When
logic.queryFirstPage()

// Then
val expectedRequest = QueryChannelsRequest(
filter = filter,
offset = 0,
limit = 30,
querySort = sort,
messageLimit = null,
memberLimit = null,
)
verify(client).queryChannelsInternal(expectedRequest)
}

@Test
fun `queryFirstPage uses messageLimit and memberLimit from prior request`() = runTest {
// Given
val priorRequest = QueryChannelsRequest(
filter = filter,
offset = 0,
limit = 30,
querySort = sort,
messageLimit = 5,
memberLimit = 50,
)
whenever(queryChannelsState.currentRequest) doReturn MutableStateFlow(priorRequest)
whenever(client.queryChannelsInternal(any()))
.thenReturn(emptyList<Channel>().asCall())

// When
logic.queryFirstPage()

// Then
val expectedRequest = QueryChannelsRequest(
filter = filter,
offset = 0,
limit = 30,
querySort = sort,
messageLimit = 5,
memberLimit = 50,
)
verify(client).queryChannelsInternal(expectedRequest)
}

// endregion
}
Loading