1717package io.getstream.chat.android.state.plugin.logic.querychannels.internal
1818
1919import io.getstream.chat.android.client.ChatClient
20+ import io.getstream.chat.android.client.api.models.QueryChannelsRequest
2021import io.getstream.chat.android.client.query.QueryChannelsSpec
2122import io.getstream.chat.android.client.query.pagination.AnyChannelPaginationRequest
2223import io.getstream.chat.android.models.Channel
@@ -26,6 +27,7 @@ import io.getstream.chat.android.models.querysort.QuerySortByField
2627import io.getstream.chat.android.randomChannel
2728import io.getstream.chat.android.state.plugin.state.querychannels.QueryChannelsState
2829import io.getstream.chat.android.test.TestCoroutineRule
30+ import io.getstream.chat.android.test.asCall
2931import kotlinx.coroutines.flow.MutableStateFlow
3032import kotlinx.coroutines.test.runTest
3133import org.junit.Rule
@@ -65,6 +67,7 @@ internal class QueryChannelsLogicTest {
6567
6668 whenever(queryChannelsStateLogic.getState()) doReturn queryChannelsState
6769 whenever(queryChannelsState.recoveryNeeded) doReturn MutableStateFlow (false )
70+ whenever(queryChannelsState.currentRequest) doReturn MutableStateFlow (null )
6871 whenever(queryChannelsStateLogic.getQuerySpecs()) doReturn queryChannelsSpec
6972
7073 logic = QueryChannelsLogic (
@@ -225,4 +228,59 @@ internal class QueryChannelsLogicTest {
225228 verify(queryChannelsStateLogic).addChannelsState(cachedChannels)
226229 verify(queryChannelsDatabaseLogic).insertQueryChannels(queryChannelsSpec)
227230 }
231+
232+ // region queryFirstPage
233+
234+ @Test
235+ fun `queryFirstPage uses null messageLimit and memberLimit when no prior request exists` () = runTest {
236+ // Given - currentRequest is null (default from setUp)
237+ whenever(client.queryChannelsInternal(any()))
238+ .thenReturn(emptyList<Channel >().asCall())
239+
240+ // When
241+ logic.queryFirstPage()
242+
243+ // Then
244+ val expectedRequest = QueryChannelsRequest (
245+ filter = filter,
246+ offset = 0 ,
247+ limit = 30 ,
248+ querySort = sort,
249+ messageLimit = null ,
250+ memberLimit = null ,
251+ )
252+ verify(client).queryChannelsInternal(expectedRequest)
253+ }
254+
255+ @Test
256+ fun `queryFirstPage uses messageLimit and memberLimit from prior request` () = runTest {
257+ // Given
258+ val priorRequest = QueryChannelsRequest (
259+ filter = filter,
260+ offset = 0 ,
261+ limit = 30 ,
262+ querySort = sort,
263+ messageLimit = 5 ,
264+ memberLimit = 50 ,
265+ )
266+ whenever(queryChannelsState.currentRequest) doReturn MutableStateFlow (priorRequest)
267+ whenever(client.queryChannelsInternal(any()))
268+ .thenReturn(emptyList<Channel >().asCall())
269+
270+ // When
271+ logic.queryFirstPage()
272+
273+ // Then
274+ val expectedRequest = QueryChannelsRequest (
275+ filter = filter,
276+ offset = 0 ,
277+ limit = 30 ,
278+ querySort = sort,
279+ messageLimit = 5 ,
280+ memberLimit = 50 ,
281+ )
282+ verify(client).queryChannelsInternal(expectedRequest)
283+ }
284+
285+ // endregion
228286}
0 commit comments