historylist test

main
Julian Gegner 2023-03-06 20:52:35 +01:00
parent a9480cc508
commit 6c0708ca77
1 changed files with 102 additions and 0 deletions

View File

@ -0,0 +1,102 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:intl/date_symbol_data_local.dart';
import 'package:intl/intl.dart';
import 'package:smoke_cess_app/widgets/entry_detail_widget.dart';
import 'package:smoke_cess_app/widgets/history_list_widget.dart';
void main() {
group('HistoryList', () {
initializeDateFormatting('de');
final List<String> history = ['1', '2', '3'];
dateSelector(String p0) => DateTime.now();
entryDataSelector(String p0) => p0;
testWidgets('should produce #(history.length) EntryDetail Widgets',
(widgetTester) async {
await widgetTester.pumpWidget(WrappedHistoryList(
history: history,
dateSelector: dateSelector,
entryDataSelector: entryDataSelector));
final widgetFinder = find.byType(EntryDetail);
final dateFinder =
find.text(DateFormat.MMMd('de').format(DateTime.now()));
//HistoryList uses Icons.circle as default if there is no IconData provided
final iconFinder = find.byIcon(Icons.circle);
expect(widgetFinder, findsNWidgets(history.length));
expect(dateFinder, findsNWidgets(history.length));
expect(iconFinder, findsNWidgets(history.length));
});
testWidgets(
'should render correct icon if specified with icon selection function',
(widgetTester) async {
IconData iconDataSelector(String p0) => Icons.email;
await widgetTester.pumpWidget(WrappedHistoryList(
history: history,
dateSelector: dateSelector,
entryDataSelector: entryDataSelector,
iconDataSelector: iconDataSelector,
));
final circleIconFinder = find.byIcon(Icons.circle);
final correctIconFinder = find.byIcon(Icons.email);
expect(circleIconFinder, findsNothing);
expect(correctIconFinder, findsNWidgets(history.length));
});
testWidgets('icon field should overwrite iconSelector',
(widgetTester) async {
const IconData icon = Icons.abc;
IconData iconDataSelector(String p0) => Icons.email;
await widgetTester.pumpWidget(WrappedHistoryList(
history: history,
dateSelector: dateSelector,
entryDataSelector: entryDataSelector,
iconDataSelector: iconDataSelector,
icon: Icons.abc,
));
final circleIconFinder = find.byIcon(Icons.circle);
final emailIconFinder = find.byIcon(Icons.email);
final correctIconFinder = find.byIcon(icon);
expect(circleIconFinder, findsNothing);
expect(emailIconFinder, findsNothing);
expect(correctIconFinder, findsNWidgets(history.length));
});
});
}
class WrappedHistoryList<T> extends StatelessWidget {
final List<T> history;
final DateTime Function(T) dateSelector;
final String Function(T) entryDataSelector;
final IconData Function(T)? iconDataSelector;
final String Function(T)? entryCommentSelector;
final IconData? icon;
const WrappedHistoryList(
{super.key,
required this.history,
required this.dateSelector,
required this.entryDataSelector,
this.iconDataSelector,
this.icon,
this.entryCommentSelector});
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
body: Column(children: [
HistoryList<T>(
history: history,
dateSelector: dateSelector,
entryDataSelector: entryDataSelector,
icon: icon,
iconDataSelector: iconDataSelector,
entryCommentSelector: entryCommentSelector,
)
])));
}
}