@@ -440,5 +440,78 @@ void main() {
440440 ),
441441 );
442442 });
443+
444+ test ('Pagination should load more aggregated activities' , () async {
445+ const feedId = FeedId (group: 'stories' , id: 'target' );
446+ const nextPagination = 'next' ;
447+ const prevPagination = 'prev' ;
448+
449+ final activity1 = createDefaultActivityResponse ()
450+ .activity
451+ .copyWith (id: 'storyActivityId1' );
452+
453+ final activity2 = createDefaultActivityResponse ()
454+ .activity
455+ .copyWith (id: 'storyActivityId2' );
456+
457+ final activity3 = createDefaultActivityResponse ()
458+ .activity
459+ .copyWith (id: 'storyActivityId3' );
460+
461+ when (
462+ () => feedsApi.getOrCreateFeed (
463+ feedGroupId: feedId.group,
464+ feedId: feedId.id,
465+ getOrCreateFeedRequest: any (named: 'getOrCreateFeedRequest' ),
466+ ),
467+ ).thenAnswer (
468+ (invocation) async {
469+ final request =
470+ invocation.namedArguments[const Symbol ('getOrCreateFeedRequest' )]
471+ as GetOrCreateFeedRequest ;
472+
473+ if (request.next == null ) {
474+ return Result .success (
475+ createDefaultGetOrCreateFeedResponse (
476+ nextPagination: nextPagination,
477+ aggregatedActivities: [
478+ createDefaultAggregatedActivityResponse (
479+ group: 'group1' ,
480+ activities: [activity1, activity2],
481+ ),
482+ ],
483+ ),
484+ );
485+ }
486+ if (request.next == nextPagination) {
487+ return Result .success (
488+ createDefaultGetOrCreateFeedResponse (
489+ prevPagination: prevPagination,
490+ aggregatedActivities: [
491+ createDefaultAggregatedActivityResponse (
492+ group: 'group2' ,
493+ activities: [activity3],
494+ ),
495+ ],
496+ ),
497+ );
498+ }
499+ throw Exception ('Unexpected request' );
500+ },
501+ );
502+
503+ final feed = client.feedFromId (feedId);
504+
505+ final result = await feed.getOrCreate ();
506+ result.getOrThrow ();
507+
508+ expect (feed.state.aggregatedActivities.length, 1 );
509+ expect (feed.state.aggregatedActivities.first.activities.length, 2 );
510+
511+ await feed.queryMoreActivities ();
512+
513+ expect (feed.state.aggregatedActivities.length, 2 );
514+ expect (feed.state.aggregatedActivities.last.activities.length, 1 );
515+ });
443516 });
444517}
0 commit comments