Feature/widget testing (#8)
* Configured iOS Build * Created ProgressListTile widget * Created MaterialTesterWidget * Created String Methods for Testing in ProgressListTile * Created ProgressListTileStrings class * Using Progress List Tile * Created Progress List View * Created Progress List Tile currently, future and past test. * Created Progress List View one and five Time Progresses test. Signed-off-by: Andreas Fahrecker <AndreasFahrecker@gmail.com>
This commit is contained in:
committed by
GitHub
parent
90f2998088
commit
fc35476503
18
test/MaterialTesterWidget.dart
Normal file
18
test/MaterialTesterWidget.dart
Normal file
@ -0,0 +1,18 @@
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
class MaterialTesterWidget extends StatelessWidget {
|
||||
final Widget widget;
|
||||
|
||||
MaterialTesterWidget({
|
||||
@required this.widget,
|
||||
});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
body: widget,
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
@ -7,24 +7,124 @@
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter_test/flutter_test.dart';
|
||||
import 'package:percent_indicator/linear_percent_indicator.dart';
|
||||
import 'package:time_progress_tracker/models/app_settings.dart';
|
||||
import 'package:time_progress_tracker/models/time_progress.dart';
|
||||
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_tile.dart';
|
||||
import 'package:time_progress_tracker/widgets/progress_list_view/progress_list_view.dart';
|
||||
|
||||
import 'package:time_progress_calculator/main.dart';
|
||||
import 'MaterialTesterWidget.dart';
|
||||
|
||||
void main() {
|
||||
testWidgets('Counter increments smoke test', (WidgetTester tester) async {
|
||||
// Build our app and trigger a frame.
|
||||
await tester.pumpWidget(MyApp());
|
||||
final AppSettings _defaultAppSettings = AppSettings.defaults();
|
||||
final int _thisYear = DateTime.now().year;
|
||||
final TimeProgress _activeProgress = TimeProgress(
|
||||
"TestProgress", DateTime(_thisYear - 2), DateTime(_thisYear + 2));
|
||||
|
||||
// Verify that our counter starts at 0.
|
||||
expect(find.text('0'), findsOneWidget);
|
||||
expect(find.text('1'), findsNothing);
|
||||
void _findStringOnce(String str) => expect(find.text(str), findsOneWidget);
|
||||
|
||||
// Tap the '+' icon and trigger a frame.
|
||||
await tester.tap(find.byIcon(Icons.add));
|
||||
await tester.pump();
|
||||
testWidgets("Progress List Tile with currently active progress works",
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
timeProgress: _activeProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
),
|
||||
));
|
||||
|
||||
// Verify that our counter has incremented.
|
||||
expect(find.text('0'), findsNothing);
|
||||
expect(find.text('1'), findsOneWidget);
|
||||
_findStringOnce(_activeProgress.name);
|
||||
_findStringOnce(ProgressListTileStrings.percentString(_activeProgress));
|
||||
|
||||
WidgetPredicate linearPercentPredicate = (Widget widget) =>
|
||||
widget is LinearPercentIndicator &&
|
||||
widget.percent == _activeProgress.percentDone() &&
|
||||
widget.progressColor == _defaultAppSettings.doneColor &&
|
||||
widget.backgroundColor == _defaultAppSettings.leftColor;
|
||||
expect(find.byWidgetPredicate(linearPercentPredicate), findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets("Progress List Tile with future progress works",
|
||||
(WidgetTester tester) async {
|
||||
TimeProgress futureProgress = TimeProgress(
|
||||
"Test Progress",
|
||||
DateTime(_thisYear + 1),
|
||||
DateTime(_thisYear + 2),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
timeProgress: futureProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
),
|
||||
));
|
||||
|
||||
_findStringOnce(futureProgress.name);
|
||||
_findStringOnce(ProgressListTileStrings.startsInDaysString(futureProgress));
|
||||
});
|
||||
|
||||
testWidgets("Progress List Tile with past progress works",
|
||||
(WidgetTester tester) async {
|
||||
TimeProgress pastProgress = TimeProgress(
|
||||
"Test Progress",
|
||||
DateTime(_thisYear - 2),
|
||||
DateTime(_thisYear - 1),
|
||||
);
|
||||
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListTile(
|
||||
timeProgress: pastProgress,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
),
|
||||
));
|
||||
|
||||
_findStringOnce(pastProgress.name);
|
||||
_findStringOnce(ProgressListTileStrings.endedDaysAgoString(pastProgress));
|
||||
});
|
||||
|
||||
WidgetPredicate getProgressListTilePredicate(
|
||||
TimeProgress tp, AppSettings as) =>
|
||||
(Widget widget) =>
|
||||
widget is ProgressListTile &&
|
||||
widget.timeProgress == tp &&
|
||||
widget.doneColor == as.doneColor &&
|
||||
widget.leftColor == as.leftColor;
|
||||
|
||||
testWidgets("Progress List View displays one tile",
|
||||
(WidgetTester tester) async {
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListView(
|
||||
timeProgressList: [_activeProgress],
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
),
|
||||
));
|
||||
|
||||
_findStringOnce(_activeProgress.name);
|
||||
expect(
|
||||
find.byWidgetPredicate(
|
||||
getProgressListTilePredicate(_activeProgress, _defaultAppSettings)),
|
||||
findsOneWidget);
|
||||
});
|
||||
|
||||
testWidgets("Progress List View displays file tiles",
|
||||
(WidgetTester tester) async {
|
||||
List<TimeProgress> tpList = [];
|
||||
for (int i = 0; i < 5; i++) tpList.add(_activeProgress);
|
||||
await tester.pumpWidget(MaterialTesterWidget(
|
||||
widget: ProgressListView(
|
||||
timeProgressList: tpList,
|
||||
doneColor: _defaultAppSettings.doneColor,
|
||||
leftColor: _defaultAppSettings.leftColor,
|
||||
),
|
||||
));
|
||||
|
||||
expect(find.text(_activeProgress.name), findsNWidgets(5));
|
||||
expect(
|
||||
find.byWidgetPredicate(
|
||||
getProgressListTilePredicate(_activeProgress, _defaultAppSettings)),
|
||||
findsNWidgets(5));
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user