From 2f8c4bc311c49e469d19a09bf9d2e891d5894651 Mon Sep 17 00:00:00 2001 From: hawkbee <49282360+hawkbee1@users.noreply.github.com> Date: Thu, 27 Jun 2024 16:17:13 +0200 Subject: [PATCH] Talao logo #2744 (#2748) * Talao logo #2744 * feat: Update logo instantly and test update --------- Co-authored-by: Bibash Shrestha --- lib/app/shared/loading/loading_view.dart | 3 - lib/app/shared/widget/wallet_logo.dart | 129 +++--- ...congratulations_account_creation_page.dart | 2 - .../congratulations_account_import_page.dart | 2 - .../verify_age/view/ai_age_result_page.dart | 2 - .../src/view/check_linkedin_profile.dart | 2 - .../ssi/backup/src/view/backup_menu.dart | 2 - .../drawer/ssi/manage_did/view/did_menu.dart | 1 - .../ssi/restore/src/view/restore_menu.dart | 2 - .../view/advanced_security_settings_menu.dart | 1 - .../recovery_key/view/key_verified_page.dart | 4 - lib/dashboard/drawer/widget/drawer_logo.dart | 3 - lib/onboarding/starter/view/starter_page.dart | 1 - .../wallet_ready/view/wallet_ready_page.dart | 1 - lib/pin_code/widgets/pin_code_widget.dart | 4 - lib/splash/view/splash_page.dart | 1 - test/app/shared/widget/wallet_logo_test.dart | 388 ++++++++++++------ 17 files changed, 315 insertions(+), 233 deletions(-) diff --git a/lib/app/shared/loading/loading_view.dart b/lib/app/shared/loading/loading_view.dart index a2ed95cf9..5a82c11aa 100644 --- a/lib/app/shared/loading/loading_view.dart +++ b/lib/app/shared/loading/loading_view.dart @@ -1,11 +1,9 @@ import 'dart:async'; import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class LoadingView { factory LoadingView() => _shared; @@ -67,7 +65,6 @@ class LoadingView { children: [ const SizedBox(height: 10), WalletLogo( - profileModel: context.read().state.model, height: Sizes.logoNormal, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/app/shared/widget/wallet_logo.dart b/lib/app/shared/widget/wallet_logo.dart index 42d4744b1..0d27d05d2 100644 --- a/lib/app/shared/widget/wallet_logo.dart +++ b/lib/app/shared/widget/wallet_logo.dart @@ -7,102 +7,67 @@ import 'package:flutter_bloc/flutter_bloc.dart'; class WalletLogo extends StatelessWidget { const WalletLogo({ super.key, - required this.profileModel, this.height, this.width, this.showPoweredBy = false, }); - final ProfileModel profileModel; final double? height; final double? width; final bool showPoweredBy; @override Widget build(BuildContext context) { - final FlavorCubit flavorCubit = context.read(); - String image = ''; + return BlocBuilder( + builder: (context, state) { + final FlavorCubit flavorCubit = context.read(); + String image = ''; - switch (profileModel.profileType) { - case ProfileType.custom: - case ProfileType.dutch: - case ProfileType.defaultOne: - image = flavorCubit.state == FlavorMode.development - ? ImageStrings.appLogoDev - : flavorCubit.state == FlavorMode.staging - ? ImageStrings.appLogoStage - : ImageStrings.appLogo; - case ProfileType.ebsiV3: - image = ImageStrings.ebsiLogo; - case ProfileType.enterprise: - image = profileModel.profileSetting.generalOptions.companyLogo; - case ProfileType.owfBaselineProfile: - image = ImageStrings.owfBaselineProfileLogo; - } + final profileModel = state.model; - return Column( - children: [ - Center( - child: profileModel.profileType != ProfileType.enterprise - ? ColorFiltered( - colorFilter: ColorFilter.mode( - Theme.of(context).colorScheme.primaryContainer, - BlendMode.srcIn, - ), - child: Logo( - width: width, - height: height, - profileModel: profileModel, - image: image, - ), - ) - : Logo( - width: width, - height: height, - profileModel: profileModel, - image: image, - ), - ), - ], - ); - } -} - -class Logo extends StatelessWidget { - const Logo({ - super.key, - required this.width, - required this.height, - required this.profileModel, - required this.image, - }); - - final double? width; - final double? height; - final ProfileModel profileModel; - final String image; - - @override - Widget build(BuildContext context) { - return SizedBox( - width: width, - height: height, - child: profileModel.profileType == ProfileType.enterprise - ? CachedImageFromNetwork( - image, - fit: BoxFit.contain, - width: width, - bgColor: Colors.transparent, - height: height, - errorMessage: '', - showLoading: false, - ) - : Image.asset( - image, - fit: BoxFit.contain, - width: width, - height: height, + switch (profileModel.profileType) { + case ProfileType.custom: + case ProfileType.dutch: + case ProfileType.defaultOne: + image = flavorCubit.state == FlavorMode.development + ? ImageStrings.appLogoDev + : flavorCubit.state == FlavorMode.staging + ? ImageStrings.appLogoStage + : ImageStrings.appLogo; + case ProfileType.ebsiV3: + image = ImageStrings.ebsiLogo; + case ProfileType.enterprise: + image = profileModel.profileSetting.generalOptions.companyLogo; + case ProfileType.owfBaselineProfile: + image = ImageStrings.owfBaselineProfileLogo; + } + return Column( + children: [ + Center( + child: SizedBox( + width: width, + height: height, + child: profileModel.profileType == ProfileType.enterprise + ? CachedImageFromNetwork( + image, + fit: BoxFit.contain, + width: width, + bgColor: Colors.transparent, + height: height, + errorMessage: '', + showLoading: false, + ) + : Image.asset( + image, + fit: BoxFit.contain, + width: width, + height: height, + ), + ), ), + ], + ); + }, ); } } diff --git a/lib/dashboard/add_account/create_account/view/congratulations_account_creation_page.dart b/lib/dashboard/add_account/create_account/view/congratulations_account_creation_page.dart index e7ed97d9c..27912563a 100644 --- a/lib/dashboard/add_account/create_account/view/congratulations_account_creation_page.dart +++ b/lib/dashboard/add_account/create_account/view/congratulations_account_creation_page.dart @@ -3,7 +3,6 @@ import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:confetti/confetti.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; import 'package:key_generator/key_generator.dart'; class CongratulationsAccountCreationPage extends StatelessWidget { @@ -106,7 +105,6 @@ class _CongratulationsAccountCreationViewState crossAxisAlignment: CrossAxisAlignment.center, children: [ WalletLogo( - profileModel: context.read().state.model, height: Sizes.logo2XLarge, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/add_account/import_account/view/congratulations_account_import_page.dart b/lib/dashboard/add_account/import_account/view/congratulations_account_import_page.dart index 98f2fed76..8d9154319 100644 --- a/lib/dashboard/add_account/import_account/view/congratulations_account_import_page.dart +++ b/lib/dashboard/add_account/import_account/view/congratulations_account_import_page.dart @@ -3,7 +3,6 @@ import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:confetti/confetti.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class CongratulationsAccountImportPage extends StatelessWidget { const CongratulationsAccountImportPage({ @@ -68,7 +67,6 @@ class _CongratulationsAccountImportViewState crossAxisAlignment: CrossAxisAlignment.center, children: [ WalletLogo( - profileModel: context.read().state.model, height: Sizes.logo2XLarge, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/ai_age_verification/verify_age/view/ai_age_result_page.dart b/lib/dashboard/ai_age_verification/verify_age/view/ai_age_result_page.dart index 046e23eba..860bed6a2 100644 --- a/lib/dashboard/ai_age_verification/verify_age/view/ai_age_result_page.dart +++ b/lib/dashboard/ai_age_verification/verify_age/view/ai_age_result_page.dart @@ -116,7 +116,6 @@ class SuccessWidget extends StatelessWidget { children: [ const Spacer(), WalletLogo( - profileModel: context.read().state.model, height: Sizes.logo2XLarge, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, @@ -176,7 +175,6 @@ class FailureWidget extends StatelessWidget { children: [ const Spacer(), WalletLogo( - profileModel: context.read().state.model, height: Sizes.logo2XLarge, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/src/view/check_linkedin_profile.dart b/lib/dashboard/drawer/src/view/check_linkedin_profile.dart index 5661d5f6e..539fcbed5 100644 --- a/lib/dashboard/drawer/src/view/check_linkedin_profile.dart +++ b/lib/dashboard/drawer/src/view/check_linkedin_profile.dart @@ -4,7 +4,6 @@ import 'package:altme/app/app.dart'; import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class CheckForLinkedInProfile extends StatelessWidget { const CheckForLinkedInProfile({super.key}); @@ -41,7 +40,6 @@ class CheckForLinkedInProfileView extends StatelessWidget { padding: EdgeInsets.zero, ), WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/ssi/backup/src/view/backup_menu.dart b/lib/dashboard/drawer/ssi/backup/src/view/backup_menu.dart index 780ddff33..df0d3774c 100644 --- a/lib/dashboard/drawer/ssi/backup/src/view/backup_menu.dart +++ b/lib/dashboard/drawer/ssi/backup/src/view/backup_menu.dart @@ -2,7 +2,6 @@ import 'package:altme/app/app.dart'; import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class BackupMenu extends StatelessWidget { const BackupMenu({super.key}); @@ -39,7 +38,6 @@ class BackupView extends StatelessWidget { padding: EdgeInsets.zero, ), WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/ssi/manage_did/view/did_menu.dart b/lib/dashboard/drawer/ssi/manage_did/view/did_menu.dart index efc1204d5..191e8ab98 100644 --- a/lib/dashboard/drawer/ssi/manage_did/view/did_menu.dart +++ b/lib/dashboard/drawer/ssi/manage_did/view/did_menu.dart @@ -40,7 +40,6 @@ class DidView extends StatelessWidget { padding: EdgeInsets.zero, ), WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/ssi/restore/src/view/restore_menu.dart b/lib/dashboard/drawer/ssi/restore/src/view/restore_menu.dart index c3bdd7a8f..905cd5cdc 100644 --- a/lib/dashboard/drawer/ssi/restore/src/view/restore_menu.dart +++ b/lib/dashboard/drawer/ssi/restore/src/view/restore_menu.dart @@ -2,7 +2,6 @@ import 'package:altme/app/app.dart'; import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class RestoreMenu extends StatelessWidget { const RestoreMenu({super.key}); @@ -39,7 +38,6 @@ class RestoreView extends StatelessWidget { padding: EdgeInsets.zero, ), WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/wallet_security/advanced_security_settings/view/advanced_security_settings_menu.dart b/lib/dashboard/drawer/wallet_security/advanced_security_settings/view/advanced_security_settings_menu.dart index 8b8fd1655..cc93f0c63 100644 --- a/lib/dashboard/drawer/wallet_security/advanced_security_settings/view/advanced_security_settings_menu.dart +++ b/lib/dashboard/drawer/wallet_security/advanced_security_settings/view/advanced_security_settings_menu.dart @@ -41,7 +41,6 @@ class AdvancedSecuritySettingsView extends StatelessWidget { padding: EdgeInsets.zero, ), WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/wallet_security/recovery_key/view/key_verified_page.dart b/lib/dashboard/drawer/wallet_security/recovery_key/view/key_verified_page.dart index 839ac7b5d..b1e9a892d 100644 --- a/lib/dashboard/drawer/wallet_security/recovery_key/view/key_verified_page.dart +++ b/lib/dashboard/drawer/wallet_security/recovery_key/view/key_verified_page.dart @@ -1,9 +1,6 @@ import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/dashboard.dart'; import 'package:altme/l10n/l10n.dart'; -//import 'package:confetti/confetti.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class KeyVerifiedPage extends StatelessWidget { const KeyVerifiedPage({super.key}); @@ -37,7 +34,6 @@ class KeyVerifiedView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/dashboard/drawer/widget/drawer_logo.dart b/lib/dashboard/drawer/widget/drawer_logo.dart index b6acab6a9..e19095996 100644 --- a/lib/dashboard/drawer/widget/drawer_logo.dart +++ b/lib/dashboard/drawer/widget/drawer_logo.dart @@ -1,8 +1,6 @@ import 'package:altme/app/app.dart'; -import 'package:altme/dashboard/dashboard.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_bloc/flutter_bloc.dart'; class DrawerLogo extends StatelessWidget { const DrawerLogo({super.key}); @@ -13,7 +11,6 @@ class DrawerLogo extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ WalletLogo( - profileModel: context.read().state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/onboarding/starter/view/starter_page.dart b/lib/onboarding/starter/view/starter_page.dart index 74843bfc4..d9ae2f70d 100644 --- a/lib/onboarding/starter/view/starter_page.dart +++ b/lib/onboarding/starter/view/starter_page.dart @@ -62,7 +62,6 @@ class StarterView extends StatelessWidget { children: [ const Spacer(flex: 5), WalletLogo( - profileModel: state.model, width: MediaQuery.of(context).size.shortestSide * 0.6, height: MediaQuery.of(context).size.longestSide * 0.2, ), diff --git a/lib/onboarding/wallet_ready/view/wallet_ready_page.dart b/lib/onboarding/wallet_ready/view/wallet_ready_page.dart index 5f80f6768..e1c654fde 100644 --- a/lib/onboarding/wallet_ready/view/wallet_ready_page.dart +++ b/lib/onboarding/wallet_ready/view/wallet_ready_page.dart @@ -89,7 +89,6 @@ class _WalletReadyViewState extends State { crossAxisAlignment: CrossAxisAlignment.center, children: [ WalletLogo( - profileModel: widget.profileCubit.state.model, height: 90, width: MediaQuery.of(context).size.shortestSide * 0.5, showPoweredBy: true, diff --git a/lib/pin_code/widgets/pin_code_widget.dart b/lib/pin_code/widgets/pin_code_widget.dart index 54229044e..06da6a7cd 100644 --- a/lib/pin_code/widgets/pin_code_widget.dart +++ b/lib/pin_code/widgets/pin_code_widget.dart @@ -107,10 +107,6 @@ class _PinCodeWidgetState extends State widget.header! else WalletLogo( - profileModel: context - .read() - .state - .model, height: 90, width: MediaQuery.of(context) .size diff --git a/lib/splash/view/splash_page.dart b/lib/splash/view/splash_page.dart index f66cfb19a..22c1a9d43 100644 --- a/lib/splash/view/splash_page.dart +++ b/lib/splash/view/splash_page.dart @@ -283,7 +283,6 @@ class _SplashViewState extends State { children: [ const Spacer(flex: 2), WalletLogo( - profileModel: state.model, width: MediaQuery.of(context).size.shortestSide * 0.6, height: MediaQuery.of(context).size.longestSide * 0.2, ), diff --git a/test/app/shared/widget/wallet_logo_test.dart b/test/app/shared/widget/wallet_logo_test.dart index 845453258..fff40b6fc 100644 --- a/test/app/shared/widget/wallet_logo_test.dart +++ b/test/app/shared/widget/wallet_logo_test.dart @@ -5,43 +5,50 @@ 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 '../../../helpers/helpers.dart'; -class MockFlavorCubit extends MockCubit implements FlavorCubit { - @override - final state = FlavorMode.development; -} +class MockFlavorCubit extends MockCubit implements FlavorCubit {} -void main() { - late FlavorCubit mockFlavorCubit; +class MockProfileCubit extends MockCubit + implements ProfileCubit {} - setUpAll(() { - mockFlavorCubit = MockFlavorCubit(); - }); +void main() { + final MockFlavorCubit mockFlavorCubit = MockFlavorCubit(); + final MockProfileCubit mockProfileCubit = MockProfileCubit(); group('WalletLogo widget', () { testWidgets( 'displays correct image for ProfileType.defaultOne in development', (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState( + model: ProfileModel.defaultOne( + polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, + walletType: WalletType.personal, + walletProtectionType: WalletProtectionType.FA2, + isDeveloperMode: true, + clientId: 'clientId', + clientSecret: 'clientSecret', + ), + ), + ); await tester.pumpApp( Scaffold( body: Builder( builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel.defaultOne( - polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, - walletType: WalletType.personal, - walletProtectionType: WalletProtectionType.FA2, - isDeveloperMode: true, - clientId: 'clientId', - clientSecret: 'clientSecret', + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, ), - ), + BlocProvider( + create: (context) => mockProfileCubit, + ), + ], + child: const WalletLogo(height: 100, width: 100), ); }, ), @@ -49,52 +56,151 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.byType(Image), findsOneWidget); + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.appLogoDev); }); - testWidgets('displays correct image for ProfileType.custom in development', - (WidgetTester tester) async { - await tester.pumpApp( - Scaffold( - body: Builder( - builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel.empty(), - ), - ); - }, + group('ProfileType.custom', () { + testWidgets( + 'displays correct image for ProfileType.custom in development', + (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState(model: ProfileModel.empty()), + ); + await tester.pumpApp( + Scaffold( + body: Builder( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, + ), + ], + child: const WalletLogo(height: 100, width: 100), + ); + }, + ), ), - ), - ); - await tester.pumpAndSettle(); + ); + await tester.pumpAndSettle(); + + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.appLogoDev); + }); + + testWidgets('displays correct image for ProfileType.custom in staging', + (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.staging); + when(() => mockProfileCubit.state).thenReturn( + ProfileState(model: ProfileModel.empty()), + ); + await tester.pumpApp( + Scaffold( + body: Builder( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, + ), + ], + child: const WalletLogo(height: 100, width: 100), + ); + }, + ), + ), + ); + await tester.pumpAndSettle(); - expect(find.byType(Image), findsOneWidget); + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.appLogoStage); + }); + + testWidgets('displays correct image for ProfileType.custom in production', + (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.production); + when(() => mockProfileCubit.state).thenReturn( + ProfileState(model: ProfileModel.empty()), + ); + await tester.pumpApp( + Scaffold( + body: Builder( + builder: (context) { + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, + ), + ], + child: const WalletLogo(height: 100, width: 100), + ); + }, + ), + ), + ); + await tester.pumpAndSettle(); + + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.appLogo); + }); }); testWidgets('displays correct image for ProfileType.dutch in development', (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState( + model: ProfileModel.dutch( + polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, + walletType: WalletType.personal, + walletProtectionType: WalletProtectionType.FA2, + isDeveloperMode: true, + clientId: 'clientId', + clientSecret: 'clientSecret', + ), + ), + ); await tester.pumpApp( Scaffold( body: Builder( builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel.dutch( - polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, - walletType: WalletType.personal, - walletProtectionType: WalletProtectionType.FA2, - isDeveloperMode: true, - clientId: 'clientId', - clientSecret: 'clientSecret', + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, ), - ), + ], + child: const WalletLogo(height: 100, width: 100), ); }, ), @@ -102,29 +208,43 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.byType(Image), findsOneWidget); + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.appLogoDev); }); testWidgets('displays correct image for ProfileType.ebsiV3 in development', (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState( + model: ProfileModel.ebsiV3( + polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, + walletType: WalletType.personal, + walletProtectionType: WalletProtectionType.FA2, + isDeveloperMode: true, + clientId: 'clientId', + clientSecret: 'clientSecret', + ), + ), + ); await tester.pumpApp( Scaffold( body: Builder( builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel.ebsiV3( - polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, - walletType: WalletType.personal, - walletProtectionType: WalletProtectionType.FA2, - isDeveloperMode: true, - clientId: 'clientId', - clientSecret: 'clientSecret', + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, ), - ), + ], + child: const WalletLogo(height: 100, width: 100), ); }, ), @@ -132,31 +252,45 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.byType(Image), findsOneWidget); + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.ebsiLogo); }); testWidgets( 'displays correct image for ' 'ProfileType.owfBaselineProfile in development', (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState( + model: ProfileModel.owfBaselineProfile( + polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, + walletType: WalletType.personal, + walletProtectionType: WalletProtectionType.FA2, + isDeveloperMode: true, + clientId: 'clientId', + clientSecret: 'clientSecret', + ), + ), + ); await tester.pumpApp( Scaffold( body: Builder( builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel.owfBaselineProfile( - polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, - walletType: WalletType.personal, - walletProtectionType: WalletProtectionType.FA2, - isDeveloperMode: true, - clientId: 'clientId', - clientSecret: 'clientSecret', + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, ), - ), + ], + child: const WalletLogo(height: 100, width: 100), ); }, ), @@ -164,53 +298,67 @@ void main() { ); await tester.pumpAndSettle(); - expect(find.byType(Image), findsOneWidget); + final imageFinder = find.byType(Image); + expect(imageFinder, findsOneWidget); + + final Image image = tester.widget(imageFinder); + final AssetImage imageProvider = image.image as AssetImage; + expect(imageProvider.assetName, ImageStrings.owfBaselineProfileLogo); }); testWidgets( 'displays correct image for ProfileType.enterprise in development', (WidgetTester tester) async { + when(() => mockFlavorCubit.state).thenReturn(FlavorMode.development); + when(() => mockProfileCubit.state).thenReturn( + ProfileState( + model: ProfileModel( + polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, + walletType: WalletType.personal, + walletProtectionType: WalletProtectionType.pinCode, + isDeveloperMode: false, + profileType: ProfileType.enterprise, + profileSetting: ProfileSetting( + blockchainOptions: BlockchainOptions.initial(), + discoverCardsOptions: DiscoverCardsOptions.initial(), + generalOptions: GeneralOptions( + walletType: WalletAppType.altme, + companyName: '', + companyWebsite: '', + companyLogo: 'https://www.demo.com', + tagLine: '', + splashScreenTitle: '', + profileName: '', + profileVersion: '', + published: DateTime.now(), + profileId: '', + customerPlan: '', + primaryColor: '', + ), + helpCenterOptions: HelpCenterOptions.initial(), + selfSovereignIdentityOptions: + SelfSovereignIdentityOptions.initial(), + settingsMenu: SettingsMenu.initial(), + version: '', + walletSecurityOptions: WalletSecurityOptions.initial(), + ), + ), + ), + ); await tester.pumpApp( Scaffold( body: Builder( builder: (context) { - return BlocProvider( - create: (context) => mockFlavorCubit, - child: WalletLogo( - height: 100, - width: 100, - profileModel: ProfileModel( - polygonIdNetwork: PolygonIdNetwork.PolygonMainnet, - walletType: WalletType.personal, - walletProtectionType: WalletProtectionType.pinCode, - isDeveloperMode: false, - profileType: ProfileType.enterprise, - profileSetting: ProfileSetting( - blockchainOptions: BlockchainOptions.initial(), - discoverCardsOptions: DiscoverCardsOptions.initial(), - generalOptions: GeneralOptions( - walletType: WalletAppType.altme, - companyName: '', - companyWebsite: '', - companyLogo: 'https://www.demo.com', - tagLine: '', - splashScreenTitle: '', - profileName: '', - profileVersion: '', - published: DateTime.now(), - profileId: '', - customerPlan: '', - primaryColor: '', - ), - helpCenterOptions: HelpCenterOptions.initial(), - selfSovereignIdentityOptions: - SelfSovereignIdentityOptions.initial(), - settingsMenu: SettingsMenu.initial(), - version: '', - walletSecurityOptions: WalletSecurityOptions.initial(), - ), + return MultiBlocProvider( + providers: [ + BlocProvider( + create: (context) => mockFlavorCubit, + ), + BlocProvider( + create: (context) => mockProfileCubit, ), - ), + ], + child: const WalletLogo(height: 100, width: 100), ); }, ),