resizable_initial_extent_test.dart
3.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:sheet/sheet.dart';
import '../helpers.dart';
import '../screen_size_test.dart';
void main() {
group('Sheet with resizable', () {
testWidgets('has zero height when child has zero height',
(WidgetTester tester) async {
await tester.pumpApp(
Sheet(
resizable: true,
initialExtent: 0,
child: Container(),
),
);
expect(tester.getSheetHeight(), equals(0));
});
testWidgets('can have zero initial extent', (WidgetTester tester) async {
await tester.pumpApp(
Sheet(
resizable: true,
initialExtent: 0,
child: Container(),
),
);
expect(tester.getSheetTop(), equals(kScreenRect.bottom));
});
testWidgets('can have a initial extent same as screen heigth',
(WidgetTester tester) async {
await tester.pumpApp(
Sheet(
resizable: true,
initialExtent: 600,
child: Container(),
),
);
expect(tester.getSheetHeight(), equals(600));
expect(tester.getSheetTop(), equals(kScreenRect.bottom - 600));
});
testWidgets('can have a custom extent', (WidgetTester tester) async {
await tester.pumpApp(
Sheet(
resizable: true,
initialExtent: 200,
child: Container(),
),
);
expect(tester.getSheetHeight(), equals(200));
expect(tester.getSheetTop(), equals(kScreenRect.bottom - 200));
});
testWidgets(
'height is same as minResizableExtent when current extent is less than it ',
(WidgetTester tester) async {
await tester.pumpApp(
Sheet(
resizable: true,
minExtent: 0,
maxExtent: 600,
initialExtent: 600,
minResizableExtent: 200,
child: Container(
width: double.infinity,
),
),
);
expect(tester.getSheetHeight(), equals(600),
reason: 'Height should be same as initialExtent');
expect(tester.getSheetTop(), equals(0),
reason: 'It should be positioned with a initialExtent');
await tester.dragFrom(
tester.getTopLeft(findSheet()),
const Offset(0.0, 500.0),
touchSlopY: 0.0,
);
await tester.pumpAndSettle();
expect(tester.getSheetTop(), kScreenRect.bottom - 100,
reason: 'It should be positioned with a initialExtent');
expect(tester.getSheetHeight(), equals(200),
reason: 'Height should be same as minResizableExtent');
});
});
group('Sheet with SheetFit.loose', () {
testWidgets('has same height as child', (WidgetTester tester) async {
await tester.pumpApp(
Sheet(
fit: SheetFit.loose,
child: Container(
child: const Text('Item'),
),
),
);
final double textHeight = tester.getRect(find.text('Item')).height;
expect(textHeight, isNonZero);
expect(tester.getSheetHeight(), equals(textHeight));
expect(tester.getSheetTop(), equals(kScreenRect.bottom));
});
testWidgets('can have custom initial extent', (WidgetTester tester) async {
const String text = 'Item\nItem\nItem\nItem\n';
await tester.pumpApp(
Sheet(
fit: SheetFit.loose,
initialExtent: 20,
child: Container(
child: const Text(text),
),
),
);
final double textHeight = tester.getRect(find.text(text)).height;
expect(textHeight, isNonZero);
expect(tester.getSheetHeight(), equals(textHeight));
expect(tester.getSheetTop(), equals(kScreenRect.bottom - 20));
});
});
}