test: add some helpers to simplify the tests

This commit is contained in:
ricardodalarme 2023-03-29 10:43:28 -03:00
parent ba2bb6a625
commit 2cb3536d66
6 changed files with 347 additions and 374 deletions

View File

@ -1,8 +1,9 @@
import 'package:flutter/material.dart';
import 'package:flutter_card_swiper/flutter_card_swiper.dart'; import 'package:flutter_card_swiper/flutter_card_swiper.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'utils.dart'; import 'test_helpers/card_builder.dart';
import 'test_helpers/finders.dart';
import 'test_helpers/pump_app.dart';
void main() { void main() {
group('CardSwiperController', () { group('CardSwiperController', () {
@ -45,22 +46,18 @@ void main() {
testWidgets('swipe() should swipe the card to the defined direction', testWidgets('swipe() should swipe the card to the defined direction',
(tester) async { (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
final swiperKey = GlobalKey();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
key: swiperKey, cardsCount: 10,
controller: controller, cardBuilder: genericBuilder,
cardsCount: 10, direction: CardSwiperDirection.top,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
direction: CardSwiperDirection.top, direction = swipeDirection;
onSwipe: (oldIndex, currentIndex, swipeDirection) { return true;
direction = swipeDirection; },
return true;
},
),
), ),
); );
@ -73,22 +70,18 @@ void main() {
testWidgets('swipeLeft() should swipe the card to the left', testWidgets('swipeLeft() should swipe the card to the left',
(tester) async { (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
final swiperKey = GlobalKey();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
key: swiperKey, cardsCount: 10,
controller: controller, cardBuilder: genericBuilder,
cardsCount: 10, direction: CardSwiperDirection.left,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
direction: CardSwiperDirection.left, direction = swipeDirection;
onSwipe: (oldIndex, currentIndex, swipeDirection) { return true;
direction = swipeDirection; },
return true;
},
),
), ),
); );
@ -101,21 +94,17 @@ void main() {
testWidgets('swipeRight() should swipe the card to the right', testWidgets('swipeRight() should swipe the card to the right',
(tester) async { (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
final swiperKey = GlobalKey();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
key: swiperKey, cardsCount: 10,
controller: controller, cardBuilder: genericBuilder,
cardsCount: 10, onSwipe: (oldIndex, currentIndex, swipeDirection) {
cardBuilder: genericBuilder, direction = swipeDirection;
onSwipe: (oldIndex, currentIndex, swipeDirection) { return true;
direction = swipeDirection; },
return true;
},
),
), ),
); );
@ -127,22 +116,18 @@ void main() {
testWidgets('swipeTop() should swipe the card to the top', (tester) async { testWidgets('swipeTop() should swipe the card to the top', (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
final swiperKey = GlobalKey();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
key: swiperKey, cardsCount: 10,
controller: controller, cardBuilder: genericBuilder,
cardsCount: 10, direction: CardSwiperDirection.top,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
direction: CardSwiperDirection.top, direction = swipeDirection;
onSwipe: (oldIndex, currentIndex, swipeDirection) { return true;
direction = swipeDirection; },
return true;
},
),
), ),
); );
@ -155,22 +140,18 @@ void main() {
testWidgets('swipeBottom() should swipe the card to the bottom', testWidgets('swipeBottom() should swipe the card to the bottom',
(tester) async { (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
final swiperKey = GlobalKey();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
key: swiperKey, cardsCount: 10,
controller: controller, cardBuilder: genericBuilder,
cardsCount: 10, direction: CardSwiperDirection.bottom,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
direction: CardSwiperDirection.bottom, direction = swipeDirection;
onSwipe: (oldIndex, currentIndex, swipeDirection) { return true;
direction = swipeDirection; },
return true;
},
),
), ),
); );
@ -184,54 +165,50 @@ void main() {
testWidgets('should undo the last swipe', (tester) async { testWidgets('should undo the last swipe', (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
controller.swipe(); controller.swipe();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
}); });
testWidgets('should undo the last swipe left', (tester) async { testWidgets('should undo the last swipe left', (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onUndo: (_, __, swipeDirection) {
onUndo: (_, __, swipeDirection) { direction = swipeDirection;
direction = swipeDirection; return true;
return true; },
},
),
), ),
); );
controller.swipeLeft(); controller.swipeLeft();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
expect(direction, CardSwiperDirection.left); expect(direction, CardSwiperDirection.left);
}); });
@ -239,29 +216,27 @@ void main() {
final controller = CardSwiperController(); final controller = CardSwiperController();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onUndo: (_, __, swipeDirection) {
onUndo: (_, __, swipeDirection) { direction = swipeDirection;
direction = swipeDirection; return true;
return true; },
},
),
), ),
); );
controller.swipeRight(); controller.swipeRight();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
expect(direction, CardSwiperDirection.right); expect(direction, CardSwiperDirection.right);
}); });
@ -269,29 +244,27 @@ void main() {
final controller = CardSwiperController(); final controller = CardSwiperController();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onUndo: (_, __, swipeDirection) {
onUndo: (_, __, swipeDirection) { direction = swipeDirection;
direction = swipeDirection; return true;
return true; },
},
),
), ),
); );
controller.swipeTop(); controller.swipeTop();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
expect(direction, CardSwiperDirection.top); expect(direction, CardSwiperDirection.top);
}); });
@ -299,45 +272,41 @@ void main() {
final controller = CardSwiperController(); final controller = CardSwiperController();
var direction = CardSwiperDirection.none; var direction = CardSwiperDirection.none;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onUndo: (_, __, swipeDirection) {
onUndo: (_, __, swipeDirection) { direction = swipeDirection;
direction = swipeDirection; return true;
return true; },
},
),
), ),
); );
controller.swipeBottom(); controller.swipeBottom();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
expect(direction, CardSwiperDirection.bottom); expect(direction, CardSwiperDirection.bottom);
}); });
testWidgets('should not undo if onUndo returns false', (tester) async { testWidgets('should not undo if onUndo returns false', (tester) async {
final controller = CardSwiperController(); final controller = CardSwiperController();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( controller: controller,
controller: controller, cardsCount: 10,
cardsCount: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onUndo: (_, __, swipeDirection) {
onUndo: (_, __, swipeDirection) { return false;
return false; },
},
),
), ),
); );
@ -347,7 +316,7 @@ void main() {
controller.undo(); controller.undo();
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsNothing); expect(find.card(0), findsNothing);
}); });
}); });
}); });

