Skip to content

Commit d1cf2ef

Browse files
test: Add FormBuilderDateTimePicker tests
1 parent f2ea1e0 commit d1cf2ef

File tree

1 file changed

+128
-0
lines changed

1 file changed

+128
-0
lines changed
Lines changed: 128 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,128 @@
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+
5+
import '../../form_builder_tester.dart';
6+
7+
void main() {
8+
group('FormBuilderDateTimePicker --', () {
9+
testWidgets('basic', (WidgetTester tester) async {
10+
const widgetName = 'fdtp1';
11+
final widgetKey = UniqueKey();
12+
final dateNow = DateTime.now();
13+
const confirmText = 'OK';
14+
const cancelText = 'CANCEL';
15+
16+
final testWidget = FormBuilderDateTimePicker(
17+
key: widgetKey,
18+
name: widgetName,
19+
confirmText: confirmText,
20+
cancelText: cancelText,
21+
);
22+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
23+
24+
expect(formSave(), isTrue);
25+
expect(formValue(widgetName), equals(null));
26+
await tester.tap(find.byKey(widgetKey));
27+
await tester.pumpAndSettle();
28+
expect(find.text(confirmText), findsOneWidget);
29+
expect(find.text(cancelText), findsOneWidget);
30+
31+
final testDay = dateNow.day - 1 <= 0 ? dateNow.day + 1 : dateNow.day - 1;
32+
await tester.tap(find.text(testDay.toString()));
33+
await tester.pumpAndSettle();
34+
await tester.tap(find.text(confirmText));
35+
await tester.pumpAndSettle();
36+
await tester.tap(find.text(confirmText));
37+
await tester.pumpAndSettle();
38+
39+
expect(formSave(), isTrue);
40+
expect(formValue<DateTime>(widgetName),
41+
DateTime(dateNow.year, dateNow.month, testDay, 12));
42+
});
43+
group('initial value -', () {
44+
testWidgets('to FormBuilder', (WidgetTester tester) async {
45+
const widgetName = 'fdtp2';
46+
final widgetKey = UniqueKey();
47+
final dateFuture = DateTime.now().add(const Duration(days: 10));
48+
const confirmText = 'OK';
49+
const cancelText = 'CANCEL';
50+
51+
final testWidget = FormBuilderDateTimePicker(
52+
key: widgetKey,
53+
name: widgetName,
54+
confirmText: confirmText,
55+
cancelText: cancelText,
56+
);
57+
58+
await tester.pumpWidget(buildTestableFieldWidget(
59+
testWidget,
60+
initialValue: {widgetName: dateFuture},
61+
));
62+
63+
expect(formSave(), isTrue);
64+
expect(formValue(widgetName), dateFuture);
65+
await tester.tap(find.byKey(widgetKey));
66+
await tester.pumpAndSettle();
67+
expect(find.text(confirmText), findsOneWidget);
68+
expect(find.text(cancelText), findsOneWidget);
69+
70+
final testDay =
71+
dateFuture.day - 1 <= 0 ? dateFuture.day + 1 : dateFuture.day - 1;
72+
await tester.tap(find.text(testDay.toString()));
73+
await tester.pumpAndSettle();
74+
await tester.tap(find.text(confirmText));
75+
await tester.pumpAndSettle();
76+
await tester.tap(find.text(confirmText));
77+
await tester.pumpAndSettle();
78+
79+
expect(formSave(), isTrue);
80+
expect(
81+
formValue<DateTime>(widgetName),
82+
DateTime(dateFuture.year, dateFuture.month, testDay, dateFuture.hour,
83+
dateFuture.minute, 0, 0),
84+
);
85+
});
86+
testWidgets('to Widget', (WidgetTester tester) async {
87+
const widgetName = 'fdtp3';
88+
final widgetKey = UniqueKey();
89+
final datePast = DateTime.now().subtract(const Duration(days: 10));
90+
const confirmText = 'OK';
91+
const cancelText = 'CANCEL';
92+
93+
final testWidget = FormBuilderDateTimePicker(
94+
key: widgetKey,
95+
name: widgetName,
96+
confirmText: confirmText,
97+
cancelText: cancelText,
98+
initialValue: datePast,
99+
);
100+
101+
await tester.pumpWidget(buildTestableFieldWidget(testWidget));
102+
103+
expect(formSave(), isTrue);
104+
expect(formValue(widgetName), datePast);
105+
await tester.tap(find.byKey(widgetKey));
106+
await tester.pumpAndSettle();
107+
expect(find.text(confirmText), findsOneWidget);
108+
expect(find.text(cancelText), findsOneWidget);
109+
110+
final testDay =
111+
datePast.day - 1 <= 0 ? datePast.day + 1 : datePast.day - 1;
112+
await tester.tap(find.text(testDay.toString()));
113+
await tester.pumpAndSettle();
114+
await tester.tap(find.text(confirmText));
115+
await tester.pumpAndSettle();
116+
await tester.tap(find.text(confirmText));
117+
await tester.pumpAndSettle();
118+
119+
expect(formSave(), isTrue);
120+
expect(
121+
formValue<DateTime>(widgetName),
122+
DateTime(datePast.year, datePast.month, testDay, datePast.hour,
123+
datePast.minute, 0, 0),
124+
);
125+
});
126+
});
127+
});
128+
}

0 commit comments

Comments
 (0)