57 lines
1.7 KiB
Dart
57 lines
1.7 KiB
Dart
import 'package:flutter/material.dart';
|
|
import 'package:flutter_test/flutter_test.dart';
|
|
import 'package:ikar/frontend/widgets/sheet_helpers.dart';
|
|
|
|
void main() {
|
|
Future<void> pumpBar(WidgetTester tester, Widget action) {
|
|
return tester.pumpWidget(
|
|
MaterialApp(
|
|
home: Scaffold(
|
|
body: Column(children: [SheetGrabberBar(action: action)]),
|
|
),
|
|
),
|
|
);
|
|
}
|
|
|
|
testWidgets('bar spans the sheet even inside a centring column', (
|
|
tester,
|
|
) async {
|
|
await pumpBar(tester, const SizedBox(width: 30, height: 30));
|
|
|
|
final bar = tester.getSize(find.byType(SheetGrabberBar));
|
|
expect(bar.width, tester.getSize(find.byType(Scaffold)).width);
|
|
expect(bar.height, SheetGrabberBar.height);
|
|
});
|
|
|
|
testWidgets('grabber stays centred while the action hugs the right edge', (
|
|
tester,
|
|
) async {
|
|
await pumpBar(
|
|
tester,
|
|
const SizedBox(key: ValueKey('action'), width: 30, height: 30),
|
|
);
|
|
|
|
final bar = tester.getRect(find.byType(SheetGrabberBar));
|
|
final grabber = tester.getRect(find.byType(SheetGrabber));
|
|
final action = tester.getRect(find.byKey(const ValueKey('action')));
|
|
|
|
expect(grabber.center.dx, closeTo(bar.center.dx, 0.01));
|
|
expect(grabber.center.dy, closeTo(bar.center.dy, 0.01));
|
|
expect(
|
|
action.right,
|
|
closeTo(bar.right - SheetGrabberBar.actionInset, 0.01),
|
|
);
|
|
expect(action.center.dy, closeTo(bar.center.dy, 0.01));
|
|
expect(action.left, greaterThan(grabber.right));
|
|
});
|
|
|
|
testWidgets('height is stable when the action renders nothing', (
|
|
tester,
|
|
) async {
|
|
await pumpBar(tester, const SizedBox.shrink());
|
|
|
|
expect(tester.getSize(find.byType(SheetGrabberBar)).height, 34);
|
|
expect(find.byType(SheetGrabber), findsOneWidget);
|
|
});
|
|
}
|