44 lines
1.3 KiB
Dart
44 lines
1.3 KiB
Dart
|
|
import 'package:flutter_test/flutter_test.dart';
|
||
|
|
import 'package:halkyon_ui/halkyon_ui.dart';
|
||
|
|
import 'package:material_ui/material_ui.dart';
|
||
|
|
|
||
|
|
void main() {
|
||
|
|
Future<TextEditingController> show(WidgetTester tester) async {
|
||
|
|
final controller = TextEditingController();
|
||
|
|
addTearDown(controller.dispose);
|
||
|
|
await tester.pumpWidget(
|
||
|
|
MaterialApp(
|
||
|
|
home: Scaffold(
|
||
|
|
body: TextField(
|
||
|
|
controller: controller,
|
||
|
|
maxLength: TextLimits.name,
|
||
|
|
buildCounter: nearLimitCounter,
|
||
|
|
),
|
||
|
|
),
|
||
|
|
),
|
||
|
|
);
|
||
|
|
return controller;
|
||
|
|
}
|
||
|
|
|
||
|
|
testWidgets('a field counts only near its limit, and stops there', (
|
||
|
|
tester,
|
||
|
|
) async {
|
||
|
|
final controller = await show(tester);
|
||
|
|
|
||
|
|
await tester.enterText(find.byType(TextField), 'a' * 10);
|
||
|
|
await tester.pump();
|
||
|
|
expect(find.textContaining(' / ${TextLimits.name}'), findsNothing);
|
||
|
|
|
||
|
|
await tester.enterText(find.byType(TextField), 'a' * 35);
|
||
|
|
await tester.pump();
|
||
|
|
expect(find.text('35 / ${TextLimits.name}'), findsOneWidget);
|
||
|
|
|
||
|
|
await tester.enterText(find.byType(TextField), 'a' * 100);
|
||
|
|
await tester.pump();
|
||
|
|
expect(controller.text, hasLength(TextLimits.name));
|
||
|
|
expect(
|
||
|
|
find.text('${TextLimits.name} / ${TextLimits.name}'),
|
||
|
|
findsOneWidget,
|
||
|
|
);
|
||
|
|
});
|
||
|
|
}
|