Skip to content

Commit d2ef892

Browse files
committed
test: add test for FeedUpdatedEvent to preserve own fields
1 parent bc58361 commit d2ef892

File tree

2 files changed

+83
-0
lines changed

2 files changed

+83
-0
lines changed

packages/stream_feeds/test/state/feed_test.dart

Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2097,4 +2097,81 @@ void main() {
20972097
},
20982098
);
20992099
});
2100+
2101+
// ============================================================
2102+
// FEATURE: Feed Updated Event
2103+
// ============================================================
2104+
2105+
group('FeedUpdatedEvent', () {
2106+
const feedId = FeedId(group: 'user', id: 'john');
2107+
const userId = 'luke_skywalker';
2108+
2109+
feedTest(
2110+
'should preserve own fields when feed is updated',
2111+
build: (client) => client.feedFromId(feedId),
2112+
setUp: (tester) => tester.getOrCreate(
2113+
modifyResponse: (it) => it.copyWith(
2114+
feed: createDefaultFeedResponse(
2115+
id: feedId.id,
2116+
groupId: feedId.group,
2117+
ownCapabilities: [
2118+
FeedOwnCapability.createFeed,
2119+
FeedOwnCapability.deleteFeed,
2120+
],
2121+
ownMembership: createDefaultFeedMemberResponse(
2122+
id: userId,
2123+
role: 'admin',
2124+
),
2125+
ownFollows: [
2126+
createDefaultFollowResponse(id: 'follow-1'),
2127+
createDefaultFollowResponse(id: 'follow-2'),
2128+
],
2129+
),
2130+
),
2131+
),
2132+
body: (tester) async {
2133+
// Verify initial state has own fields
2134+
final initialFeed = tester.feedState.feed;
2135+
expect(initialFeed, isNotNull);
2136+
expect(initialFeed!.ownCapabilities, hasLength(2));
2137+
expect(initialFeed.ownMembership, isNotNull);
2138+
expect(initialFeed.ownFollows, hasLength(2));
2139+
2140+
final originalCapabilities = initialFeed.ownCapabilities;
2141+
final originalMembership = initialFeed.ownMembership;
2142+
final originalFollows = initialFeed.ownFollows;
2143+
2144+
// Emit FeedUpdatedEvent without own fields
2145+
await tester.emitEvent(
2146+
FeedUpdatedEvent(
2147+
type: EventTypes.feedUpdated,
2148+
createdAt: DateTime.timestamp(),
2149+
custom: const {},
2150+
fid: feedId.rawValue,
2151+
feed: createDefaultFeedResponse(
2152+
id: feedId.id,
2153+
groupId: feedId.group,
2154+
).copyWith(
2155+
name: 'Updated Name',
2156+
description: 'Updated Description',
2157+
followerCount: 100,
2158+
// Note: ownCapabilities, ownMembership, ownFollows are not included
2159+
),
2160+
),
2161+
);
2162+
2163+
// Verify own fields are preserved
2164+
final updatedFeed = tester.feedState.feed;
2165+
expect(updatedFeed, isNotNull);
2166+
expect(updatedFeed!.name, equals('Updated Name'));
2167+
expect(updatedFeed.description, equals('Updated Description'));
2168+
expect(updatedFeed.followerCount, equals(100));
2169+
2170+
// Own fields should be preserved
2171+
expect(updatedFeed.ownCapabilities, equals(originalCapabilities));
2172+
expect(updatedFeed.ownMembership, equals(originalMembership));
2173+
expect(updatedFeed.ownFollows, equals(originalFollows));
2174+
},
2175+
);
2176+
});
21002177
}

packages/stream_feeds/test/test_utils/fakes.dart

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,9 @@ FeedResponse createDefaultFeedResponse({
209209
String groupId = 'group',
210210
int followerCount = 0,
211211
int followingCount = 0,
212+
List<FeedOwnCapability>? ownCapabilities,
213+
FeedMemberResponse? ownMembership,
214+
List<FollowResponse>? ownFollows,
212215
}) {
213216
return FeedResponse(
214217
id: id,
@@ -224,6 +227,9 @@ FeedResponse createDefaultFeedResponse({
224227
memberCount: 0,
225228
pinCount: 0,
226229
updatedAt: DateTime.now(),
230+
ownCapabilities: ownCapabilities,
231+
ownMembership: ownMembership,
232+
ownFollows: ownFollows,
227233
);
228234
}
229235

0 commit comments

Comments
 (0)