@@ -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}
0 commit comments