blob: eff039fc7d4f387d34444130fdaf6232cfc25004 [file] [log] [blame]
// Copyright 2014 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'package:flutter/cupertino.dart';
import 'package:flutter_test/flutter_test.dart';
void main() {
testWidgets('Shows prefix', (WidgetTester tester) async {
const Widget prefix = Text('Enter Value');
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
prefix: prefix,
child: CupertinoTextField(),
),
),
),
);
expect(prefix, tester.widget(find.byType(Text)));
});
testWidgets('Shows child', (WidgetTester tester) async {
const Widget child = CupertinoTextField();
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
child: child,
),
),
),
);
expect(child, tester.widget(find.byType(CupertinoTextField)));
});
testWidgets('RTL puts prefix after child', (WidgetTester tester) async {
const Widget prefix = Text('Enter Value');
const Widget child = CupertinoTextField();
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: Directionality(
textDirection: TextDirection.rtl,
child: CupertinoFormRow(
prefix: prefix,
child: child,
),
),
),
),
);
expect(tester.getTopLeft(find.byType(Text)).dx > tester.getTopLeft(find.byType(CupertinoTextField)).dx, true);
});
testWidgets('LTR puts child after prefix', (WidgetTester tester) async {
const Widget prefix = Text('Enter Value');
const Widget child = CupertinoTextField();
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: Directionality(
textDirection: TextDirection.ltr,
child: CupertinoFormRow(
prefix: prefix,
child: child,
),
),
),
),
);
expect(tester.getTopLeft(find.byType(Text)).dx > tester.getTopLeft(find.byType(CupertinoTextField)).dx, false);
});
testWidgets('Shows error widget', (WidgetTester tester) async {
const Widget error = Text('Error');
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
error: error,
child: CupertinoTextField(),
),
),
),
);
expect(error, tester.widget(find.byType(Text)));
});
testWidgets('Shows helper widget', (WidgetTester tester) async {
const Widget helper = Text('Helper');
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
helper: helper,
child: CupertinoTextField(),
),
),
),
);
expect(helper, tester.widget(find.byType(Text)));
});
testWidgets('Shows helper text above error text', (WidgetTester tester) async {
const Widget helper = Text('Helper');
const Widget error = CupertinoActivityIndicator();
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
helper: helper,
error: error,
child: CupertinoTextField(),
),
),
),
);
expect(
tester.getTopLeft(find.byType(CupertinoActivityIndicator)).dy > tester.getTopLeft(find.byType(Text)).dy,
true,
);
});
testWidgets('Shows helper in label color and error text in red color', (WidgetTester tester) async {
const Widget helper = Text('Helper');
const Widget error = Text('Error');
await tester.pumpWidget(
const CupertinoApp(
home: Center(
child: CupertinoFormRow(
helper: helper,
error: error,
child: CupertinoTextField(),
),
),
),
);
final DefaultTextStyle helperTextStyle =
tester.widget(find.byType(DefaultTextStyle).first);
expect(helperTextStyle.style.color, CupertinoColors.label);
final DefaultTextStyle errorTextStyle =
tester.widget(find.byType(DefaultTextStyle).last);
expect(errorTextStyle.style.color, CupertinoColors.destructiveRed);
});
}