Skip to content

Commit bebca5a

Browse files
committed
Add StoriesFeedUpdatedEvent test
1 parent d6df9d7 commit bebca5a

File tree

3 files changed

+70
-0
lines changed

3 files changed

+70
-0
lines changed

packages/stream_feeds/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
## unreleased
22
- Update follower and following counts on the feed state when receiving follow websocket events.
3+
- Improvement for stories and minor updates to other AggregatedActivity state updates.
34

45
## 0.3.1
56
- Update API client with renaming `addReaction` to `addActivityReaction` and `deleteReaction` to `deleteActivityReaction`.

packages/stream_feeds/test/state/feed_test.dart

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -513,5 +513,72 @@ void main() {
513513
expect(feed.state.aggregatedActivities.length, 2);
514514
expect(feed.state.aggregatedActivities.last.activities.length, 1);
515515
});
516+
517+
test('StoriesFeedUpdatedEvent should update aggregated activities',
518+
() async {
519+
const feedId = FeedId(group: 'stories', id: 'target');
520+
521+
final activity1 = createDefaultActivityResponse()
522+
.activity
523+
.copyWith(id: 'storyActivityId1');
524+
525+
final activity2 = createDefaultActivityResponse()
526+
.activity
527+
.copyWith(id: 'storyActivityId2');
528+
529+
when(
530+
() => feedsApi.getOrCreateFeed(
531+
feedGroupId: feedId.group,
532+
feedId: feedId.id,
533+
getOrCreateFeedRequest: any(named: 'getOrCreateFeedRequest'),
534+
),
535+
).thenAnswer(
536+
(_) async => Result.success(
537+
createDefaultGetOrCreateFeedResponse(
538+
aggregatedActivities: [
539+
createDefaultAggregatedActivityResponse(
540+
group: 'group1',
541+
activities: [activity1],
542+
),
543+
],
544+
),
545+
),
546+
);
547+
548+
final feed = client.feedFromId(feedId);
549+
550+
final result = await feed.getOrCreate();
551+
result.getOrThrow();
552+
expect(feed.state.aggregatedActivities.length, 1);
553+
expect(feed.state.aggregatedActivities.first.activities.length, 1);
554+
555+
feed.notifier.stream.listen(
556+
expectAsync1(
557+
(event) {
558+
expect(event, isA<FeedState>());
559+
560+
expect(event.aggregatedActivities.length, 1);
561+
expect(event.aggregatedActivities.first.activities.length, 2);
562+
},
563+
),
564+
);
565+
566+
wsStreamController.add(
567+
jsonEncode(
568+
StoriesFeedUpdatedEvent(
569+
type: EventTypes.storiesFeedUpdated,
570+
createdAt: DateTime.now(),
571+
custom: const {},
572+
fid: feedId.toString(),
573+
aggregatedActivities: [
574+
createDefaultAggregatedActivityResponse(
575+
group: 'group1',
576+
activities: [activity1, activity2],
577+
),
578+
],
579+
),
580+
),
581+
);
582+
});
516583
});
517584
}

packages/stream_feeds/test/test_utils/event_types.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@ class EventTypes {
99
static const String pollDeleted = 'feeds.poll.deleted';
1010
static const String pollVoteCasted = 'feeds.poll.vote_casted';
1111
static const String pollVoteRemoved = 'feeds.poll.vote_removed';
12+
13+
static const String storiesFeedUpdated = 'feeds.stories_feed.updated';
1214
}

0 commit comments

Comments
 (0)