mirror of
https://github.com/aljazceru/Auto-GPT.git
synced 2026-01-07 00:04:26 +01:00
This commit introduces the TaskListTile, a custom widget designed to display individual tasks in the TaskView. The tile offers a user-friendly interface with interactive features, such as selection and deletion. Key Features: - Responsive design that adapts its width based on the TaskView's constraints. - Interactive tile that changes its background color upon selection. - A delete icon that appears only when the tile is selected. - Comprehensive widget tests to ensure the TaskListTile behaves as expected. By splitting this into its own widget, the codebase remains modular, making it easier to maintain and update in the future.
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_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);
|
|
});
|
|
}
|