Skip to content

Conversation

@xsahil03x
Copy link
Member

@xsahil03x xsahil03x commented Dec 19, 2025

Summary by CodeRabbit

  • New Features

    • Moderation client made publicly available; moderation config queries now return paginated results.
    • CDN client and CDN API are publicly exposed.
    • Top-level package tags extended to include moderation and feeds client tooling.
  • Tests

    • Large suite of new and reorganized tests, testers, mocks, CDN mocking utilities, WebSocket test helper, and many test-data factories added.
  • Chores

    • Test library API reorganized and test scaffolding updated to integrate CDN mocking and refined connection wiring.

✏️ Tip: You can customize this high-level summary in your review settings.

@xsahil03x xsahil03x requested a review from a team as a code owner December 19, 2025 14:23
@coderabbitai
Copy link

coderabbitai bot commented Dec 19, 2025

Walkthrough

Adds 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

Cohort / File(s) Summary
Moderation client API
packages/stream_feeds/lib/src/client/moderation_client.dart
queryModerationConfigs signature changed from Future<void> to Future<Result<PaginationResult<ModerationConfigData>>> and docs updated.
Library exports
packages/stream_feeds/lib/stream_feeds.dart, packages/stream_feeds/lib/src/feeds_client.dart
Added exports for CDN API/clients and state/utils; re-exported client/moderation_client.dart from feeds_client API.
Feeds client impl
packages/stream_feeds/lib/src/client/feeds_client_impl.dart
Removed unused import of moderation_client.dart.
Test config tags
packages/stream_feeds/dart_test.yaml
Added top-level test tags feeds-client and moderation-client.
New/removed client tests
packages/stream_feeds/test/client/moderation_client_test.dart, packages/stream_feeds/test/client/feeds_client_impl_test.dart, packages/stream_feeds/test/client/feeds_client_test.dart
Added comprehensive moderation-client tests and a large feeds_client_test; removed older feeds_client_impl_test.
Test helpers — mocks & CDN
packages/stream_feeds_test/lib/src/helpers/mocks.dart, .../cdn_mocker_mixin.dart, .../api_mocker_mixin.dart
Added MockCdnApi, MockDefaultApi, CdnMockerMixin (mock/verify helpers) and mockApiFailure helper; updated generateTestUserToken return type.
Test data factories
packages/stream_feeds_test/lib/src/helpers/test_data.dart
Added many factory helpers for moderation, device, activity, config, and CDN-related response objects.
Base tester & wiring
packages/stream_feeds_test/lib/src/testers/base_tester.dart
BaseTester now mixes in CdnMockerMixin, requires MockCdnApi and WebSocketTester, exposes cdnApi and user getter, and adds connect hook/default connect flow.
New client testers
packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart, .../moderation_client_tester.dart
Added FeedsClientTester and ModerationClientTester helpers and test wrappers (feedsClientTest, moderationClientTest).
WebSocket tester
packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
New WebSocketTester utility and WebSocketResetFunction typedef to simulate auth/connect/error events and drive test streams.
State testers — imports & ctor changes
packages/stream_feeds_test/lib/src/testers/state/*.dart (many files)
Adjusted helper import paths and updated many tester constructors/factories to accept and forward MockCdnApi cdnApi, wsTester, and optional connect hooks (replacing wsStreamController).
Test package exports reorg
packages/stream_feeds_test/lib/stream_feeds_test.dart
Reorganized exports: added cdn_mocker_mixin, client tester exports, namespaced state/ tester exports, and added websocket_tester; removed older flat tester exports.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

  • Wide but repetitive: many testers updated with similar patterns (cdnApi/wsTester/connect) which lowers per-file complexity.
  • New public API change in moderation client requires checking call sites and tests.
  • New test tooling (cdn mocks, WebSocketTester, data factories) adds surface area to validate.

Focus review on:

  • All call sites and tests updated to consume queryModerationConfigs's new return type.
  • Proper wiring of cdnApi through BaseTester, tester factories, and test helpers.
  • Correct behavior and usage of WebSocketTester (auth simulation) and its integration with BaseTester.
  • Consistency of test-data factory fields/types with API model types.

Possibly related PRs

Suggested reviewers

  • renefloor
  • Brazol

Poem

"I hopped in with mocks and a tiny drum,
I wired the CDN where test-rivers run,
I thumped out warnings for imports that move,
I planted paged queries in moderation's groove,
Now the burrow's arranged — let's run tests and have fun!" 🥕

Pre-merge checks and finishing touches

❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Description check ⚠️ Warning No pull request description was provided; the template requires description of changes and testing information. Add a description explaining the test additions, their purpose, and any testing instructions or context needed for reviewers.
✅ Passed checks (2 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately describes the main focus: adding tests for Feeds and Moderation clients.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
✨ Finishing touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch test/add-client-tests

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@xsahil03x xsahil03x changed the title test: add tests for Feeds and Moderation client test(llc: add tests for Feeds and Moderation client Dec 19, 2025
@xsahil03x xsahil03x changed the title test(llc: add tests for Feeds and Moderation client test(llc): add tests for Feeds and Moderation client Dec 19, 2025
@codecov
Copy link

codecov bot commented Dec 19, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 86.53%. Comparing base (d63b14c) to head (01b5a9a).

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.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link

@coderabbitai coderabbitai bot left a 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.

createDefaultConfigResponse duplicates the existing createDefaultModerationConfigResponse (line 860). Both create ConfigResponse with similar parameters. Consider removing this function and using createDefaultModerationConfigResponse instead, or consolidate them into a single function.

🔎 Suggested consolidation

If the only difference is the async default value, consider removing createDefaultConfigResponse and 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.

📥 Commits

Reviewing files that changed from the base of the PR and between d63b14c and aa22bbc.

📒 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 @freezed mixed mode for data classes in Dart
Return Result<T> from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching with switch expressions in Dart
Mark public APIs with @includeInBarrelFile annotation 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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/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 the lib/ structure in test/ 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.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
packages/stream_feeds/lib/**/*.dart

