Skip to content

Commit 0f7b350

Browse files
committed
test: add tests
1 parent a694d0d commit 0f7b350

File tree

2 files changed

+145
-0
lines changed

2 files changed

+145
-0
lines changed
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:stream_chat_flutter/src/ai_assistant/ai_typing_indicator_view.dart';
4+
5+
void main() {
6+
group('AITypingIndicatorView', () {
7+
testWidgets('displays the provided text', (WidgetTester tester) async {
8+
const dotCount = 5;
9+
const testText = 'AI is thinking';
10+
11+
await tester.pumpWidget(
12+
const MaterialApp(
13+
home: Scaffold(
14+
body: AITypingIndicatorView(
15+
text: testText,
16+
dotCount: dotCount,
17+
),
18+
),
19+
),
20+
);
21+
22+
await tester.pump(const Duration(milliseconds: 200 * dotCount));
23+
24+
expect(find.text(testText), findsOneWidget);
25+
});
26+
27+
testWidgets('applies the provided textStyle', (WidgetTester tester) async {
28+
const dotCount = 5;
29+
const testText = 'AI is thinking';
30+
const textStyle = TextStyle(fontSize: 20, color: Colors.blue);
31+
32+
await tester.pumpWidget(
33+
const MaterialApp(
34+
home: Scaffold(
35+
body: AITypingIndicatorView(
36+
text: testText,
37+
textStyle: textStyle,
38+
dotCount: dotCount,
39+
),
40+
),
41+
),
42+
);
43+
44+
await tester.pump(const Duration(milliseconds: 200 * dotCount));
45+
46+
final textWidget = tester.widget<Text>(find.text(testText));
47+
expect(textWidget.style?.fontSize, equals(20));
48+
expect(textWidget.style?.color, equals(Colors.blue));
49+
});
50+
});
51+
}
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_test/flutter_test.dart';
3+
import 'package:stream_chat_flutter/src/ai_assistant/stream_typewriter_builder.dart';
4+
import 'package:stream_chat_flutter/src/ai_assistant/streaming_message_view.dart';
5+
import 'package:stream_chat_flutter/src/misc/markdown_message.dart';
6+
7+
void main() {
8+
group('StreamingMessageView Tests', () {
9+
testWidgets(
10+
'displays initial text',
11+
(WidgetTester tester) async {
12+
const testText = 'Hello, world!';
13+
14+
await tester.pumpWidget(
15+
const MaterialApp(
16+
home: Scaffold(
17+
body: StreamingMessageView(text: testText),
18+
),
19+
),
20+
);
21+
22+
expect(find.text(testText), findsOneWidget);
23+
},
24+
);
25+
26+
testWidgets(
27+
'updates text progressively like a typewriter',
28+
(WidgetTester tester) async {
29+
const testText = 'Hello, world!';
30+
const typingSpeed = Duration(milliseconds: 20);
31+
32+
await tester.pumpWidget(
33+
const MaterialApp(
34+
home: Scaffold(
35+
body: StreamingMessageView(
36+
text: testText,
37+
typingSpeed: typingSpeed,
38+
),
39+
),
40+
),
41+
);
42+
43+
expect(find.text(testText), findsOneWidget);
44+
45+
const updatedText = 'Hello, world! How are you?';
46+
await tester.pumpWidget(
47+
const MaterialApp(
48+
home: Scaffold(
49+
body: StreamingMessageView(
50+
text: updatedText,
51+
typingSpeed: typingSpeed,
52+
),
53+
),
54+
),
55+
);
56+
57+
await tester.pump(typingSpeed * updatedText.length);
58+
59+
expect(find.text(updatedText), findsOneWidget);
60+
},
61+
);
62+
63+
testWidgets(
64+
'handles links correctly',
65+
(WidgetTester tester) async {
66+
const testText = '[Click me](https://example.com)';
67+
const typingSpeed = Duration(milliseconds: 20);
68+
String? tappedLink;
69+
70+
await tester.pumpWidget(
71+
MaterialApp(
72+
home: Scaffold(
73+
body: StreamingMessageView(
74+
text: testText,
75+
typingSpeed: typingSpeed,
76+
onTapLink: (String link, String? href, String title) {
77+
tappedLink = href;
78+
},
79+
),
80+
),
81+
),
82+
);
83+
84+
await tester.pump(typingSpeed * testText.length);
85+
86+
final linkFinder = find.text('Click me');
87+
expect(linkFinder, findsOneWidget);
88+
await tester.tap(linkFinder);
89+
90+
expect(tappedLink, equals('https://example.com'));
91+
},
92+
);
93+
});
94+
}

0 commit comments

Comments
 (0)