Skip to content

Commit 03385fb

Browse files
committed
Add tests for FormBuilderDateRangePicker
1 parent 47acd8b commit 03385fb

File tree

1 file changed

+105
-0
lines changed

1 file changed

+105
-0
lines changed
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
import 'package:flutter/material.dart';
2+
import 'package:flutter_form_builder/flutter_form_builder.dart';
3+
import 'package:flutter_test/flutter_test.dart';
4+
import 'package:intl/intl.dart';
5+
6+
import 'form_builder_tester.dart';
7+
8+
void main() {
9+
group('FormBuilderDateRangePicker --', () {
10+
testWidgets('basic', (WidgetTester tester) async {
11+
const widgetName = 'formBuilderDateRangePicker';
12+
final testWidget = FormBuilderDateRangePicker(
13+
name: widgetName,
14+
firstDate: DateTime(2010),
15+
// Using last date < today to make date picker always open on 01/01/2010
16+
// If last date >= today, it opens on DateTime.now month, which complicates testing.
17+
lastDate: DateTime(2020),
18+
);
19+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
20+
21+
expect(formSave(), isTrue);
22+
expect(formValue<DateTimeRange?>(widgetName), isNull);
23+
24+
await tester.tap(find.byType(TextField));
25+
await tester.pump();
26+
27+
// Set Jan 2, 2010 as start
28+
await tester.tap(find.text('2').first);
29+
await tester.pump();
30+
31+
// Set Jan 4, 2010 as end
32+
await tester.tap(find.text('4').first);
33+
await tester.pump();
34+
35+
// Close date range picker dialog
36+
await tester.tap(find.text('SAVE'));
37+
await tester.pump();
38+
39+
expect(formSave(), isTrue);
40+
expect(
41+
formValue<DateTimeRange?>(widgetName),
42+
equals(DateTimeRange(
43+
start: DateTime(2010, 1, 2),
44+
end: DateTime(2010, 1, 4),
45+
)),
46+
);
47+
});
48+
49+
testWidgets('initial value', (WidgetTester tester) async {
50+
const widgetName = 'formBuilderDateRangePicker';
51+
final testWidget = FormBuilderDateRangePicker(
52+
name: widgetName,
53+
firstDate: DateTime(2010),
54+
lastDate: DateTime(2020),
55+
initialValue: DateTimeRange(
56+
start: DateTime(2010, 1, 2),
57+
end: DateTime(2010, 1, 4),
58+
),
59+
);
60+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
61+
62+
expect(formSave(), isTrue);
63+
expect(
64+
formValue<DateTimeRange?>(widgetName),
65+
equals(DateTimeRange(
66+
start: DateTime(2010, 1, 2),
67+
end: DateTime(2010, 1, 4),
68+
)),
69+
);
70+
});
71+
72+
testWidgets('text field empty when value is null',
73+
(WidgetTester tester) async {
74+
const widgetName = 'formBuilderDateRangePicker';
75+
final testWidget = FormBuilderDateRangePicker(
76+
name: widgetName,
77+
firstDate: DateTime(2010),
78+
lastDate: DateTime(2020),
79+
);
80+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
81+
82+
expect(find.widgetWithText(TextField, ''), findsOneWidget);
83+
});
84+
85+
testWidgets('text field shows date range', (WidgetTester tester) async {
86+
const widgetName = 'formBuilderDateRangePicker';
87+
final testWidget = FormBuilderDateRangePicker(
88+
name: widgetName,
89+
firstDate: DateTime(2010),
90+
lastDate: DateTime(2020),
91+
initialValue: DateTimeRange(
92+
start: DateTime(2010, 1, 2),
93+
end: DateTime(2010, 1, 4),
94+
),
95+
format: DateFormat('yyyy-MM-dd'),
96+
);
97+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
98+
99+
expect(
100+
find.widgetWithText(TextField, '2010-01-02 - 2010-01-04'),
101+
findsOneWidget,
102+
);
103+
});
104+
});
105+
}

0 commit comments

Comments
 (0)