View File

@ -1,21 +1,22 @@
import 'package:flutter/material.dart'; import 'package:flutter/widgets.dart';
import 'package:flutter_card_swiper/flutter_card_swiper.dart'; import 'package:flutter_card_swiper/flutter_card_swiper.dart';
import 'package:flutter_test/flutter_test.dart'; import 'package:flutter_test/flutter_test.dart';
import 'utils.dart'; import 'test_helpers/card_builder.dart';
import 'test_helpers/finders.dart';
import 'test_helpers/gestures.dart';
import 'test_helpers/pump_app.dart';
void main() { void main() {
group('CardSwiper', () { group('CardSwiper', () {
testWidgets('pump widget', (WidgetTester tester) async { testWidgets('pump widget', (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 3,
cardsCount: 3, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
@ -28,15 +29,13 @@ void main() {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
const initialIndex = 7; const initialIndex = 7;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, initialIndex: initialIndex,
initialIndex: initialIndex,
),
), ),
); );
@ -47,98 +46,88 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
}); });
testWidgets('when swiping left expect to see the next card', testWidgets('when swiping left expect to see the next card',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(-300, 0)); await tester.dragLeft(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
}); });
testWidgets('when swiping top expect to see the next card', testWidgets('when swiping top expect to see the next card',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(0, -300)); await tester.dragUp(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
}); });
testWidgets('when swiping bottom expect to see the next card', testWidgets('when swiping bottom expect to see the next card',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(0, 300)); await tester.dragDown(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
}); });
testWidgets('when numberOfCardsDisplayed is 1 expect to see only one card', testWidgets('when numberOfCardsDisplayed is 1 expect to see only one card',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
@ -149,14 +138,12 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 10,
numberOfCardsDisplayed: 10, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
@ -167,93 +154,85 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, isDisabled: true,
isDisabled: true,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
}); });
testWidgets('when isDisabled is false expect to allow swipes', testWidgets('when isDisabled is false expect to allow swipes',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
}); });
testWidgets('when isLoop is true expect to loop the cards', testWidgets('when isLoop is true expect to loop the cards',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 2,
cardsCount: 2, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
}); });
testWidgets('when isLoop is false expect to not return to the first card', testWidgets('when isLoop is false expect to not return to the first card',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 2,
cardsCount: 2, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, isLoop: false,
isLoop: false,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(1)), findsOneWidget); expect(find.card(1), findsOneWidget);
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.byType(Container), findsNothing); expect(find.byType(Container), findsNothing);
@ -264,22 +243,20 @@ void main() {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
var isCalled = false; var isCalled = false;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, direction) {
onSwipe: (oldIndex, currentIndex, direction) { isCalled = true;
isCalled = true; return true;
return true; },
},
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(isCalled, true); expect(isCalled, true);
@ -290,24 +267,22 @@ void main() {
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, direction) {
onSwipe: (oldIndex, currentIndex, direction) { return false;
return false; },
},
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
}); });
testWidgets( testWidgets(
@ -316,31 +291,29 @@ void main() {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
final directions = <CardSwiperDirection>[]; final directions = <CardSwiperDirection>[];
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
onSwipe: (oldIndex, currentIndex, swipeDirection) { directions.add(swipeDirection);
directions.add(swipeDirection); return true;
return true; },
},
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(-300, 0)); await tester.dragLeft(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(0, 300)); await tester.dragDown(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(0, -300)); await tester.dragUp(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(directions, [ expect(directions, [
@ -358,32 +331,30 @@ void main() {
final oldIndexes = <int>[]; final oldIndexes = <int>[];
final newIndexes = <int?>[]; final newIndexes = <int?>[];
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 3,
cardsCount: 3, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
onSwipe: (oldIndex, currentIndex, swipeDirection) { oldIndexes.add(oldIndex);
oldIndexes.add(oldIndex); newIndexes.add(currentIndex);
newIndexes.add(currentIndex); return true;
return true; },
},
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(oldIndexes, [0, 1, 2, 0]); expect(oldIndexes, [0, 1, 2, 0]);
@ -397,30 +368,28 @@ void main() {
final oldIndexes = <int>[]; final oldIndexes = <int>[];
final newIndexes = <int?>[]; final newIndexes = <int?>[];
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 3,
cardsCount: 3, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onSwipe: (oldIndex, currentIndex, swipeDirection) {
onSwipe: (oldIndex, currentIndex, swipeDirection) { oldIndexes.add(oldIndex);
oldIndexes.add(oldIndex); newIndexes.add(currentIndex);
newIndexes.add(currentIndex); return true;
return true; },
}, isLoop: false,
isLoop: false,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(oldIndexes, [0, 1, 2]); expect(oldIndexes, [0, 1, 2]);
@ -432,24 +401,22 @@ void main() {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
var isCalled = false; var isCalled = false;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 2,
cardsCount: 2, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder, onEnd: () {
onEnd: () { isCalled = true;
isCalled = true; },
},
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); await tester.dragRight(swiperKey);
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(isCalled, true); expect(isCalled, true);
@ -458,33 +425,29 @@ void main() {
testWidgets('when swipes less than the threshold should go back', testWidgets('when swipes less than the threshold should go back',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper( key: swiperKey,
key: swiperKey, cardsCount: 10,
cardsCount: 10, numberOfCardsDisplayed: 1,
numberOfCardsDisplayed: 1, cardBuilder: genericBuilder,
cardBuilder: genericBuilder,
),
), ),
); );
await tester.drag(find.byKey(swiperKey), const Offset(50, 0)); await tester.drag(find.byKey(swiperKey), const Offset(50, 0));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(find.text(getIndexText(0)), findsOneWidget); expect(find.card(0), findsOneWidget);
}); });
});
testWidgets( testWidgets(
'when isDisabled is true and tap on card expect to call onTapDisabled', 'when isDisabled is true and tap on card expect to call onTapDisabled',
(WidgetTester tester) async { (WidgetTester tester) async {
final swiperKey = GlobalKey(); final swiperKey = GlobalKey();
var isCalled = false; var isCalled = false;
await tester.pumpWidget( await tester.pumpApp(
MaterialApp( CardSwiper(
home: CardSwiper(
key: swiperKey, key: swiperKey,
cardsCount: 10, cardsCount: 10,
numberOfCardsDisplayed: 1, numberOfCardsDisplayed: 1,
@ -494,12 +457,12 @@ void main() {
}, },
isDisabled: true, isDisabled: true,
), ),
), );
);
await tester.tap(find.byKey(swiperKey)); await tester.tap(find.byKey(swiperKey));
await tester.pumpAndSettle(); await tester.pumpAndSettle();
expect(isCalled, true); expect(isCalled, true);
});
}); });
} }

View File

@ -0,0 +1,9 @@
import 'package:flutter_test/flutter_test.dart';
import 'card_builder.dart';
extension Finders on CommonFinders {
Finder card(int index) {
return find.text(getIndexText(index));
}
}

View File

@ -0,0 +1,20 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
extension Gestures on WidgetTester {
Future<void> dragLeft(Key key, {double offset = -300}) async {
return drag(find.byKey(key), Offset(offset, 0));
}
Future<void> dragRight(Key key, {double offset = 300}) async {
return drag(find.byKey(key), Offset(offset, 0));
}
Future<void> dragUp(Key key, {double offset = -300}) async {
return drag(find.byKey(key), Offset(0, offset));
}
Future<void> dragDown(Key key, {double offset = 300}) async {
return drag(find.byKey(key), Offset(0, offset));
}
}

View File

@ -0,0 +1,12 @@
import 'package:flutter/material.dart';
import 'package:flutter_test/flutter_test.dart';
extension PumpApp on WidgetTester {
Future<void> pumpApp(Widget widget) {
return pumpWidget(
MaterialApp(
home: widget,
),
);
}
}