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