forked from eatvio/eatvio_app
103 lines
3.5 KiB
Dart
103 lines
3.5 KiB
Dart
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);
|
||
});
|
||
});
|
||
}
|
||
|