import 'package:flutter_test/flutter_test.dart'; import 'package:lightmeter/generated/l10n.dart'; import 'package:lightmeter/screens/settings/components/lightmeter_pro/components/buy_pro/widget_list_tile_buy_pro.dart'; import 'package:lightmeter/screens/settings/components/lightmeter_pro/widget_settings_section_lightmeter_pro.dart'; import 'package:lightmeter/screens/shared/transparent_dialog/widget_dialog_transparent.dart'; import 'package:m3_lightmeter_iap/m3_lightmeter_iap.dart'; import '../../../application_mock.dart'; void main() { Future pumpApplication(WidgetTester tester) async { await tester.pumpWidget( IAPProducts( products: [ IAPProduct( storeId: IAPProductType.paidFeatures.storeId, ), ], child: const WidgetTestApplicationMock( child: LightmeterProSettingsSection(), ), ), ); await tester.pumpAndSettle(); } testWidgets( '`showBuyProDialog` and buy', (tester) async { await pumpApplication(tester); await tester.tap(find.byType(BuyProListTile)); await tester.pumpAndSettle(); expect(find.byType(TransparentDialog), findsOneWidget); expect(find.text(S.current.proFeatures), findsNWidgets(2)); expect(find.text(S.current.cancel), findsOneWidget); expect(find.text(S.current.unlock), findsOneWidget); await tester.tap(find.text(S.current.unlock)); await tester.pumpAndSettle(); expect(find.byType(TransparentDialog), findsNothing); }, ); testWidgets( '`showBuyProDialog` and cancel', (tester) async { await pumpApplication(tester); await tester.tap(find.byType(BuyProListTile)); await tester.pumpAndSettle(); expect(find.byType(TransparentDialog), findsOneWidget); expect(find.text(S.current.proFeatures), findsNWidgets(2)); expect(find.text(S.current.cancel), findsOneWidget); expect(find.text(S.current.unlock), findsOneWidget); await tester.tap(find.text(S.current.cancel)); await tester.pumpAndSettle(); expect(find.byType(TransparentDialog), findsNothing); }, ); }