-
Notifications
You must be signed in to change notification settings - Fork 1
test(llc): add tests for Feeds and Moderation client #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
WalkthroughAdds moderation client export and changes its moderation-config query to return paginated results; reorganizes test utilities into a test package, adds CDN mocking and WebSocket tester tooling, many test-data factories, and updates numerous tester constructors/imports to accept a CDN mock and wsTester. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Focus review on:
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #75 +/- ##
==========================================
+ Coverage 83.89% 86.53% +2.64%
==========================================
Files 121 121
Lines 4197 4197
==========================================
+ Hits 3521 3632 +111
+ Misses 676 565 -111 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/stream_feeds_test/lib/src/helpers/test_data.dart (1)
888-900: Consolidate duplicate config response factory.
createDefaultConfigResponseduplicates the existingcreateDefaultModerationConfigResponse(line 860). Both createConfigResponsewith similar parameters. Consider removing this function and usingcreateDefaultModerationConfigResponseinstead, or consolidate them into a single function.🔎 Suggested consolidation
If the only difference is the
asyncdefault value, consider removingcreateDefaultConfigResponseand updating call sites to use:createDefaultModerationConfigResponse( key: 'default-config', team: 'default-team', async: true, )
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (25)
packages/stream_feeds/dart_test.yaml(1 hunks)packages/stream_feeds/lib/src/client/feeds_client_impl.dart(0 hunks)packages/stream_feeds/lib/src/client/moderation_client.dart(2 hunks)packages/stream_feeds/lib/src/feeds_client.dart(1 hunks)packages/stream_feeds/test/client/moderation_client_test.dart(1 hunks)packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart(1 hunks)packages/stream_feeds_test/lib/src/helpers/test_data.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart(1 hunks)packages/stream_feeds_test/lib/stream_feeds_test.dart(1 hunks)
💤 Files with no reviewable changes (1)
- packages/stream_feeds/lib/src/client/feeds_client_impl.dart
🧰 Additional context used
📓 Path-based instructions (5)
**/*.dart
📄 CodeRabbit inference engine (.cursor/rules/cursor-rules-location.mdc)
**/*.dart: Use the barrel_files package with @includeInBarrelFile annotations for public API management in Dart projects; keep implementation details in lib/src/ without annotations
Mark only classes, functions, and enums intended for external package usage with @includeInBarrelFile; keep repository classes, mappers, and internal state objects in lib/src/ without annotations
**/*.dart: Use@freezedmixed mode for data classes in Dart
ReturnResult<T>from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching withswitchexpressions in Dart
Mark public APIs with@includeInBarrelFileannotation in Dart
Follow enhanced enum vs sealed class guidelines in Dart
Use const constructors where possible in Dart
Implement proper disposal patterns in Dart StateNotifiers and providers
Ensure pure Dart compatibility across VM, Flutter, and Web environments
Plan for StateNotifier reactive patterns when implementing state management in Dart
**/*.dart: Use @freezed for all data classes with required id fields and const constructors
Implement StateNotifier-based reactive state management with automatic change notifications
Apply Result pattern for all async operations with explicit error handling
Use early return patterns for clean control flow in Dart code
Create extension functions for data mapping using.toModel()pattern instead of mapper classes
Mark public APIs with @includeInBarrelFile annotation for barrel file export management
Implement proper resource management with disposal and cleanup patterns in Dart code
Use constructor injection for all dependencies in Dart classes
**/*.dart: All data models should use @freezed with Dart's mixed mode syntax and include @OverRide annotations on fields
Mark classes for public export using @includeInBarrelFile annotation
Use extension functions with.toModel()convention for data mapping instead of dedicated mapper classes
All repository methods must return Result...
Files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
{**/api/**/*.dart,**/*_api.dart,**/client/*.dart}
📄 CodeRabbit inference engine (.cursor/rules/stream-feeds-api.mdc)
{**/api/**/*.dart,**/*_api.dart,**/client/*.dart}: Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
Implement proper authentication using API keys and user tokens via the StreamFeedsClient with tokenProvider parameter
Implement structured error handling for Stream Feeds API responses including 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, and 500 Internal Server Error status codes
Use batch operations for bulk activity creation and updates to optimize API performance
Implement WebSocket event handlers for real-time Stream Feeds updates including activity events, reaction events, follow events, and member events
Respect API rate limiting by implementing retry logic with retry-after headers and designing applications to handle rate limit responses gracefully
Implement circuit breaker pattern for automatic failure recovery in Stream Feeds API interactions
Use connection pooling and gzip compression for efficient HTTP connection management and reduced bandwidth when communicating with Stream Feeds API
Files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds/lib/src/client/moderation_client.dart
packages/stream_feeds/test/**/*.dart
📄 CodeRabbit inference engine (AGENTS.md)
packages/stream_feeds/test/**/*.dart: Test through public APIs only, not internal StateNotifier implementations
Use HTTP interceptors instead of mocking repositories in tests
Mirror thelib/structure intest/directory organization
Files:
packages/stream_feeds/test/client/moderation_client_test.dart
packages/stream_feeds/lib/src/**/*.dart
📄 CodeRabbit inference engine (AGENTS.md)
Use
//for internal/private code documentation
Files:
packages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds/lib/src/feeds_client.dart
packages/stream_feeds/lib/**/*.dart
📄 CodeRabbit inference engine (AGENTS.md)
Apply Dart analyzer configuration from
analysis_options.yamlfor code quality
Files:
packages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds/lib/src/feeds_client.dart
🧠 Learnings (35)
📓 Common learnings
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Test through public APIs only, not internal StateNotifier implementations
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Use HTTP interceptors instead of mocking repositories in tests
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement proper authentication using API keys and user tokens via the StreamFeedsClient with tokenProvider parameter
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Keep public API minimal - most code should be in `lib/src/` internal directory
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Mirror the `lib/` structure in `test/` directory organization
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Export public API classes from main library entry point `lib/stream_feeds.dart`
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/generated/**/*.dart : Never manually edit generated files (`*.freezed.dart`, `*.g.dart`, `src/generated/`)
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/**/*.dart : Apply Dart analyzer configuration from `analysis_options.yaml` for code quality
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/generated/**/*.dart : Never manually edit OpenAPI-generated API code files in `src/generated/`
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Use `///` for public API documentation in exported classes and methods
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Follow Freezed 3.0 mixed mode syntax with `override` annotations for fields
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs
Applied to files:
packages/stream_feeds/dart_test.yamlpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Test through public APIs only, not internal StateNotifier implementations
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Use HTTP interceptors instead of mocking repositories in tests
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement proper authentication using API keys and user tokens via the StreamFeedsClient with tokenProvider parameter
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds/lib/src/feeds_client.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement circuit breaker pattern for automatic failure recovery in Stream Feeds API interactions
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Include examples for complex APIs in documentation
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Use batch operations for bulk activity creation and updates to optimize API performance
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement structured error handling for Stream Feeds API responses including 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, and 500 Internal Server Error status codes
Applied to files:
packages/stream_feeds/test/client/moderation_client_test.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/**/*.dart : Use `//` for internal/private code documentation
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/state/**/*StateNotifier.dart : Use StateNotifier for reactive state management
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/repository/**/*.dart : Use extension functions for API-to-domain model mapping in repositories
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/helpers/test_data.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement WebSocket event handlers for real-time Stream Feeds updates including activity events, reaction events, follow events, and member events
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds/lib/src/feeds_client.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:36:35.233Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/cursor-rules-location.mdc:0-0
Timestamp: 2025-12-05T14:36:35.233Z
Learning: Applies to test/**/*.dart : Mirror test structure to lib structure in test/ directory with corresponding test file organization following lib/src/ architecture layers
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/state/**/*.dart : State class naming convention: Use `*State` suffix for state classes (e.g., `FeedState`, `ActivityListState`)
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/repository/**/*.dart : All repository methods must return `Result<T>` types for explicit error handling
Applied to files:
packages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Query naming convention: Use `*Query` suffix for query classes (e.g., `ActivitiesQuery`, `FeedsQuery`)
Applied to files:
packages/stream_feeds/lib/src/client/moderation_client.dartpackages/stream_feeds/lib/src/feeds_client.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/repository/**/*.dart : Never throw exceptions in repositories - always return Result types
Applied to files:
packages/stream_feeds/lib/src/client/moderation_client.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/repository/**/*.dart : Use early return patterns for validation and errors in repository methods
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
📚 Learning: 2025-12-05T14:37:05.876Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/project-overview.mdc:0-0
Timestamp: 2025-12-05T14:37:05.876Z
Learning: Applies to **/*.dart : Implement StateNotifier-based reactive state management with automatic change notifications
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Use connection pooling and gzip compression for efficient HTTP connection management and reduced bandwidth when communicating with Stream Feeds API
Applied to files:
packages/stream_feeds/lib/src/feeds_client.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/state/**/*StateNotifier.dart : StateNotifier naming convention: Use `*StateNotifier` suffix for StateNotifier implementations (e.g., `FeedStateNotifier`)
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
📚 Learning: 2025-12-05T14:37:37.953Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-sdk.mdc:0-0
Timestamp: 2025-12-05T14:37:37.953Z
Learning: Applies to **/*.dart : Use extension functions on API response types for clean response transformation
Applied to files:
packages/stream_feeds_test/lib/src/helpers/test_data.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Use `freezed` for all data classes in the Stream Feeds SDK
Applied to files:
packages/stream_feeds_test/lib/src/helpers/test_data.dart
📚 Learning: 2025-12-16T23:49:28.671Z
Learnt from: xsahil03x
Repo: GetStream/stream-feeds-flutter PR: 71
File: packages/stream_feeds/lib/src/state/event/handler/bookmark_folder_list_event_handler.dart:23-40
Timestamp: 2025-12-16T23:49:28.671Z
Learning: In the Stream Feeds Flutter SDK, `BookmarkFolderAddedEvent` does not exist in the backend and SDK. Only `BookmarkFolderUpdatedEvent` and `BookmarkFolderDeletedEvent` are available for bookmark folder event handling.
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
📚 Learning: 2025-12-05T14:36:55.335Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/planit-mode.mdc:0-0
Timestamp: 2025-12-05T14:36:55.335Z
Learning: Applies to **/*.dart : Plan for StateNotifier reactive patterns when implementing state management in Dart
Applied to files:
packages/stream_feeds_test/lib/stream_feeds_test.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: build
- GitHub Check: stream_feeds
🔇 Additional comments (39)
packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart (1)
7-9: Import paths after reorganization are correct. All referenced files exist at their expected locations.packages/stream_feeds/dart_test.yaml (1)
15-15: LGTM!The addition of the
moderation-clienttag aligns with the PR's objective to add moderation client test infrastructure.packages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization. All paths are properly resolved to the new directory structure.
packages/stream_feeds_test/lib/src/helpers/test_data.dart (1)
902-1010: LGTM!The new test data factory functions follow consistent patterns and provide good coverage for moderation-related test scenarios. They properly compose existing helpers and use sensible defaults.
packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization.
packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization.
packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization.
packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization.
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart (1)
7-9: LGTM!Import path updates correctly reflect the test infrastructure reorganization.
packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated for directory reorganization.The import paths have been properly adjusted to reflect the move of testers into the
state/subdirectory. All relative paths now correctly reference helpers and base_tester at their new locations.packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart (1)
7-9: LGTM! Import paths correctly updated.packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart (1)
7-9: LGTM: Import paths correctly updated for new directory structure.The relative paths are correctly adjusted for the tester's new location under
state/.packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart (1)
39-57: LGTM: Clean helper for simulating API failures in tests.The method follows the established pattern of
mockApiand provides a convenient way to test error paths. The defaultStackTrace.currentfallback is appropriate for test scenarios.packages/stream_feeds/test/client/moderation_client_test.dart (13)
1-5: LGTM: Well-structured test file with appropriate imports.The
avoid_redundant_argument_valuesignore is acceptable given the test's focus on explicit request construction for clarity.
11-49: LGTM: Ban operations tests cover success and failure paths.Good use of
registerFallbackValuefor mocktail and consistent test structure.
55-93: LGTM: Mute operations tests.
99-145: LGTM: Block users tests.
147-195: LGTM: Unblock users tests.
197-231: LGTM: Get blocked users tests.No
setUpAllneeded here sincegetBlockedUsers()takes no parameters—correctly omitted.
237-283: LGTM: Flag operations tests.
289-346: LGTM: Submit action tests.
352-398: LGTM: Query review queue tests.
404-446: LGTM: Upsert config tests.
448-486: LGTM: Delete config tests.
488-522: LGTM: Get config tests.
524-586: LGTM: Query moderation configs tests correctly validate the newPaginationResultreturn type.Good verification of
paginationResult.itemsat line 550, confirming the updated API signature works as expected.packages/stream_feeds/lib/src/feeds_client.dart (1)
45-46: LGTM: Public export of ModerationClient properly chained.The export correctly exposes
ModerationClientthroughfeeds_client.dartat line 45, andfeeds_client.dartis re-exported from the mainlib/stream_feeds.dartentry point at line 3, completing the public API surface as required.packages/stream_feeds/lib/src/client/moderation_client.dart (1)
164-171: Breaking API change:queryModerationConfigsnow returns aResult.The signature change from
Future<void>toFuture<Result<PaginationResult<ModerationConfigData>>>aligns with the guideline that all repository and client methods must returnResult<T>types for explicit error handling. All existing usages have been properly updated to handle the Result type using the.onSuccess()pattern.packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart (4)
1-8: LGTM! Clean import structure.The imports are well-organized and follow Dart conventions.
71-85: LGTM! Clean tester class implementation.The
ModerationClientTesterfollows best practices with afinalclass, private constructor, and convenient getter. The structure is consistent with other testers in this PR.
87-106: LGTM! Proper factory function for internal use.The factory correctly uses
//for internal documentation and delegates tocreateTesterfor consistent setup and cleanup handling.
10-69: Well-structured test helper with comprehensive documentation.The
moderationClientTestfunction follows established patterns and provides a clean API for testing moderation operations. The documentation example is particularly helpful.Based on learnings, this correctly tests through public APIs and sets up mocking at the HTTP layer.
packages/stream_feeds_test/lib/stream_feeds_test.dart (1)
25-42: LGTM! Excellent reorganization of test utilities.The export structure is now clearer with state-based testers grouped under
state/while client testers remain at the root level. This improves discoverability and aligns with the architectural separation between client and state concerns.The addition of
moderation_client_testerexport completes the public test API for moderation testing.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 0
🧹 Nitpick comments (1)
packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart (1)
88-104: Simplify: Redundant subject and client parameters.The
_createFeedsClientTesterfunction has bothsubjectandclientparameters (lines 89-90), but they're bothStreamFeedsClientand represent the same instance. Since the subject IS the client in this case, one parameter is sufficient.🔎 Suggested simplification
Future<FeedsClientTester> _createFeedsClientTester({ - required StreamFeedsClient subject, required StreamFeedsClient client, required MockCdnApi cdnApi, required MockDefaultApi feedsApi, required MockWebSocketChannel webSocketChannel, }) { return createTester( webSocketChannel: webSocketChannel, create: (wsTester) => FeedsClientTester._( - client: subject, + client: client, wsTester: wsTester, cdnApi: cdnApi, feedsApi: feedsApi, ), ); }
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Linear integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (22)
packages/stream_feeds/test/client/feeds_client_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
🚧 Files skipped from review as they are similar to previous changes (2)
- packages/stream_feeds/test/client/feeds_client_test.dart
- packages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
🧰 Additional context used
📓 Path-based instructions (1)
**/*.dart
📄 CodeRabbit inference engine (.cursor/rules/cursor-rules-location.mdc)
**/*.dart: Use the barrel_files package with @includeInBarrelFile annotations for public API management in Dart projects; keep implementation details in lib/src/ without annotations
Mark only classes, functions, and enums intended for external package usage with @includeInBarrelFile; keep repository classes, mappers, and internal state objects in lib/src/ without annotations
**/*.dart: Use@freezedmixed mode for data classes in Dart
ReturnResult<T>from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching withswitchexpressions in Dart
Mark public APIs with@includeInBarrelFileannotation in Dart
Follow enhanced enum vs sealed class guidelines in Dart
Use const constructors where possible in Dart
Implement proper disposal patterns in Dart StateNotifiers and providers
Ensure pure Dart compatibility across VM, Flutter, and Web environments
Plan for StateNotifier reactive patterns when implementing state management in Dart
**/*.dart: Use @freezed for all data classes with required id fields and const constructors
Implement StateNotifier-based reactive state management with automatic change notifications
Apply Result pattern for all async operations with explicit error handling
Use early return patterns for clean control flow in Dart code
Create extension functions for data mapping using.toModel()pattern instead of mapper classes
Mark public APIs with @includeInBarrelFile annotation for barrel file export management
Implement proper resource management with disposal and cleanup patterns in Dart code
Use constructor injection for all dependencies in Dart classes
**/*.dart: All data models should use @freezed with Dart's mixed mode syntax and include @OverRide annotations on fields
Mark classes for public export using @includeInBarrelFile annotation
Use extension functions with.toModel()convention for data mapping instead of dedicated mapper classes
All repository methods must return Result...
Files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
🧠 Learnings (26)
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Test through public APIs only, not internal StateNotifier implementations
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Use HTTP interceptors instead of mocking repositories in tests
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Keep public API minimal - most code should be in `lib/src/` internal directory
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/test/**/*.dart : Mirror the `lib/` structure in `test/` directory organization
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Include examples for complex APIs in documentation
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Use `///` for public API documentation in exported classes and methods
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement WebSocket event handlers for real-time Stream Feeds updates including activity events, reaction events, follow events, and member events
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/models/**/*.dart : Follow Freezed 3.0 mixed mode syntax with `override` annotations for fields
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Stream Feeds API integration should be implemented according to the Activity Streams specification with structured actor, verb, object, and target fields
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/stream_feeds.dart : Export public API classes from main library entry point `lib/stream_feeds.dart`
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement proper authentication using API keys and user tokens via the StreamFeedsClient with tokenProvider parameter
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/websocket_tester.dartpackages/stream_feeds_test/lib/src/testers/moderation_client_tester.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/**/*.dart : Use `//` for internal/private code documentation
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/generated/**/*.dart : Never manually edit OpenAPI-generated API code files in `src/generated/`
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement circuit breaker pattern for automatic failure recovery in Stream Feeds API interactions
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/base_tester.dart
📚 Learning: 2025-12-05T14:37:37.953Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-sdk.mdc:0-0
Timestamp: 2025-12-05T14:37:37.953Z
Learning: Test public SDK interfaces through StreamFeedsClient using HTTP interceptors instead of repository mocks
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/feed_tester.dartpackages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
📚 Learning: 2025-12-16T23:49:28.671Z
Learnt from: xsahil03x
Repo: GetStream/stream-feeds-flutter PR: 71
File: packages/stream_feeds/lib/src/state/event/handler/bookmark_folder_list_event_handler.dart:23-40
Timestamp: 2025-12-16T23:49:28.671Z
Learning: In the Stream Feeds Flutter SDK, `BookmarkFolderAddedEvent` does not exist in the backend and SDK. Only `BookmarkFolderUpdatedEvent` and `BookmarkFolderDeletedEvent` are available for bookmark folder event handling.
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
📚 Learning: 2025-12-05T14:36:35.233Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/cursor-rules-location.mdc:0-0
Timestamp: 2025-12-05T14:36:35.233Z
Learning: Applies to test/**/*.dart : Mirror test structure to lib structure in test/ directory with corresponding test file organization following lib/src/ architecture layers
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/**/*.dart : Apply Dart analyzer configuration from `analysis_options.yaml` for code quality
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/state/**/*StateNotifier.dart : Use StateNotifier for reactive state management
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
📚 Learning: 2025-12-05T14:37:05.876Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/project-overview.mdc:0-0
Timestamp: 2025-12-05T14:37:05.876Z
Learning: Applies to **/*.dart : Implement StateNotifier-based reactive state management with automatic change notifications
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
📚 Learning: 2025-12-05T14:37:17.519Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-api.mdc:0-0
Timestamp: 2025-12-05T14:37:17.519Z
Learning: Applies to {**/api/**/*.dart,**/*_api.dart,**/client/*.dart} : Implement structured error handling for Stream Feeds API responses including 400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 429 Too Many Requests, and 500 Internal Server Error status codes
Applied to files:
packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dartpackages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/ws/events/**/*.dart : Real-time event handlers must use `freezed` for type-safe event handling in WebSocket layer
Applied to files:
packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
📚 Learning: 2025-12-05T14:37:37.953Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: .cursor/rules/stream-feeds-sdk.mdc:0-0
Timestamp: 2025-12-05T14:37:37.953Z
Learning: Design WebSocket integration for real-time updates through structured event handling and pattern matching
Applied to files:
packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/state/**/*.dart : State class naming convention: Use `*State` suffix for state classes (e.g., `FeedState`, `ActivityListState`)
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/activity_tester.dartpackages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
📚 Learning: 2025-12-05T14:38:02.662Z
Learnt from: CR
Repo: GetStream/stream-feeds-flutter PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-05T14:38:02.662Z
Learning: Applies to packages/stream_feeds/lib/src/generated/**/*.dart : Never manually edit generated files (`*.freezed.dart`, `*.g.dart`, `src/generated/`)
Applied to files:
packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dartpackages/stream_feeds_test/lib/stream_feeds_test.dart
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (2)
- GitHub Check: build
- GitHub Check: stream_feeds
🔇 Additional comments (38)
packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart (2)
7-19: LGTM! Import paths and documentation updated correctly.The import path adjustments align with the test package reorganization, and the documentation improvements clarify parameter semantics.
49-86: LGTM! Tester wiring updated consistently.The constructor and factory properly integrate the new dependencies (client, wsTester, cdnApi) and support custom connection logic via the optional connect parameter.
Also applies to: 163-183
packages/stream_feeds_test/lib/src/testers/websocket_tester.dart (3)
32-81: LGTM! WebSocket authentication mocking is well-designed.The
mockSuccessfulAuthmethod correctly simulates authentication by comparing user IDs and emitting appropriate events. The reset mechanism allows reconfiguration between test scenarios.
121-151: LGTM! Error simulation and event emission are appropriate.The
mockFailedAuthmethod provides flexible error code configuration with clear documentation about reconnection behavior. TheemitEventmethod's simple JSON encoding is suitable for a test utility.
169-276: LGTM! Helper functions are well-implemented.The WebSocket mock configuration and event creation helpers are properly structured with appropriate use of mocktail, pattern matching, and comprehensive event payloads.
packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The import paths, documentation, and tester wiring follow the same well-structured pattern as the other state testers.
Also applies to: 16-20, 50-87, 166-186
packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The changes follow the established pattern with proper import paths, documentation updates, and dependency wiring through the constructor and factory.
Also applies to: 16-20, 48-85, 134-154
packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The feed tester correctly integrates the new dependencies and follows the same pattern as other state testers.
Also applies to: 16-20, 53-90, 142-162
packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The follow list tester properly implements the refactoring pattern with correct import paths, documentation, and dependency wiring.
Also applies to: 16-20, 48-85, 144-164
packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The feed list tester correctly applies the refactoring pattern with proper constructor and factory updates.
Also applies to: 16-20, 48-85, 135-155
packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart (1)
7-9: LGTM! Refactoring applied consistently.The bookmark folder list tester completes the consistent refactoring pattern across all state testers with proper import paths, documentation, and dependency wiring.
Also applies to: 16-20, 48-85, 141-161
packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart (3)
7-9: LGTM!Import paths correctly updated to reflect the new directory structure with helpers moved to
../../helpers/and base_tester to../.
78-85: LGTM!The
PollListTesterconstructor is properly updated to require the new dependencies (client,wsTester,cdnApi) via super, aligning with the broader test infrastructure refactoring.
135-154: LGTM!The factory function correctly:
- Accepts the new
cdnApiparameter- Uses the
createTestercallback pattern withwsTester- Forwards all dependencies to the tester constructor
Clean wiring of the new test infrastructure.
packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart (2)
78-85: LGTM!The
PollVoteListTesterconstructor correctly mirrors the pattern established across other testers, requiringclient,wsTester, andcdnApidependencies.
145-164: LGTM!Factory function and tester creation follow the consistent pattern. Proper teardown registration and dependency wiring.
packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart (2)
78-86: LGTM!
ActivityReactionListTesterproperly extendsBaseTesterwith the expanded dependency surface. Constructor wiring is consistent with sibling testers.
149-168: LGTM!Factory function correctly updated with
cdnApiparameter and thecreateTestercallback pattern for WebSocket tester integration.packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart (2)
118-125: LGTM!
ActivityTesterconstructor properly updated withclient,wsTester, andcdnApidependencies, maintaining consistency with the test infrastructure refactoring.
189-208: LGTM!Factory function and tester creation correctly wired. The teardown registration ensures proper cleanup of the activity subject after test completion.
packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart (2)
78-85: LGTM!
CommentReactionListTesterconstructor correctly follows the established pattern withclient,wsTester, andcdnApidependencies.
148-167: LGTM!Factory function properly updated. The
createTestercallback pattern withwsTesteris consistently applied, enabling CDN API integration in test scenarios.packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart (5)
7-9: LGTM: Import path updates are correct.The import paths have been correctly updated to reflect the new directory structure with the helpers moved up two levels.
16-18: LGTM: Documentation improvements are clear.The documentation accurately describes the user parameter and the new connect parameter behavior.
43-43: LGTM: Connect parameter properly integrated.The optional connect parameter is correctly added to the function signature and forwarded to testWithTester, enabling custom connection flows while maintaining the default behavior.
Also applies to: 57-57
75-81: LGTM: Constructor properly updated for new tester infrastructure.The constructor correctly includes client, wsTester, and cdnApi dependencies, aligning with the BaseTester requirements and the broader PR refactoring.
140-156: LGTM: Factory function correctly wired.The factory function properly accepts and forwards the cdnApi and client dependencies to create the tester with the new WebSocket tester infrastructure.
packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart (1)
7-9: LGTM: Consistent refactoring pattern applied.The same systematic refactoring has been correctly applied to MemberListTester, including updated import paths, improved documentation, connect parameter support, and the new tester infrastructure with client, wsTester, and cdnApi dependencies.
Also applies to: 16-16, 19-19, 46-46, 60-60, 77-83, 136-154
packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart (1)
7-9: LGTM: ActivityListTester correctly refactored.The refactoring consistently applies the same improvements seen in other state testers, maintaining a uniform pattern across the test infrastructure.
Also applies to: 16-16, 19-19, 53-53, 67-67, 84-90, 137-157
packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart (1)
1-112: LGTM: Well-structured moderation client tester.The new ModerationClientTester follows the established tester patterns with clear documentation, proper wiring of dependencies (client, wsTester, cdnApi, feedsApi), and a helpful example. The absence of disposal registration appears intentional since ModerationClient likely doesn't require cleanup.
packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart (1)
1-87: LGTM: Well-structured feeds client tester with clear documentation.The FeedsClientTester provides a clean interface for testing feeds client operations with proper dependency wiring and helpful examples.
packages/stream_feeds_test/lib/src/testers/base_tester.dart (6)
8-8: LGTM: CDN mocking capabilities properly integrated.The addition of
CdnMockerMixinand thecdnApifield correctly extends the base tester with CDN testing capabilities, following proper encapsulation with@protectedannotation.Also applies to: 29-29, 32-44
50-76: LGTM: Excellent client and user access with clear documentation.The
clientandusergetters provide convenient access to test context with well-documented examples showing when and how to use them. The documentation clearly distinguishes between usingsubjectfor the specific object under test andclientfor client-level operations.
78-114: LGTM: WebSocket authentication helpers are well-designed.The
mockSuccessfulAuthandmockFailedAuthmethods provide a clean abstraction over the WebSocket tester, with excellent documentation explaining theerrorCodeparameter's impact on reconnection behavior.
128-153: LGTM: Event emission and pumping properly refactored.The
emitEventmethod correctly delegates to the WebSocket tester and automatically pumps the event queue. The updatedpumpEventQueuedocumentation clearly explains the event loop mechanics with a helpful external reference.
168-183: LGTM: Tester factory correctly refactored for WebSocket infrastructure.The
createTesterfunction properly sets up the WebSocket stream controller, creates the WebSocket tester, registers cleanup, and delegates to the concrete tester factory.
225-273: LGTM: Test orchestration significantly improved.The
testWithTesterfunction now properly wires CDN mocking throughFeedsConfig, and the new_defaultConnecthelper provides sensible defaults (mock successful auth + connect) while allowing customization through the optionalconnectparameter. The verification that the client is connected ensures tests start in a known good state.packages/stream_feeds_test/lib/stream_feeds_test.dart (1)
19-19: LGTM: Public API exports properly expanded.The additions correctly export the new CDN mocking capabilities and all the tester implementations, maintaining a clear organization with the
state/prefix for state testers and introducing the new client testers.Also applies to: 27-45
Summary by CodeRabbit
New Features
Tests
Chores
✏️ Tip: You can customize this high-level summary in your review settings.