File size: 1,960 Bytes
3382f47
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:auto_gpt_flutter_client/views/chat/chat_input_field.dart';

void main() {
  // Test if the ChatInputField widget renders correctly
  testWidgets('ChatInputField renders correctly', (WidgetTester tester) async {
    await tester.pumpWidget(
      MaterialApp(
        home: Scaffold(
          body: ChatInputField(
            onSendPressed: () {},
          ),
        ),
      ),
    );

    // Find the TextField widget
    expect(find.byType(TextField), findsOneWidget);
    // Find the send IconButton
    expect(find.byIcon(Icons.send), findsOneWidget);
  });

  // Test if the TextField inside ChatInputField can accept and display input
  testWidgets('ChatInputField text field accepts input',
      (WidgetTester tester) async {
    await tester.pumpWidget(
      MaterialApp(
        home: Scaffold(
          body: ChatInputField(
            onSendPressed: () {},
          ),
        ),
      ),
    );

    // Type 'Hello' into the TextField
    await tester.enterText(find.byType(TextField), 'Hello');
    // Rebuild the widget with the new text
    await tester.pump();

    // Expect to find 'Hello' in the TextField
    expect(find.text('Hello'), findsOneWidget);
  });

  // Test if the send button triggers the provided onSendPressed callback
  testWidgets('ChatInputField send button triggers callback',
      (WidgetTester tester) async {
    bool onPressedCalled = false;

    await tester.pumpWidget(
      MaterialApp(
        home: Scaffold(
          body: ChatInputField(
            onSendPressed: () {
              onPressedCalled = true;
            },
          ),
        ),
      ),
    );

    // Tap the send IconButton
    await tester.tap(find.byIcon(Icons.send));
    // Rebuild the widget after the tap
    await tester.pump();

    // Check if the callback was called
    expect(onPressedCalled, isTrue);
  });
}