import 'package:flutter/material.dart'; import 'package:flutter_test/flutter_test.dart'; import 'package:fruitshorts/pages/discover/widgets/cover_carousel.dart'; void main() { TestWidgetsFlutterBinding.ensureInitialized(); testWidgets('should_turn_cube_and_keep_title_on_poster_when_carousel_pages', (tester) async { await tester.pumpWidget( MaterialApp( home: Scaffold( body: CoverCarousel( items: [ for (final title in ['The Signal', 'City Lights', 'Vengeance']) CoverItem( title: title, subtitle: 'Mock', image: '/files/poster.png', onOpen: _noop, ), ], ), ), ), ); await tester.pump(); expect(find.text('The Signal'), findsOneWidget); expect(find.text('Mock'), findsOneWidget); final box = tester.getRect(find.byType(CoverCarousel)); final gesture = await tester.startGesture(Offset(box.right - 40, box.center.dy)); await gesture.moveBy(const Offset(-500, 0)); await tester.pump(); final turned = tester.widgetList(find.byType(Transform)).any( (transform) => (transform.transform.entry(0, 0) - 1).abs() > 0.15, ); expect(turned, isTrue); await gesture.moveBy(const Offset(-200, 0)); await gesture.up(); await tester.pump(); await tester.pump(const Duration(milliseconds: 450)); expect(find.text('City Lights'), findsOneWidget); expect(tester.takeException(), isNull); }); } void _noop() {}