mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2025-12-27 19:04:25 +01:00
This commit introduces the ChatInputField widget, a custom text input field designed for use within the ChatView. The ChatInputField widget handles varying screen sizes and gracefully resizes itself according to the available width. It starts with a height of 50 and can expand up to 400 as the user types more lines of text. In addition to the implementation, this commit also includes widget tests to ensure the ChatInputField behaves as expected. - Add ChatInputField widget with dynamic resizing - Include IconButton for sending messages - Add widget tests for ChatInputField - Handle edge cases and overflows
72 lines
2.1 KiB
Dart
72 lines
2.1 KiB
Dart
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:flutter/material.dart';
|
|
import 'package:auto_gpt_flutter_client/views/task/task_list_tile.dart';
|
|
import 'package:auto_gpt_flutter_client/models/task.dart';
|
|
|
|
void main() {
|
|
final Task testTask = Task(id: 1, title: "Sample Task");
|
|
|
|
testWidgets('TaskListTile displays the task title',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(MaterialApp(
|
|
home: TaskListTile(task: testTask, onTap: () {}, onDelete: () {})));
|
|
expect(find.text('Sample Task'), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('TaskListTile toggles isSelected state on tap',
|
|
(WidgetTester tester) async {
|
|
await tester.pumpWidget(MaterialApp(
|
|
home: TaskListTile(task: testTask, onTap: () {}, onDelete: () {})));
|
|
|
|
// Initially, the delete icon should not be present
|
|
expect(find.byIcon(Icons.close), findsNothing);
|
|
|
|
// Tap the tile
|
|
await tester.tap(find.text('Sample Task'));
|
|
await tester.pump();
|
|
|
|
// The delete icon should appear
|
|
expect(find.byIcon(Icons.close), findsOneWidget);
|
|
});
|
|
|
|
testWidgets('TaskListTile triggers onDelete when delete icon is tapped',
|
|
(WidgetTester tester) async {
|
|
bool wasDeleteCalled = false;
|
|
await tester.pumpWidget(MaterialApp(
|
|
home: TaskListTile(
|
|
task: testTask,
|
|
onTap: () {},
|
|
onDelete: () {
|
|
wasDeleteCalled = true;
|
|
})));
|
|
|
|
// Tap the tile to make the delete icon appear
|
|
await tester.tap(find.text('Sample Task'));
|
|
await tester.pump();
|
|
|
|
// Tap the delete icon
|
|
await tester.tap(find.byIcon(Icons.close));
|
|
await tester.pump();
|
|
|
|
expect(wasDeleteCalled, true);
|
|
});
|
|
|
|
testWidgets('TaskListTile triggers onTap when tapped',
|
|
(WidgetTester tester) async {
|
|
bool wasTapped = false;
|
|
await tester.pumpWidget(MaterialApp(
|
|
home: TaskListTile(
|
|
task: testTask,
|
|
onTap: () {
|
|
wasTapped = true;
|
|
},
|
|
onDelete: () {})));
|
|
|
|
// Tap the tile
|
|
await tester.tap(find.text('Sample Task'));
|
|
await tester.pump();
|
|
|
|
expect(wasTapped, true);
|
|
});
|
|
}
|