From 2cb3536d66a58aa1d6013a8dd0f2afb177ad50be Mon Sep 17 00:00:00 2001 From: ricardodalarme Date: Wed, 29 Mar 2023 10:43:28 -0300 Subject: [PATCH] test: add some helpers to simplify the tests --- test/card_swiper_controller_test.dart | 255 +++++------ test/card_swiper_test.dart | 425 ++++++++---------- .../card_builder.dart} | 0 test/test_helpers/finders.dart | 9 + test/test_helpers/gestures.dart | 20 + test/test_helpers/pump_app.dart | 12 + 6 files changed, 347 insertions(+), 374 deletions(-) rename test/{utils.dart => test_helpers/card_builder.dart} (100%) create mode 100644 test/test_helpers/finders.dart create mode 100644 test/test_helpers/gestures.dart create mode 100644 test/test_helpers/pump_app.dart diff --git a/test/card_swiper_controller_test.dart b/test/card_swiper_controller_test.dart index b9a9843..7f2365a 100644 --- a/test/card_swiper_controller_test.dart +++ b/test/card_swiper_controller_test.dart @@ -1,8 +1,9 @@ -import 'package:flutter/material.dart'; import 'package:flutter_card_swiper/flutter_card_swiper.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() { group('CardSwiperController', () { @@ -45,22 +46,18 @@ void main() { testWidgets('swipe() should swipe the card to the defined direction', (tester) async { final controller = CardSwiperController(); - final swiperKey = GlobalKey(); var direction = CardSwiperDirection.none; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - direction: CardSwiperDirection.top, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - direction = swipeDirection; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + direction: CardSwiperDirection.top, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); @@ -73,22 +70,18 @@ void main() { testWidgets('swipeLeft() should swipe the card to the left', (tester) async { final controller = CardSwiperController(); - final swiperKey = GlobalKey(); var direction = CardSwiperDirection.none; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - direction: CardSwiperDirection.left, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - direction = swipeDirection; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + direction: CardSwiperDirection.left, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); @@ -101,21 +94,17 @@ void main() { testWidgets('swipeRight() should swipe the card to the right', (tester) async { final controller = CardSwiperController(); - final swiperKey = GlobalKey(); var direction = CardSwiperDirection.none; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - direction = swipeDirection; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); @@ -127,22 +116,18 @@ void main() { testWidgets('swipeTop() should swipe the card to the top', (tester) async { final controller = CardSwiperController(); - final swiperKey = GlobalKey(); var direction = CardSwiperDirection.none; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - direction: CardSwiperDirection.top, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - direction = swipeDirection; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + direction: CardSwiperDirection.top, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); @@ -155,22 +140,18 @@ void main() { testWidgets('swipeBottom() should swipe the card to the bottom', (tester) async { final controller = CardSwiperController(); - final swiperKey = GlobalKey(); var direction = CardSwiperDirection.none; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - direction: CardSwiperDirection.bottom, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - direction = swipeDirection; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + direction: CardSwiperDirection.bottom, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); @@ -184,54 +165,50 @@ void main() { testWidgets('should undo the last swipe', (tester) async { final controller = CardSwiperController(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - controller: controller, - cardsCount: 10, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, ), ); controller.swipe(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(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; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); controller.swipeLeft(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); expect(direction, CardSwiperDirection.left); }); @@ -239,29 +216,27 @@ void main() { 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; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); controller.swipeRight(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); expect(direction, CardSwiperDirection.right); }); @@ -269,29 +244,27 @@ void main() { 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; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); controller.swipeTop(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); expect(direction, CardSwiperDirection.top); }); @@ -299,45 +272,41 @@ void main() { 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; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + direction = swipeDirection; + return true; + }, ), ); controller.swipeBottom(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(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; - }, - ), + await tester.pumpApp( + CardSwiper( + controller: controller, + cardsCount: 10, + cardBuilder: genericBuilder, + onUndo: (_, __, swipeDirection) { + return false; + }, ), ); @@ -347,7 +316,7 @@ void main() { controller.undo(); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsNothing); + expect(find.card(0), findsNothing); }); }); }); diff --git a/test/card_swiper_test.dart b/test/card_swiper_test.dart index cf6ca95..654ae1d 100644 --- a/test/card_swiper_test.dart +++ b/test/card_swiper_test.dart @@ -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_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() { group('CardSwiper', () { testWidgets('pump widget', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 3, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 3, + cardBuilder: genericBuilder, ), ); @@ -28,15 +29,13 @@ void main() { final swiperKey = GlobalKey(); const initialIndex = 7; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - initialIndex: initialIndex, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + initialIndex: initialIndex, ), ); @@ -47,98 +46,88 @@ void main() { (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); }); testWidgets('when swiping left expect to see the next card', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(-300, 0)); + await tester.dragLeft(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); }); testWidgets('when swiping top expect to see the next card', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(0, -300)); + await tester.dragUp(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); }); testWidgets('when swiping bottom expect to see the next card', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(0, 300)); + await tester.dragDown(swiperKey); 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', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); @@ -149,14 +138,12 @@ void main() { (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 10, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 10, + cardBuilder: genericBuilder, ), ); @@ -167,93 +154,85 @@ void main() { (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - isDisabled: true, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + isDisabled: true, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); }); testWidgets('when isDisabled is false expect to allow swipes', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(1)), findsOneWidget); + expect(find.card(1), findsOneWidget); }); testWidgets('when isLoop is true expect to loop the cards', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 2, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 2, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); 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(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); }); testWidgets('when isLoop is false expect to not return to the first card', (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 2, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - isLoop: false, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 2, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + isLoop: false, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); 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(); expect(find.byType(Container), findsNothing); @@ -264,22 +243,20 @@ void main() { final swiperKey = GlobalKey(); var isCalled = false; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, direction) { - isCalled = true; - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, direction) { + isCalled = true; + return true; + }, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); expect(isCalled, true); @@ -290,24 +267,22 @@ void main() { (WidgetTester tester) async { final swiperKey = GlobalKey(); - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, direction) { - return false; - }, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, direction) { + return false; + }, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - expect(find.text(getIndexText(0)), findsOneWidget); + expect(find.card(0), findsOneWidget); }); testWidgets( @@ -316,31 +291,29 @@ void main() { final swiperKey = GlobalKey(); final directions = []; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 10, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - directions.add(swipeDirection); - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 10, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + directions.add(swipeDirection); + return true; + }, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(-300, 0)); + await tester.dragLeft(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(0, 300)); + await tester.dragDown(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(0, -300)); + await tester.dragUp(swiperKey); await tester.pumpAndSettle(); expect(directions, [ @@ -358,32 +331,30 @@ void main() { final oldIndexes = []; final newIndexes = []; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 3, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - oldIndexes.add(oldIndex); - newIndexes.add(currentIndex); - return true; - }, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 3, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + oldIndexes.add(oldIndex); + newIndexes.add(currentIndex); + return true; + }, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); expect(oldIndexes, [0, 1, 2, 0]); @@ -397,30 +368,28 @@ void main() { final oldIndexes = []; final newIndexes = []; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 3, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onSwipe: (oldIndex, currentIndex, swipeDirection) { - oldIndexes.add(oldIndex); - newIndexes.add(currentIndex); - return true; - }, - isLoop: false, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 3, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onSwipe: (oldIndex, currentIndex, swipeDirection) { + oldIndexes.add(oldIndex); + newIndexes.add(currentIndex); + return true; + }, + isLoop: false, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); expect(oldIndexes, [0, 1, 2]); @@ -432,24 +401,22 @@ void main() { final swiperKey = GlobalKey(); var isCalled = false; - await tester.pumpWidget( - MaterialApp( - home: CardSwiper( - key: swiperKey, - cardsCount: 2, - numberOfCardsDisplayed: 1, - cardBuilder: genericBuilder, - onEnd: () { - isCalled = true; - }, - ), + await tester.pumpApp( + CardSwiper( + key: swiperKey, + cardsCount: 2, + numberOfCardsDisplayed: 1, + cardBuilder: genericBuilder, + onEnd: () { + isCalled = true; + }, ), ); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); - await tester.drag(find.byKey(swiperKey), const Offset(300, 0)); + await tester.dragRight(swiperKey); await tester.pumpAndSettle(); expect(isCalled, true); @@ -458,33 +425,29 @@ void main() { 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.pumpApp( + 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); + expect(find.card(0), findsOneWidget); }); - }); - testWidgets( - 'when isDisabled is true and tap on card expect to call onTapDisabled', - (WidgetTester tester) async { - final swiperKey = GlobalKey(); - var isCalled = false; + 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( + await tester.pumpApp( + CardSwiper( key: swiperKey, cardsCount: 10, numberOfCardsDisplayed: 1, @@ -494,12 +457,12 @@ void main() { }, isDisabled: true, ), - ), - ); + ); - await tester.tap(find.byKey(swiperKey)); - await tester.pumpAndSettle(); + await tester.tap(find.byKey(swiperKey)); + await tester.pumpAndSettle(); - expect(isCalled, true); + expect(isCalled, true); + }); }); } diff --git a/test/utils.dart b/test/test_helpers/card_builder.dart similarity index 100% rename from test/utils.dart rename to test/test_helpers/card_builder.dart diff --git a/test/test_helpers/finders.dart b/test/test_helpers/finders.dart new file mode 100644 index 0000000..fcc5b30 --- /dev/null +++ b/test/test_helpers/finders.dart @@ -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)); + } +} diff --git a/test/test_helpers/gestures.dart b/test/test_helpers/gestures.dart new file mode 100644 index 0000000..dfe5ec0 --- /dev/null +++ b/test/test_helpers/gestures.dart @@ -0,0 +1,20 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +extension Gestures on WidgetTester { + Future dragLeft(Key key, {double offset = -300}) async { + return drag(find.byKey(key), Offset(offset, 0)); + } + + Future dragRight(Key key, {double offset = 300}) async { + return drag(find.byKey(key), Offset(offset, 0)); + } + + Future dragUp(Key key, {double offset = -300}) async { + return drag(find.byKey(key), Offset(0, offset)); + } + + Future dragDown(Key key, {double offset = 300}) async { + return drag(find.byKey(key), Offset(0, offset)); + } +} diff --git a/test/test_helpers/pump_app.dart b/test/test_helpers/pump_app.dart new file mode 100644 index 0000000..461f44a --- /dev/null +++ b/test/test_helpers/pump_app.dart @@ -0,0 +1,12 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +extension PumpApp on WidgetTester { + Future pumpApp(Widget widget) { + return pumpWidget( + MaterialApp( + home: widget, + ), + ); + } +}