test(feed): update tests for Discover/For You feed type tabs

Updates feed tests to reflect the new feed type tab behavior:
- Default feed is now Discover (not timeline)
- Authenticated users see both Discover and For You tabs
- Unauthenticated users see only Discover tab
- Updated test descriptions for clarity

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

Changed files
+36 -9
test
+30 -5
test/providers/feed_provider_test.dart
···
});
group('loadFeed', () {
-
test('should load timeline when authenticated', () async {
+
test('should load discover feed when authenticated by default', () async {
when(mockAuthProvider.isAuthenticated).thenReturn(true);
final mockResponse = TimelineResponse(
···
);
when(
-
mockApiService.getTimeline(
+
mockApiService.getDiscover(
sort: anyNamed('sort'),
timeframe: anyNamed('timeframe'),
limit: anyNamed('limit'),
···
).thenAnswer((_) async => mockResponse);
await feedProvider.loadFeed(refresh: true);
+
+
expect(feedProvider.posts.length, 1);
+
expect(feedProvider.error, null);
+
expect(feedProvider.isLoading, false);
+
});
+
+
test('should load timeline when feed type is For You', () async {
+
when(mockAuthProvider.isAuthenticated).thenReturn(true);
+
+
final mockResponse = TimelineResponse(
+
feed: [_createMockPost()],
+
cursor: 'next-cursor',
+
);
+
+
when(
+
mockApiService.getTimeline(
+
sort: anyNamed('sort'),
+
timeframe: anyNamed('timeframe'),
+
limit: anyNamed('limit'),
+
cursor: anyNamed('cursor'),
+
),
+
).thenAnswer((_) async => mockResponse);
+
+
await feedProvider.setFeedType(FeedType.forYou);
expect(feedProvider.posts.length, 1);
expect(feedProvider.error, null);
···
sort: anyNamed('sort'),
timeframe: anyNamed('timeframe'),
limit: anyNamed('limit'),
+
cursor: anyNamed('cursor'),
),
).thenAnswer((_) async => firstResponse);
-
await feedProvider.loadFeed(refresh: true);
+
await feedProvider.setFeedType(FeedType.forYou);
// Load more
final secondResponse = TimelineResponse(
···
),
).thenAnswer((_) async => response);
-
await feedProvider.fetchTimeline(refresh: true);
+
await feedProvider.setFeedType(FeedType.forYou);
await feedProvider.loadMore();
// Should not make additional calls while loading
···
),
).thenThrow(Exception('Network error'));
-
await feedProvider.loadFeed(refresh: true);
+
await feedProvider.setFeedType(FeedType.forYou);
expect(feedProvider.error, isNotNull);
// Retry
+6 -4
test/widgets/feed_screen_test.dart
···
expect(find.text('Test Post 2'), findsOneWidget);
});
-
testWidgets('should display "Feed" title when authenticated', (
+
testWidgets('should display feed type tabs when authenticated', (
tester,
) async {
fakeAuthProvider.setAuthenticated(value: true);
await tester.pumpWidget(createTestWidget());
-
expect(find.text('Feed'), findsOneWidget);
+
expect(find.text('Discover'), findsOneWidget);
+
expect(find.text('For You'), findsOneWidget);
});
-
testWidgets('should display "Explore" title when not authenticated', (
+
testWidgets('should display only Discover tab when not authenticated', (
tester,
) async {
fakeAuthProvider.setAuthenticated(value: false);
await tester.pumpWidget(createTestWidget());
-
expect(find.text('Explore'), findsOneWidget);
+
expect(find.text('Discover'), findsOneWidget);
+
expect(find.text('For You'), findsNothing);
});
testWidgets('should handle pull-to-refresh', (tester) async {