Files
eatvio_app/test/features/chat/presentation/widgets/basic_widget_test.dart
2025-12-03 18:12:17 +03:00

103 lines
3.5 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:eatvio_app/core/theme/theme_helper.dart';
import 'package:eatvio_app/features/chat/models/chat_message_model.dart';
import 'package:eatvio_app/features/chat/presentation/widgets/chat_bubble_widget.dart';
import 'package:eatvio_app/generated/l10n.dart';
import 'package:flutter/material.dart';
import 'package:flutter_localizations/flutter_localizations.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
group('Chat Basic Widget Tests', () {
Widget createTestWidget(Widget child) {
return MaterialApp(
theme: ThemeHelper().themeData(),
localizationsDelegates: const [
S.delegate,
GlobalMaterialLocalizations.delegate,
GlobalWidgetsLocalizations.delegate,
GlobalCupertinoLocalizations.delegate,
],
supportedLocales: const [Locale('ru')],
home: Scaffold(body: SingleChildScrollView(child: child)),
);
}
testWidgets('ChatBubbleWidget - отображает сообщение', (WidgetTester tester) async {
final widget = ChatBubbleWidget(
sendTime: DateTime.now(),
text: 'Test message',
isCurrentUser: true,
mediaData: const [],
isRead: false,
messageState: MessageState.sent,
messageUuid: 'uuid-1',
userSlug: 'user-slug',
);
await tester.pumpWidget(createTestWidget(widget));
await tester.pumpAndSettle();
expect(find.text('Test message'), findsOneWidget);
});
testWidgets('ChatBubbleWidget - отображает сообщение от другого пользователя', (WidgetTester tester) async {
final widget = ChatBubbleWidget(
sendTime: DateTime.now(),
text: 'Other user message',
isCurrentUser: false,
mediaData: const [],
isRead: false,
messageState: MessageState.sent,
messageUuid: 'uuid-2',
userSlug: 'user-slug',
);
await tester.pumpWidget(createTestWidget(widget));
await tester.pumpAndSettle();
expect(find.text('Other user message'), findsOneWidget);
});
testWidgets('ChatBubbleWidget - отображает сообщение в состоянии загрузки', (WidgetTester tester) async {
// Note: This widget may require ChatRoomCubit in context for error state
// For now, we'll test the basic rendering
final widget = ChatBubbleWidget(
sendTime: DateTime.now(),
text: 'Loading message',
isCurrentUser: true,
mediaData: const [],
isRead: false,
messageState: MessageState.loading,
messageUuid: 'uuid-3',
userSlug: 'user-slug',
);
await tester.pumpWidget(createTestWidget(widget));
// Don't use pumpAndSettle as it may wait for animations that require context
await tester.pump();
// The widget should render, even if some interactions require context
expect(find.text('Loading message'), findsOneWidget);
});
testWidgets('ChatBubbleWidget - отображает сообщение с ошибкой', (WidgetTester tester) async {
final widget = ChatBubbleWidget(
sendTime: DateTime.now(),
text: 'Error message',
isCurrentUser: true,
mediaData: const [],
isRead: false,
messageState: MessageState.error,
messageUuid: 'uuid-4',
userSlug: 'user-slug',
);
await tester.pumpWidget(createTestWidget(widget));
await tester.pumpAndSettle();
expect(find.text('Error message'), findsOneWidget);
});
});
}