diff --git a/assets/languages/strings_de.arb b/assets/languages/strings_de.arb index e3f21595..4344899f 100644 --- a/assets/languages/strings_de.arb +++ b/assets/languages/strings_de.arb @@ -35,6 +35,7 @@ "buyPaymentInformationDescription": "Bitte überweisen Sie den Kaufbetrag mit diesen Angaben über Ihre Bankanwendung. Der Verwendungszweck ist wichtig!", "buyRealUnit": "RealUnit kaufen", "buyRealu": "RealUnit Token kaufen", + "buyRecurringPaymentHint": "Tipp: Richten Sie mit diesen Angaben einen wiederkehrenden Dauerauftrag bei Ihrer Bank ein, um regelmässig zu investieren. Sie können auch mehrere Sparpläne parallel mit unterschiedlichen Beträgen oder Intervallen anlegen.", "cancel": "Abbrechen", "changeAddress": "Adresse ändern", "changeInReview": "Änderung in Prüfung", diff --git a/assets/languages/strings_en.arb b/assets/languages/strings_en.arb index 56e4db7f..0d0b8fc0 100644 --- a/assets/languages/strings_en.arb +++ b/assets/languages/strings_en.arb @@ -35,6 +35,7 @@ "buyPaymentInformationDescription": "Please transfer the purchase amount using your banking app with these details. The purpose of payment is important!", "buyRealUnit": "Buy RealUnit", "buyRealu": "Buy RealUnit Token", + "buyRecurringPaymentHint": "Tip: set up a recurring bank standing order with these details to invest regularly. You can also create several plans in parallel with different amounts or intervals.", "cancel": "Cancel", "changeAddress": "Change address", "changeInReview": "Change in review", diff --git a/lib/screens/buy/widgets/payment_information_details.dart b/lib/screens/buy/widgets/payment_information_details.dart index d1e794b1..fd813885 100644 --- a/lib/screens/buy/widgets/payment_information_details.dart +++ b/lib/screens/buy/widgets/payment_information_details.dart @@ -109,6 +109,22 @@ class PaymentInformationDetailsView extends StatelessWidget { ), ], ), + Row( + spacing: 12, + children: [ + const Icon( + Icons.autorenew, + size: 24, + color: RealUnitColors.realUnitBlue, + ), + Expanded( + child: Text( + S.of(context).buyRecurringPaymentHint, + style: Theme.of(context).textTheme.bodyMedium, + ), + ), + ], + ), ], ), Column( diff --git a/test/goldens/screens/buy/goldens/macos/buy_payment_info_loaded.png b/test/goldens/screens/buy/goldens/macos/buy_payment_info_loaded.png index 9e409915..12f4f6ac 100644 Binary files a/test/goldens/screens/buy/goldens/macos/buy_payment_info_loaded.png and b/test/goldens/screens/buy/goldens/macos/buy_payment_info_loaded.png differ diff --git a/test/goldens/screens/home/goldens/macos/home_page_loaded.png b/test/goldens/screens/home/goldens/macos/home_page_loaded.png index 84de9124..309a5508 100644 Binary files a/test/goldens/screens/home/goldens/macos/home_page_loaded.png and b/test/goldens/screens/home/goldens/macos/home_page_loaded.png differ diff --git a/test/screens/buy/widgets/payment_information_details_test.dart b/test/screens/buy/widgets/payment_information_details_test.dart new file mode 100644 index 00000000..f7fda721 --- /dev/null +++ b/test/screens/buy/widgets/payment_information_details_test.dart @@ -0,0 +1,68 @@ +import 'package:bloc_test/bloc_test.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_bloc/flutter_bloc.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mocktail/mocktail.dart'; +import 'package:realunit_wallet/generated/i18n.dart'; +import 'package:realunit_wallet/packages/service/dfx/models/payment/buy/buy_payment_info.dart'; +import 'package:realunit_wallet/screens/buy/cubits/buy_confirm/buy_confirm_cubit.dart'; +import 'package:realunit_wallet/screens/buy/widgets/payment_information_details.dart'; +import 'package:realunit_wallet/styles/colors.dart'; +import 'package:realunit_wallet/styles/currency.dart'; + +import '../../../helper/helper.dart'; + +class _MockBuyConfirmCubit extends MockCubit implements BuyConfirmCubit {} + +void main() { + late _MockBuyConfirmCubit confirmCubit; + + const buyPaymentInfo = BuyPaymentInfo( + id: 1, + iban: 'CH00 0000 0000 0000 0000 0', + bic: 'BICCBIC', + name: 'RealUnit AG', + street: 'Bahnhofstrasse', + number: '1', + zip: '8001', + city: 'Zurich', + country: 'Switzerland', + currency: Currency.chf, + ); + + setUp(() { + confirmCubit = _MockBuyConfirmCubit(); + when(() => confirmCubit.state).thenReturn(const BuyConfirmInitial()); + }); + + Widget buildSubject() => BlocProvider.value( + value: confirmCubit, + child: const Scaffold( + body: SingleChildScrollView( + child: PaymentInformationDetailsView( + buyPaymentInfo: buyPaymentInfo, + amount: '100', + ), + ), + ), + ); + + group('$PaymentInformationDetailsView recurring/multiple-plans hint', () { + testWidgets('renders the recurring savings-plan hint text', (tester) async { + await tester.pumpApp(buildSubject()); + + expect( + find.text(S.current.buyRecurringPaymentHint), + findsOneWidget, + ); + }); + + testWidgets('renders the autorenew icon in RealUnit blue for the hint', (tester) async { + await tester.pumpApp(buildSubject()); + + final icon = tester.widget(find.byIcon(Icons.autorenew)); + expect(icon.color, RealUnitColors.realUnitBlue); + expect(icon.size, 24); + }); + }); +}