Committed by
GitHub
test: route tests (#268)
* test: route tests * fix: format files
Showing
18 changed files
with
445 additions
and
90 deletions
@@ -13,7 +13,7 @@ jobs: | @@ -13,7 +13,7 @@ jobs: | ||
13 | uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 | 13 | uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/flutter_package.yml@v1 |
14 | with: | 14 | with: |
15 | working_directory: sheet | 15 | working_directory: sheet |
16 | - min_coverage: 70 # Working to reach 100% XD | 16 | + min_coverage: 75 # Working to reach 100% XD |
17 | 17 | ||
18 | pana: | 18 | pana: |
19 | uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/pana.yml@v1 | 19 | uses: VeryGoodOpenSource/very_good_workflows/.github/workflows/pana.yml@v1 |
1 | export 'src/route/base_route_extended.dart'; | 1 | export 'src/route/base_route_extended.dart'; |
2 | -export 'src/route/cupertino/sheet_route.dart'; | 2 | +export 'src/route/cupertino/sheet_route.dart' |
3 | + hide CupertinoSheetBottomRouteTransition; | ||
3 | export 'src/route/delegated_transitions_route.dart'; | 4 | export 'src/route/delegated_transitions_route.dart'; |
4 | export 'src/route/sheet_route.dart'; | 5 | export 'src/route/sheet_route.dart'; |
@@ -67,15 +67,13 @@ class _PageBasedMaterialPageRoute<T> extends MaterialExtendedPageRoute<T> { | @@ -67,15 +67,13 @@ class _PageBasedMaterialPageRoute<T> extends MaterialExtendedPageRoute<T> { | ||
67 | }) : super( | 67 | }) : super( |
68 | settings: page, | 68 | settings: page, |
69 | builder: (BuildContext context) => page.child, | 69 | builder: (BuildContext context) => page.child, |
70 | - ) { | ||
71 | - assert(opaque); | ||
72 | - } | 70 | + ); |
73 | 71 | ||
74 | MaterialExtendedPage<T> get _page => settings as MaterialExtendedPage<T>; | 72 | MaterialExtendedPage<T> get _page => settings as MaterialExtendedPage<T>; |
75 | 73 | ||
76 | @override | 74 | @override |
77 | Widget buildContent(BuildContext context) { | 75 | Widget buildContent(BuildContext context) { |
78 | - return _page.child; | 76 | + return builder(context); |
79 | } | 77 | } |
80 | 78 | ||
81 | @override | 79 | @override |
@@ -143,14 +141,17 @@ class CupertinoExtendedPage<T> extends Page<T> { | @@ -143,14 +141,17 @@ class CupertinoExtendedPage<T> extends Page<T> { | ||
143 | class _PageBasedCupertinoPageRoute<T> extends CupertinoExtendedPageRoute<T> { | 141 | class _PageBasedCupertinoPageRoute<T> extends CupertinoExtendedPageRoute<T> { |
144 | _PageBasedCupertinoPageRoute({ | 142 | _PageBasedCupertinoPageRoute({ |
145 | required CupertinoExtendedPage<T> page, | 143 | required CupertinoExtendedPage<T> page, |
146 | - }) : super(builder: (BuildContext context) => page.child) { | ||
147 | - assert(opaque); | ||
148 | - } | 144 | + }) : super( |
145 | + settings: page, | ||
146 | + builder: (BuildContext context) => page.child, | ||
147 | + ); | ||
149 | 148 | ||
150 | CupertinoExtendedPage<T> get _page => settings as CupertinoExtendedPage<T>; | 149 | CupertinoExtendedPage<T> get _page => settings as CupertinoExtendedPage<T>; |
151 | 150 | ||
152 | @override | 151 | @override |
153 | - Widget buildContent(BuildContext context) => _page.child; | 152 | + Widget buildContent(BuildContext context) { |
153 | + return builder(context); | ||
154 | + } | ||
154 | 155 | ||
155 | @override | 156 | @override |
156 | String? get title => _page.title; | 157 | String? get title => _page.title; |
@@ -214,7 +214,7 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> { | @@ -214,7 +214,7 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> { | ||
214 | curve: Interval(0, initialExtent, curve: Curves.linear), | 214 | curve: Interval(0, initialExtent, curve: Curves.linear), |
215 | ); | 215 | ); |
216 | 216 | ||
217 | - return _CupertinoSheetBottomRouteTransition( | 217 | + return CupertinoSheetBottomRouteTransition( |
218 | body: child, | 218 | body: child, |
219 | sheetAnimation: delayAnimation, | 219 | sheetAnimation: delayAnimation, |
220 | secondaryAnimation: secondaryAnimation, | 220 | secondaryAnimation: secondaryAnimation, |
@@ -223,8 +223,9 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> { | @@ -223,8 +223,9 @@ class CupertinoSheetRoute<T> extends SheetRoute<T> { | ||
223 | } | 223 | } |
224 | 224 | ||
225 | /// Animation for previous route when a [CupertinoSheetRoute] enters/exits | 225 | /// Animation for previous route when a [CupertinoSheetRoute] enters/exits |
226 | -class _CupertinoSheetBottomRouteTransition extends StatelessWidget { | ||
227 | - const _CupertinoSheetBottomRouteTransition({ | 226 | +@visibleForTesting |
227 | +class CupertinoSheetBottomRouteTransition extends StatelessWidget { | ||
228 | + const CupertinoSheetBottomRouteTransition({ | ||
228 | Key? key, | 229 | Key? key, |
229 | required this.sheetAnimation, | 230 | required this.sheetAnimation, |
230 | required this.secondaryAnimation, | 231 | required this.secondaryAnimation, |
@@ -129,9 +129,8 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { | @@ -129,9 +129,8 @@ class SheetRoute<T> extends PageRoute<T> with DelegatedTransitionsRoute<T> { | ||
129 | @override | 129 | @override |
130 | AnimationController createAnimationController() { | 130 | AnimationController createAnimationController() { |
131 | assert(_routeAnimationController == null); | 131 | assert(_routeAnimationController == null); |
132 | - assert(navigator?.overlay != null); | ||
133 | _routeAnimationController = AnimationController( | 132 | _routeAnimationController = AnimationController( |
134 | - vsync: navigator!.overlay!, | 133 | + vsync: navigator!, |
135 | duration: transitionDuration, | 134 | duration: transitionDuration, |
136 | ); | 135 | ); |
137 | return _routeAnimationController!; | 136 | return _routeAnimationController!; |
@@ -6,6 +6,13 @@ const Key _childKey = Key('_sheet_child'); | @@ -6,6 +6,13 @@ const Key _childKey = Key('_sheet_child'); | ||
6 | 6 | ||
7 | Finder findSheet() => find.byKey(_childKey); | 7 | Finder findSheet() => find.byKey(_childKey); |
8 | 8 | ||
9 | +extension BuildContextWidgetTester on WidgetTester { | ||
10 | + /// Gets context that can be used to push a new route into the root navigator | ||
11 | + /// Useful when we need to test bottom sheets or alerts | ||
12 | + BuildContext get contextForRootNavigator => | ||
13 | + firstElement(find.byType(Navigator)); | ||
14 | +} | ||
15 | + | ||
9 | extension SheetTester on WidgetTester { | 16 | extension SheetTester on WidgetTester { |
10 | Future<void> pumpApp(Widget sheet, {VoidCallback? onButtonPressed}) async { | 17 | Future<void> pumpApp(Widget sheet, {VoidCallback? onButtonPressed}) async { |
11 | await pumpWidget( | 18 | await pumpWidget( |
@@ -41,28 +48,28 @@ extension SheetTester on WidgetTester { | @@ -41,28 +48,28 @@ extension SheetTester on WidgetTester { | ||
41 | } | 48 | } |
42 | 49 | ||
43 | double getSheetTop() { | 50 | double getSheetTop() { |
44 | - final Offset offset = getTopLeft(find.byKey(_childKey)); | 51 | + final Offset offset = getTopLeft(findSheet()); |
45 | return offset.dy; | 52 | return offset.dy; |
46 | } | 53 | } |
47 | 54 | ||
48 | double getSheetExtent() { | 55 | double getSheetExtent() { |
49 | final Rect rootRect = getRect(find.byType(Sheet)); | 56 | final Rect rootRect = getRect(find.byType(Sheet)); |
50 | - final Offset offset = getTopLeft(find.byKey(_childKey)); | 57 | + final Offset offset = getTopLeft(findSheet()); |
51 | return rootRect.bottom - offset.dy; | 58 | return rootRect.bottom - offset.dy; |
52 | } | 59 | } |
53 | 60 | ||
54 | SheetController getSheetController() { | 61 | SheetController getSheetController() { |
55 | - final BuildContext context = element(find.byKey(_childKey)); | 62 | + final BuildContext context = element(findSheet()); |
56 | return Sheet.of(context)!.controller; | 63 | return Sheet.of(context)!.controller; |
57 | } | 64 | } |
58 | 65 | ||
59 | SheetPosition getSheetPosition() { | 66 | SheetPosition getSheetPosition() { |
60 | - final BuildContext context = element(find.byKey(_childKey)); | 67 | + final BuildContext context = element(findSheet()); |
61 | return Sheet.of(context)!.position; | 68 | return Sheet.of(context)!.position; |
62 | } | 69 | } |
63 | 70 | ||
64 | double getSheetHeight() { | 71 | double getSheetHeight() { |
65 | - final Size rect = getSize(find.byKey(_childKey)); | 72 | + final Size rect = getSize(findSheet()); |
66 | return rect.height; | 73 | return rect.height; |
67 | } | 74 | } |
68 | 75 |
1 | +import 'package:flutter/cupertino.dart'; | ||
2 | +import 'package:flutter/material.dart'; | ||
3 | +import 'package:flutter_test/flutter_test.dart'; | ||
4 | +import 'package:sheet/route.dart'; | ||
5 | + | ||
6 | +import '../../helpers.dart'; | ||
7 | + | ||
8 | +void main() { | ||
9 | + group('MaterialExtendedPageRoute', () { | ||
10 | + testWidgets('renders', (WidgetTester tester) async { | ||
11 | + await tester.pumpApp(SizedBox()); | ||
12 | + | ||
13 | + Navigator.of(tester.contextForRootNavigator).push( | ||
14 | + MaterialExtendedPageRoute(builder: (context) => Text('child')), | ||
15 | + ); | ||
16 | + await tester.pumpAndSettle(); | ||
17 | + expect(find.text('child'), findsOneWidget); | ||
18 | + }); | ||
19 | + | ||
20 | + test('is a PreviousSheetRouteMixin', () { | ||
21 | + expect( | ||
22 | + MaterialExtendedPageRoute(builder: (context) => Text('child')), | ||
23 | + isA<PreviousSheetRouteMixin>(), | ||
24 | + ); | ||
25 | + }); | ||
26 | + | ||
27 | + test('is a DelegatedTransitionsRoute', () { | ||
28 | + expect( | ||
29 | + MaterialExtendedPageRoute(builder: (context) => Text('child')), | ||
30 | + isA<DelegatedTransitionsRoute>(), | ||
31 | + ); | ||
32 | + }); | ||
33 | + | ||
34 | + test('is a MaterialPageRoute', () { | ||
35 | + expect( | ||
36 | + MaterialExtendedPageRoute(builder: (context) => Text('child')), | ||
37 | + isA<MaterialPageRoute>(), | ||
38 | + ); | ||
39 | + }); | ||
40 | + }); | ||
41 | + | ||
42 | + group('MaterialExtendedPage', () { | ||
43 | + testWidgets('renders', (WidgetTester tester) async { | ||
44 | + await tester.pumpWidget(MaterialApp( | ||
45 | + builder: (context, child) { | ||
46 | + return Navigator( | ||
47 | + pages: [ | ||
48 | + MaterialExtendedPage(child: Text('child')), | ||
49 | + ], | ||
50 | + onPopPage: (route, result) => false, | ||
51 | + ); | ||
52 | + }, | ||
53 | + )); | ||
54 | + await tester.pumpAndSettle(); | ||
55 | + expect(find.text('child'), findsOneWidget); | ||
56 | + }); | ||
57 | + | ||
58 | + testWidgets('route is a MaterialExtendedPageRoute', | ||
59 | + (WidgetTester tester) async { | ||
60 | + await tester.pumpWidget(MaterialApp( | ||
61 | + builder: (context, child) { | ||
62 | + return Navigator( | ||
63 | + pages: [MaterialPage(child: SizedBox())], | ||
64 | + onPopPage: (route, result) => false, | ||
65 | + ); | ||
66 | + }, | ||
67 | + )); | ||
68 | + expect( | ||
69 | + MaterialExtendedPage(child: Text('child')) | ||
70 | + .createRoute(tester.contextForRootNavigator), | ||
71 | + isA<MaterialExtendedPageRoute>(), | ||
72 | + ); | ||
73 | + }); | ||
74 | + | ||
75 | + testWidgets('params are passed to route', (WidgetTester tester) async { | ||
76 | + await tester.pumpWidget(MaterialApp( | ||
77 | + builder: (context, child) { | ||
78 | + return Navigator( | ||
79 | + pages: [MaterialPage(child: SizedBox())], | ||
80 | + onPopPage: (route, result) => false, | ||
81 | + ); | ||
82 | + }, | ||
83 | + )); | ||
84 | + final page = MaterialExtendedPage( | ||
85 | + child: Text('child'), | ||
86 | + fullscreenDialog: true, | ||
87 | + maintainState: false, | ||
88 | + ); | ||
89 | + expect( | ||
90 | + page.createRoute(tester.contextForRootNavigator), | ||
91 | + isA<MaterialExtendedPageRoute>() | ||
92 | + .having( | ||
93 | + (p) => p.fullscreenDialog, | ||
94 | + 'fullscreenDialog', | ||
95 | + isTrue, | ||
96 | + ) | ||
97 | + .having( | ||
98 | + (p) => p.settings, | ||
99 | + 'settings', | ||
100 | + page, | ||
101 | + ) | ||
102 | + .having( | ||
103 | + (p) => p.maintainState, | ||
104 | + 'maintainState', | ||
105 | + isFalse, | ||
106 | + ), | ||
107 | + ); | ||
108 | + }); | ||
109 | + }); | ||
110 | + group('CupertinoExtendedPageRoute', () { | ||
111 | + testWidgets('renders', (WidgetTester tester) async { | ||
112 | + await tester.pumpApp(SizedBox()); | ||
113 | + | ||
114 | + Navigator.of(tester.contextForRootNavigator).push( | ||
115 | + CupertinoExtendedPageRoute(builder: (context) => Text('child')), | ||
116 | + ); | ||
117 | + await tester.pumpAndSettle(); | ||
118 | + expect(find.text('child'), findsOneWidget); | ||
119 | + }); | ||
120 | + | ||
121 | + test('is a PreviousSheetRouteMixin', () { | ||
122 | + expect( | ||
123 | + CupertinoExtendedPageRoute(builder: (context) => Text('child')), | ||
124 | + isA<PreviousSheetRouteMixin>(), | ||
125 | + ); | ||
126 | + }); | ||
127 | + | ||
128 | + test('is a DelegatedTransitionsRoute', () { | ||
129 | + expect( | ||
130 | + CupertinoExtendedPageRoute(builder: (context) => Text('child')), | ||
131 | + isA<DelegatedTransitionsRoute>(), | ||
132 | + ); | ||
133 | + }); | ||
134 | + | ||
135 | + test('is a CupertinoPageRoute', () { | ||
136 | + expect( | ||
137 | + CupertinoExtendedPageRoute(builder: (context) => Text('child')), | ||
138 | + isA<CupertinoPageRoute>(), | ||
139 | + ); | ||
140 | + }); | ||
141 | + }); | ||
142 | + | ||
143 | + group('CupertinoExtendedPage', () { | ||
144 | + testWidgets('renders', (WidgetTester tester) async { | ||
145 | + await tester.pumpWidget(MaterialApp( | ||
146 | + builder: (context, child) { | ||
147 | + return Navigator( | ||
148 | + pages: [ | ||
149 | + CupertinoExtendedPage(child: Text('child')), | ||
150 | + ], | ||
151 | + onPopPage: (route, result) => false, | ||
152 | + ); | ||
153 | + }, | ||
154 | + )); | ||
155 | + await tester.pumpAndSettle(); | ||
156 | + expect(find.text('child'), findsOneWidget); | ||
157 | + }); | ||
158 | + | ||
159 | + testWidgets('route is a CupertinoExtendedPageRoute', | ||
160 | + (WidgetTester tester) async { | ||
161 | + await tester.pumpWidget(MaterialApp( | ||
162 | + builder: (context, child) { | ||
163 | + return Navigator( | ||
164 | + pages: [MaterialPage(child: SizedBox())], | ||
165 | + onPopPage: (route, result) => false, | ||
166 | + ); | ||
167 | + }, | ||
168 | + )); | ||
169 | + expect( | ||
170 | + CupertinoExtendedPage(child: Text('child')) | ||
171 | + .createRoute(tester.contextForRootNavigator), | ||
172 | + isA<CupertinoExtendedPageRoute>(), | ||
173 | + ); | ||
174 | + }); | ||
175 | + | ||
176 | + testWidgets('params are passed to route', (WidgetTester tester) async { | ||
177 | + await tester.pumpWidget(MaterialApp( | ||
178 | + builder: (context, child) { | ||
179 | + return Navigator( | ||
180 | + pages: [MaterialPage(child: SizedBox())], | ||
181 | + onPopPage: (route, result) => false, | ||
182 | + ); | ||
183 | + }, | ||
184 | + )); | ||
185 | + final page = CupertinoExtendedPage( | ||
186 | + child: Text('child'), | ||
187 | + title: 'Title', | ||
188 | + fullscreenDialog: true, | ||
189 | + maintainState: false, | ||
190 | + ); | ||
191 | + expect( | ||
192 | + page.createRoute(tester.contextForRootNavigator), | ||
193 | + isA<CupertinoExtendedPageRoute>() | ||
194 | + .having( | ||
195 | + (p) => p.fullscreenDialog, | ||
196 | + 'fullscreenDialog', | ||
197 | + isTrue, | ||
198 | + ) | ||
199 | + .having( | ||
200 | + (p) => p.settings, | ||
201 | + 'settings', | ||
202 | + page, | ||
203 | + ) | ||
204 | + .having( | ||
205 | + (p) => p.maintainState, | ||
206 | + 'maintainState', | ||
207 | + isFalse, | ||
208 | + ) | ||
209 | + .having( | ||
210 | + (p) => p.title, | ||
211 | + 'title', | ||
212 | + equals('Title'), | ||
213 | + ), | ||
214 | + ); | ||
215 | + }); | ||
216 | + }); | ||
217 | +} |
1 | +import 'package:flutter/material.dart'; | ||
2 | +import 'package:flutter_test/flutter_test.dart'; | ||
3 | +import 'package:sheet/route.dart'; | ||
4 | +import 'package:sheet/src/route/cupertino/sheet_route.dart'; | ||
5 | + | ||
6 | +import '../../../helpers.dart'; | ||
7 | + | ||
8 | +void main() { | ||
9 | + group('CupertinoSheetRoute', () { | ||
10 | + testWidgets('renders', (WidgetTester tester) async { | ||
11 | + await tester.pumpApp(SizedBox()); | ||
12 | + | ||
13 | + Navigator.of(tester.contextForRootNavigator).push( | ||
14 | + CupertinoSheetRoute(builder: (context) => Text('Sheet')), | ||
15 | + ); | ||
16 | + await tester.pumpAndSettle(); | ||
17 | + expect(findSheet(), findsOneWidget); | ||
18 | + expect(find.text('Sheet'), findsOneWidget); | ||
19 | + }); | ||
20 | + | ||
21 | + testWidgets('animates previous route when using MaterialExtendedPageRoute', | ||
22 | + (WidgetTester tester) async { | ||
23 | + await tester.pumpApp(SizedBox()); | ||
24 | + final controller = Navigator.of(tester.contextForRootNavigator); | ||
25 | + controller.push( | ||
26 | + MaterialExtendedPageRoute(builder: (context) => SizedBox()), | ||
27 | + ); | ||
28 | + await tester.pumpAndSettle(); | ||
29 | + controller.push( | ||
30 | + CupertinoSheetRoute(builder: (context) => Text('Sheet')), | ||
31 | + ); | ||
32 | + await tester.pumpAndSettle(); | ||
33 | + expect(find.byType(CupertinoSheetBottomRouteTransition), findsOneWidget); | ||
34 | + }); | ||
35 | + | ||
36 | + testWidgets('animates previous route when using CupertinoExtendedPageRoute', | ||
37 | + (WidgetTester tester) async { | ||
38 | + await tester.pumpApp(SizedBox()); | ||
39 | + final controller = Navigator.of(tester.contextForRootNavigator); | ||
40 | + controller.push( | ||
41 | + CupertinoExtendedPageRoute(builder: (context) => SizedBox()), | ||
42 | + ); | ||
43 | + await tester.pumpAndSettle(); | ||
44 | + controller.push( | ||
45 | + CupertinoSheetRoute(builder: (context) => Text('Sheet')), | ||
46 | + ); | ||
47 | + await tester.pumpAndSettle(); | ||
48 | + expect(find.byType(CupertinoSheetBottomRouteTransition), findsOneWidget); | ||
49 | + }); | ||
50 | + }); | ||
51 | + | ||
52 | + group('CupertinoSheetPage', () { | ||
53 | + testWidgets('renders', (WidgetTester tester) async { | ||
54 | + await tester.pumpWidget(MaterialApp( | ||
55 | + builder: (context, child) { | ||
56 | + return Navigator( | ||
57 | + pages: [ | ||
58 | + MaterialPage(child: SizedBox()), | ||
59 | + CupertinoSheetPage(child: Text('Sheet')), | ||
60 | + ], | ||
61 | + onPopPage: (route, result) => false, | ||
62 | + ); | ||
63 | + }, | ||
64 | + )); | ||
65 | + await tester.pumpAndSettle(); | ||
66 | + expect(findSheet(), findsOneWidget); | ||
67 | + expect(find.text('Sheet'), findsOneWidget); | ||
68 | + }); | ||
69 | + | ||
70 | + testWidgets('animates previous route when using MaterialExtendedPage', | ||
71 | + (WidgetTester tester) async { | ||
72 | + await tester.pumpWidget(MaterialApp( | ||
73 | + builder: (context, child) { | ||
74 | + return Navigator( | ||
75 | + pages: [ | ||
76 | + MaterialExtendedPage(child: SizedBox()), | ||
77 | + CupertinoSheetPage(child: Text('Sheet')), | ||
78 | + ], | ||
79 | + onPopPage: (route, result) => false, | ||
80 | + ); | ||
81 | + }, | ||
82 | + )); | ||
83 | + await tester.pumpAndSettle(); | ||
84 | + expect(find.byType(CupertinoSheetBottomRouteTransition), findsOneWidget); | ||
85 | + }); | ||
86 | + | ||
87 | + testWidgets('animates previous route when using CupertinoExtendedPage', | ||
88 | + (WidgetTester tester) async { | ||
89 | + await tester.pumpWidget(MaterialApp( | ||
90 | + builder: (context, child) { | ||
91 | + return Navigator( | ||
92 | + pages: [ | ||
93 | + CupertinoExtendedPage(child: SizedBox()), | ||
94 | + CupertinoSheetPage(child: Text('Sheet')), | ||
95 | + ], | ||
96 | + onPopPage: (route, result) => false, | ||
97 | + ); | ||
98 | + }, | ||
99 | + )); | ||
100 | + await tester.pumpAndSettle(); | ||
101 | + expect(find.byType(CupertinoSheetBottomRouteTransition), findsOneWidget); | ||
102 | + }); | ||
103 | + }); | ||
104 | +} |
sheet/test/src/route/sheet_route_test.dart
0 → 100644
1 | +import 'package:flutter/material.dart'; | ||
2 | +import 'package:flutter_test/flutter_test.dart'; | ||
3 | +import 'package:sheet/route.dart'; | ||
4 | + | ||
5 | +import '../../helpers.dart'; | ||
6 | + | ||
7 | +void main() { | ||
8 | + group('SheetRoute', () { | ||
9 | + testWidgets('renders', (WidgetTester tester) async { | ||
10 | + await tester.pumpApp(SizedBox()); | ||
11 | + | ||
12 | + Navigator.of(tester.contextForRootNavigator).push( | ||
13 | + SheetRoute(builder: (context) => Text('Sheet')), | ||
14 | + ); | ||
15 | + await tester.pumpAndSettle(); | ||
16 | + expect(findSheet(), findsOneWidget); | ||
17 | + expect(find.text('Sheet'), findsOneWidget); | ||
18 | + }); | ||
19 | + }); | ||
20 | + | ||
21 | + group('SheetPage', () { | ||
22 | + testWidgets('renders', (WidgetTester tester) async { | ||
23 | + await tester.pumpWidget(MaterialApp( | ||
24 | + builder: (context, child) { | ||
25 | + return Navigator( | ||
26 | + pages: [ | ||
27 | + MaterialPage(child: SizedBox()), | ||
28 | + SheetPage(child: Text('Sheet')), | ||
29 | + ], | ||
30 | + onPopPage: (route, result) => false, | ||
31 | + ); | ||
32 | + }, | ||
33 | + )); | ||
34 | + await tester.pumpAndSettle(); | ||
35 | + expect(findSheet(), findsOneWidget); | ||
36 | + expect(find.text('Sheet'), findsOneWidget); | ||
37 | + }); | ||
38 | + }); | ||
39 | +} |
@@ -2,47 +2,41 @@ import 'package:flutter/material.dart'; | @@ -2,47 +2,41 @@ import 'package:flutter/material.dart'; | ||
2 | import 'package:flutter_test/flutter_test.dart'; | 2 | import 'package:flutter_test/flutter_test.dart'; |
3 | import 'package:sheet/sheet.dart'; | 3 | import 'package:sheet/sheet.dart'; |
4 | 4 | ||
5 | -import '../helpers.dart'; | 5 | +import '../../../helpers.dart'; |
6 | 6 | ||
7 | void main() { | 7 | void main() { |
8 | group('SheetController.animation', () { | 8 | group('SheetController.animation', () { |
9 | testWidgets('is 0 when starts in minExtent', (tester) async { | 9 | testWidgets('is 0 when starts in minExtent', (tester) async { |
10 | - await tester.pumpWidget( | ||
11 | - MaterialApp( | ||
12 | - home: Sheet( | ||
13 | - minExtent: 100, | ||
14 | - maxExtent: 400, | ||
15 | - initialExtent: 100, | ||
16 | - child: SizedBox(height: 400), | ||
17 | - ), | 10 | + await tester.pumpApp( |
11 | + Sheet( | ||
12 | + minExtent: 100, | ||
13 | + maxExtent: 400, | ||
14 | + initialExtent: 100, | ||
15 | + child: SizedBox(height: 400), | ||
18 | ), | 16 | ), |
19 | ); | 17 | ); |
20 | expect(tester.getSheetController().animation.value, 0); | 18 | expect(tester.getSheetController().animation.value, 0); |
21 | }); | 19 | }); |
22 | 20 | ||
23 | testWidgets('is 1 when starts in maxExtent', (tester) async { | 21 | testWidgets('is 1 when starts in maxExtent', (tester) async { |
24 | - await tester.pumpWidget( | ||
25 | - MaterialApp( | ||
26 | - home: Sheet( | ||
27 | - minExtent: 100, | ||
28 | - maxExtent: 400, | ||
29 | - initialExtent: 400, | ||
30 | - child: SizedBox(height: 400), | ||
31 | - ), | 22 | + await tester.pumpApp( |
23 | + Sheet( | ||
24 | + minExtent: 100, | ||
25 | + maxExtent: 400, | ||
26 | + initialExtent: 400, | ||
27 | + child: SizedBox(height: 400), | ||
32 | ), | 28 | ), |
33 | ); | 29 | ); |
34 | expect(tester.getSheetController().animation.value, 1); | 30 | expect(tester.getSheetController().animation.value, 1); |
35 | }); | 31 | }); |
36 | testWidgets('is 0.5 when is between minExtent and maxExtent', | 32 | testWidgets('is 0.5 when is between minExtent and maxExtent', |
37 | (tester) async { | 33 | (tester) async { |
38 | - await tester.pumpWidget( | ||
39 | - MaterialApp( | ||
40 | - home: Sheet( | ||
41 | - minExtent: 100, | ||
42 | - maxExtent: 300, | ||
43 | - initialExtent: 200, | ||
44 | - child: SizedBox(height: 300), | ||
45 | - ), | 34 | + await tester.pumpApp( |
35 | + Sheet( | ||
36 | + minExtent: 100, | ||
37 | + maxExtent: 300, | ||
38 | + initialExtent: 200, | ||
39 | + child: SizedBox(height: 300), | ||
46 | ), | 40 | ), |
47 | ); | 41 | ); |
48 | 42 | ||
@@ -50,28 +44,24 @@ void main() { | @@ -50,28 +44,24 @@ void main() { | ||
50 | }); | 44 | }); |
51 | 45 | ||
52 | testWidgets('is 1 when minExtent equals maxExtent', (tester) async { | 46 | testWidgets('is 1 when minExtent equals maxExtent', (tester) async { |
53 | - await tester.pumpWidget( | ||
54 | - MaterialApp( | ||
55 | - home: Sheet( | ||
56 | - minExtent: 100, | ||
57 | - maxExtent: 100, | ||
58 | - child: SizedBox(height: 100), | ||
59 | - ), | 47 | + await tester.pumpApp( |
48 | + Sheet( | ||
49 | + minExtent: 100, | ||
50 | + maxExtent: 100, | ||
51 | + child: SizedBox(height: 100), | ||
60 | ), | 52 | ), |
61 | ); | 53 | ); |
62 | expect(tester.getSheetController().animation.value, 1); | 54 | expect(tester.getSheetController().animation.value, 1); |
63 | }); | 55 | }); |
64 | 56 | ||
65 | testWidgets('updates to 0 when it goes to minExtent', (tester) async { | 57 | testWidgets('updates to 0 when it goes to minExtent', (tester) async { |
66 | - await tester.pumpWidget( | ||
67 | - MaterialApp( | ||
68 | - home: Sheet( | ||
69 | - minExtent: 100, | ||
70 | - maxExtent: 400, | ||
71 | - initialExtent: 400, | ||
72 | - fit: SheetFit.expand, | ||
73 | - child: SizedBox(), | ||
74 | - ), | 58 | + await tester.pumpApp( |
59 | + Sheet( | ||
60 | + minExtent: 100, | ||
61 | + maxExtent: 400, | ||
62 | + initialExtent: 400, | ||
63 | + fit: SheetFit.expand, | ||
64 | + child: SizedBox(), | ||
75 | ), | 65 | ), |
76 | ); | 66 | ); |
77 | expect(tester.getSheetController().animation.value, 1); | 67 | expect(tester.getSheetController().animation.value, 1); |
@@ -81,14 +71,12 @@ void main() { | @@ -81,14 +71,12 @@ void main() { | ||
81 | }); | 71 | }); |
82 | 72 | ||
83 | testWidgets('updates to 1 when it goes to maxExtent', (tester) async { | 73 | testWidgets('updates to 1 when it goes to maxExtent', (tester) async { |
84 | - await tester.pumpWidget( | ||
85 | - MaterialApp( | ||
86 | - home: Sheet( | ||
87 | - minExtent: 100, | ||
88 | - maxExtent: 400, | ||
89 | - initialExtent: 100, | ||
90 | - child: SizedBox(height: 400), | ||
91 | - ), | 74 | + await tester.pumpApp( |
75 | + Sheet( | ||
76 | + minExtent: 100, | ||
77 | + maxExtent: 400, | ||
78 | + initialExtent: 100, | ||
79 | + child: SizedBox(height: 400), | ||
92 | ), | 80 | ), |
93 | ); | 81 | ); |
94 | expect(tester.getSheetController().animation.value, 0); | 82 | expect(tester.getSheetController().animation.value, 0); |
@@ -97,14 +85,12 @@ void main() { | @@ -97,14 +85,12 @@ void main() { | ||
97 | }); | 85 | }); |
98 | 86 | ||
99 | testWidgets('updates linearly', (tester) async { | 87 | testWidgets('updates linearly', (tester) async { |
100 | - await tester.pumpWidget( | ||
101 | - MaterialApp( | ||
102 | - home: Sheet( | ||
103 | - minExtent: 100, | ||
104 | - maxExtent: 300, | ||
105 | - initialExtent: 100, | ||
106 | - child: SizedBox(height: 300), | ||
107 | - ), | 88 | + await tester.pumpApp( |
89 | + Sheet( | ||
90 | + minExtent: 100, | ||
91 | + maxExtent: 300, | ||
92 | + initialExtent: 100, | ||
93 | + child: SizedBox(height: 300), | ||
108 | ), | 94 | ), |
109 | ); | 95 | ); |
110 | tester.getSheetController().relativeJumpTo(0.5); | 96 | tester.getSheetController().relativeJumpTo(0.5); |
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | ||
4 | import 'package:flutter_test/flutter_test.dart'; | 4 | import 'package:flutter_test/flutter_test.dart'; |
5 | import 'package:sheet/sheet.dart'; | 5 | import 'package:sheet/sheet.dart'; |
6 | 6 | ||
7 | -import '../helpers.dart'; | ||
8 | -import '../screen_size_test.dart'; | 7 | +import '../../../helpers.dart'; |
8 | +import '../../../screen_size_test.dart'; | ||
9 | 9 | ||
10 | void main() { | 10 | void main() { |
11 | group('bounce', () { | 11 | group('bounce', () { |
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | ||
4 | import 'package:flutter_test/flutter_test.dart'; | 4 | import 'package:flutter_test/flutter_test.dart'; |
5 | import 'package:sheet/sheet.dart'; | 5 | import 'package:sheet/sheet.dart'; |
6 | 6 | ||
7 | -import '../helpers.dart'; | ||
8 | -import '../screen_size_test.dart'; | 7 | +import '../../../helpers.dart'; |
8 | +import '../../../screen_size_test.dart'; | ||
9 | 9 | ||
10 | void main() { | 10 | void main() { |
11 | group('fit', () { | 11 | group('fit', () { |
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | ||
2 | import 'package:flutter_test/flutter_test.dart'; | 2 | import 'package:flutter_test/flutter_test.dart'; |
3 | import 'package:sheet/sheet.dart'; | 3 | import 'package:sheet/sheet.dart'; |
4 | 4 | ||
5 | -import '../helpers.dart'; | ||
6 | -import '../screen_size_test.dart'; | 5 | +import '../../../helpers.dart'; |
6 | +import '../../../screen_size_test.dart'; | ||
7 | 7 | ||
8 | void main() { | 8 | void main() { |
9 | group('Initial extent', () { | 9 | group('Initial extent', () { |
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | ||
2 | import 'package:flutter_test/flutter_test.dart'; | 2 | import 'package:flutter_test/flutter_test.dart'; |
3 | import 'package:sheet/sheet.dart'; | 3 | import 'package:sheet/sheet.dart'; |
4 | 4 | ||
5 | -import '../helpers.dart'; | ||
6 | -import '../screen_size_test.dart'; | 5 | +import '../../../helpers.dart'; |
6 | +import '../../../screen_size_test.dart'; | ||
7 | 7 | ||
8 | void main() { | 8 | void main() { |
9 | group('Sheet linear drags', () { | 9 | group('Sheet linear drags', () { |
@@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | @@ -2,8 +2,8 @@ import 'package:flutter/material.dart'; | ||
2 | import 'package:flutter_test/flutter_test.dart'; | 2 | import 'package:flutter_test/flutter_test.dart'; |
3 | import 'package:sheet/sheet.dart'; | 3 | import 'package:sheet/sheet.dart'; |
4 | 4 | ||
5 | -import '../helpers.dart'; | ||
6 | -import '../screen_size_test.dart'; | 5 | +import '../../../helpers.dart'; |
6 | +import '../../../screen_size_test.dart'; | ||
7 | 7 | ||
8 | void main() { | 8 | void main() { |
9 | group('Sheet with resizable', () { | 9 | group('Sheet with resizable', () { |
@@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | @@ -4,8 +4,8 @@ import 'package:flutter/material.dart'; | ||
4 | import 'package:flutter_test/flutter_test.dart'; | 4 | import 'package:flutter_test/flutter_test.dart'; |
5 | import 'package:sheet/sheet.dart'; | 5 | import 'package:sheet/sheet.dart'; |
6 | 6 | ||
7 | -import '../helpers.dart'; | ||
8 | -import '../screen_size_test.dart'; | 7 | +import '../../../helpers.dart'; |
8 | +import '../../../screen_size_test.dart'; | ||
9 | 9 | ||
10 | void main() { | 10 | void main() { |
11 | group('SheetController', () { | 11 | group('SheetController', () { |
@@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; | @@ -2,7 +2,7 @@ import 'package:flutter/material.dart'; | ||
2 | import 'package:flutter_test/flutter_test.dart'; | 2 | import 'package:flutter_test/flutter_test.dart'; |
3 | import 'package:sheet/sheet.dart'; | 3 | import 'package:sheet/sheet.dart'; |
4 | 4 | ||
5 | -import '../helpers.dart'; | 5 | +import '../../../helpers.dart'; |
6 | 6 | ||
7 | void main() { | 7 | void main() { |
8 | group('SheetPosition', () { | 8 | group('SheetPosition', () { |
-
Please register or login to post a comment