📄 CodeRabbit inference engine (AGENTS.md)

Apply Dart analyzer configuration from analysis_options.yaml for code quality

Files:

  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/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.yaml
  • packages/stream_feeds/test/client/moderation_client_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/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.yaml
  • packages/stream_feeds/test/client/moderation_client_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds/test/client/moderation_client_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds/test/client/moderation_client_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.yaml
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • 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/stream_feeds.dart : Follow Effective Dart documentation guidelines for all public APIs

Applied to files:

  • packages/stream_feeds/dart_test.yaml
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/helpers/api_mocker_mixin.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds/lib/src/client/moderation_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/helpers/test_data.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds/lib/src/feeds_client.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/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.dart
  • packages/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.dart
  • 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/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.dart
  • packages/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.dart
  • packages/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-client tag 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 mockApi and provides a convenient way to test error paths. The default StackTrace.current fallback 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_values ignore 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 registerFallbackValue for 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 setUpAll needed here since getBlockedUsers() 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 new PaginationResult return type.

Good verification of paginationResult.items at 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 ModerationClient through feeds_client.dart at line 45, and feeds_client.dart is re-exported from the main lib/stream_feeds.dart entry 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: queryModerationConfigs now returns a Result.

The signature change from Future<void> to Future<Result<PaginationResult<ModerationConfigData>>> aligns with the guideline that all repository and client methods must return Result<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 ModerationClientTester follows best practices with a final class, 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 to createTester for consistent setup and cleanup handling.


10-69: Well-structured test helper with comprehensive documentation.

The moderationClientTest function 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_tester export completes the public test API for moderation testing.

Copy link

@coderabbitai coderabbitai bot left a 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 _createFeedsClientTester function has both subject and client parameters (lines 89-90), but they're both StreamFeedsClient and 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.

📥 Commits

Reviewing files that changed from the base of the PR and between 224be90 and 01b5a9a.

📒 Files selected for processing (22)
  • packages/stream_feeds/test/client/feeds_client_test.dart
  • packages/stream_feeds_test/lib/src/testers/base_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/follow_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/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 @freezed mixed mode for data classes in Dart
Return Result<T> from all repository methods in Dart
Apply early return patterns consistently in Dart code
Use pattern matching with switch expressions in Dart
Mark public APIs with @includeInBarrelFile annotation 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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/member_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/stream_feeds_test/lib/stream_feeds_test.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/websocket_tester.dart
  • packages/stream_feeds_test/lib/src/testers/moderation_client_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/bookmark_folder_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_vote_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/poll_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reply_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_comment_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/moderation_config_list_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_reaction_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/feed_list_tester.dart
  • packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/feeds_client_tester.dart
  • packages/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.dart
  • packages/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.dart
  • packages/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.dart
  • packages/stream_feeds_test/lib/src/testers/state/comment_reaction_list_tester.dart
  • packages/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.dart
  • packages/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.dart
  • packages/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.dart
  • 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 (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 mockSuccessfulAuth method 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 mockFailedAuth method provides flexible error code configuration with clear documentation about reconnection behavior. The emitEvent method'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 PollListTester constructor 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:

  1. Accepts the new cdnApi parameter
  2. Uses the createTester callback pattern with wsTester
  3. 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 PollVoteListTester constructor correctly mirrors the pattern established across other testers, requiring client, wsTester, and cdnApi dependencies.


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!

ActivityReactionListTester properly extends BaseTester with the expanded dependency surface. Constructor wiring is consistent with sibling testers.


149-168: LGTM!

Factory function correctly updated with cdnApi parameter and the createTester callback pattern for WebSocket tester integration.

packages/stream_feeds_test/lib/src/testers/state/activity_tester.dart (2)

118-125: LGTM!

ActivityTester constructor properly updated with client, wsTester, and cdnApi dependencies, 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!

CommentReactionListTester constructor correctly follows the established pattern with client, wsTester, and cdnApi dependencies.


148-167: LGTM!

Factory function properly updated. The createTester callback pattern with wsTester is 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 CdnMockerMixin and the cdnApi field correctly extends the base tester with CDN testing capabilities, following proper encapsulation with @protected annotation.

Also applies to: 29-29, 32-44


50-76: LGTM: Excellent client and user access with clear documentation.

The client and user getters provide convenient access to test context with well-documented examples showing when and how to use them. The documentation clearly distinguishes between using subject for the specific object under test and client for client-level operations.


78-114: LGTM: WebSocket authentication helpers are well-designed.

The mockSuccessfulAuth and mockFailedAuth methods provide a clean abstraction over the WebSocket tester, with excellent documentation explaining the errorCode parameter's impact on reconnection behavior.


128-153: LGTM: Event emission and pumping properly refactored.

The emitEvent method correctly delegates to the WebSocket tester and automatically pumps the event queue. The updated pumpEventQueue documentation clearly explains the event loop mechanics with a helpful external reference.


168-183: LGTM: Tester factory correctly refactored for WebSocket infrastructure.

The createTester function 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 testWithTester function now properly wires CDN mocking through FeedsConfig, and the new _defaultConnect helper provides sensible defaults (mock successful auth + connect) while allowing customization through the optional connect parameter. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants