Files
social-app/apps/test/features/home/ui/screens/home_screen_test.dart
T
qzl c3192a2431 feat(chat): add ChatBubble widget and mock data for home screen
- Add ChatBubble reusable widget for chat messages
- Add HomeMockData for chat list mock data
- Add HomeScreen widget tests
- Add AG-UI chat design and implementation plan docs
- Add friendship design docs
- Ignore backend/logs directory
2026-02-28 14:47:33 +08:00

53 lines
1.9 KiB
Dart

import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:lucide_icons/lucide_icons.dart';
import 'package:social_app/features/home/ui/screens/home_screen.dart';
import 'package:social_app/shared/widgets/chat_bubble.dart';
void main() {
group('HomeScreen Widget Tests', () {
testWidgets('displays chat messages with ChatBubble', (
WidgetTester tester,
) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.byType(ChatBubble), findsAtLeastNWidgets(1));
});
testWidgets('displays user request message', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.textContaining('明天提醒我开会'), findsOneWidget);
});
testWidgets('displays AI response message', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.textContaining('已为你创建日程'), findsOneWidget);
});
testWidgets('displays calendar schedule cards in chat flow', (
WidgetTester tester,
) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.byType(ChatBubble), findsAtLeastNWidgets(2));
});
testWidgets('input field is present', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.byType(TextField), findsOneWidget);
expect(find.text('输入消息...'), findsOneWidget);
});
testWidgets('header icons are present', (WidgetTester tester) async {
await tester.pumpWidget(const MaterialApp(home: HomeScreen()));
expect(find.byIcon(LucideIcons.settings), findsOneWidget);
expect(find.byIcon(LucideIcons.calendar), findsOneWidget);
expect(find.byIcon(LucideIcons.messageSquare), findsOneWidget);
});
});
}