From ba2bb6a62503e2b10c04d7c2df073a27d310a753 Mon Sep 17 00:00:00 2001 From: ricardodalarme Date: Tue, 28 Mar 2023 00:07:56 -0300 Subject: [PATCH] tests: include more tests --- pubspec.yaml | 2 +- test/card_swiper_controller_test.dart | 182 +++++++++++++++++++++++--- test/card_swiper_test.dart | 47 +++++++ 3 files changed, 211 insertions(+), 20 deletions(-) diff --git a/pubspec.yaml b/pubspec.yaml index d192ab1..397d5a8 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,7 @@ name: flutter_card_swiper description: This is a Tinder-like card swiper package. It allows you to swipe left, right, up, and down and define your own business logic for each direction. homepage: https://github.com/ricardodalarme/flutter_card_swiper issue_tracker: https://github.com/ricardodalarme/flutter_card_swiper/issues -version: 4.1.0+1 +version: 4.1.0+2 environment: sdk: ">=2.12.0 <3.0.0" diff --git a/test/card_swiper_controller_test.dart b/test/card_swiper_controller_test.dart index 6ba0bf1..b9a9843 100644 --- a/test/card_swiper_controller_test.dart +++ b/test/card_swiper_controller_test.dart @@ -180,31 +180,175 @@ void main() { expect(direction, CardSwiperDirection.bottom); }); - testWidgets('undo() should undo the last swipe', (tester) async { - final controller = CardSwiperController(); - final swiperKey = GlobalKey(); + group('undo()', () { + testWidgets('should undo the last swipe', (tester) async { + final controller = CardSwiperController(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - direction: CardSwiperDirection.bottom, + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + ), ), - ), - ); + ); - controller.swipe(); - await tester.pumpAndSettle(); + controller.swipe(); + await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.text(getIndexText(1)), findsOneWidget); - controller.undo(); - await tester.pumpAndSettle(); + controller.undo(); + await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.text(getIndexText(0)), findsOneWidget); + }); + + testWidgets('should undo the last swipe left', (tester) async { + final controller = CardSwiperController(); + var direction = CardSwiperDirection.none; + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, + ), + ), + ); + + controller.swipeLeft(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(1)), findsOneWidget); + + controller.undo(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsOneWidget); + expect(direction, CardSwiperDirection.left); + }); + + testWidgets('should undo the last swipe right', (tester) async { + final controller = CardSwiperController(); + var direction = CardSwiperDirection.none; + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, + ), + ), + ); + + controller.swipeRight(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(1)), findsOneWidget); + + controller.undo(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsOneWidget); + expect(direction, CardSwiperDirection.right); + }); + + testWidgets('should undo the last swipe top', (tester) async { + final controller = CardSwiperController(); + var direction = CardSwiperDirection.none; + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, + ), + ), + ); + + controller.swipeTop(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(1)), findsOneWidget); + + controller.undo(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsOneWidget); + expect(direction, CardSwiperDirection.top); + }); + + testWidgets('should undo the last swipe bottom', (tester) async { + final controller = CardSwiperController(); + var direction = CardSwiperDirection.none; + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, + ), + ), + ); + + controller.swipeBottom(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(1)), findsOneWidget); + + controller.undo(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsOneWidget); + expect(direction, CardSwiperDirection.bottom); + }); + + testWidgets('should not undo if onUndo returns false', (tester) async { + final controller = CardSwiperController(); + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + return false; + }, + ), + ), + ); + + controller.swipe(); + await tester.pumpAndSettle(); + + controller.undo(); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsNothing); + }); }); }); } diff --git a/test/card_swiper_test.dart b/test/card_swiper_test.dart index e14de99..cf6ca95 100644 --- a/test/card_swiper_test.dart +++ b/test/card_swiper_test.dart @@ -454,5 +454,52 @@ void main() { expect(isCalled, true); }); + + testWidgets('when swipes less than the threshold should go back', + (WidgetTester tester) async { + final swiperKey = GlobalKey(); + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + ), + ), + ); + + await tester.drag(find.byKey(swiperKey), const Offset(50, 0)); + await tester.pumpAndSettle(); + + expect(find.text(getIndexText(0)), findsOneWidget); + }); + }); + + testWidgets( + 'when isDisabled is true and tap on card expect to call onTapDisabled', + (WidgetTester tester) async { + final swiperKey = GlobalKey(); + var isCalled = false; + + await tester.pumpWidget( + MaterialApp( + home: CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onTapDisabled: () { + isCalled = true; + }, + isDisabled: true, + ), + ), + ); + + await tester.tap(find.byKey(swiperKey)); + await tester.pumpAndSettle(); + + expect(isCalled, true); }); }