From 3bb2e1d7fbdbb96dda5899d4feca2286c345d56d Mon Sep 17 00:00:00 2001 From: likho Date: Thu, 13 Oct 2022 20:40:19 +0200 Subject: [PATCH] WIP: widget tests --- .gitignore | 1 + test/cached_electrumx_test.mocks.dart | 16 +- test/electrumx_test.mocks.dart | 16 +- .../exchange/exchange_view_test.mocks.dart | 16 +- test/widget_tests/address_book_card_test.dart | 41 ++ test/widget_tests/animated_text_test.dart | 1 + test/widget_tests/wallet_card_test.dart | 156 +++++ test/widget_tests/wallet_card_test.mocks.dart | 589 ++++++++++++++++++ 8 files changed, 812 insertions(+), 24 deletions(-) create mode 100644 test/widget_tests/wallet_card_test.dart create mode 100644 test/widget_tests/wallet_card_test.mocks.dart diff --git a/.gitignore b/.gitignore index 3ffacac45..323aac218 100644 --- a/.gitignore +++ b/.gitignore @@ -49,3 +49,4 @@ coverage scripts/**/build /lib/external_api_keys.dart /test/services/coins/bitcoincash/bitcoincash_wallet_test_parameters.dart +/test/services/coins/namecoin/namecoin_wallet_test_parameters.dart.txt diff --git a/test/cached_electrumx_test.mocks.dart b/test/cached_electrumx_test.mocks.dart index 52f6c40a5..d3d222ad8 100644 --- a/test/cached_electrumx_test.mocks.dart +++ b/test/cached_electrumx_test.mocks.dart @@ -276,14 +276,6 @@ class MockPrefs extends _i1.Mock implements _i5.Prefs { super.noSuchMethod(Invocation.setter(#wifiOnly, wifiOnly), returnValueForMissingStub: null); @override - bool get externalCalls => - (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) - as bool); - @override - set externalCalls(bool? eCalls) => - super.noSuchMethod(Invocation.setter(#externalCalls, eCalls), - returnValueForMissingStub: null); - @override bool get showFavoriteWallets => (super.noSuchMethod(Invocation.getter(#showFavoriteWallets), returnValue: false) as bool); @@ -388,6 +380,14 @@ class MockPrefs extends _i1.Mock implements _i5.Prefs { super.noSuchMethod(Invocation.setter(#startupWalletId, startupWalletId), returnValueForMissingStub: null); @override + bool get externalCalls => + (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) + as bool); + @override + set externalCalls(bool? externalCalls) => + super.noSuchMethod(Invocation.setter(#externalCalls, externalCalls), + returnValueForMissingStub: null); + @override bool get hasListeners => (super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool); diff --git a/test/electrumx_test.mocks.dart b/test/electrumx_test.mocks.dart index b8ec89ff8..671a4edc8 100644 --- a/test/electrumx_test.mocks.dart +++ b/test/electrumx_test.mocks.dart @@ -125,14 +125,6 @@ class MockPrefs extends _i1.Mock implements _i4.Prefs { super.noSuchMethod(Invocation.setter(#wifiOnly, wifiOnly), returnValueForMissingStub: null); @override - bool get externalCalls => - (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) - as bool); - @override - set externalCalls(bool? eCalls) => - super.noSuchMethod(Invocation.setter(#externalCalls, eCalls), - returnValueForMissingStub: null); - @override bool get showFavoriteWallets => (super.noSuchMethod(Invocation.getter(#showFavoriteWallets), returnValue: false) as bool); @@ -237,6 +229,14 @@ class MockPrefs extends _i1.Mock implements _i4.Prefs { super.noSuchMethod(Invocation.setter(#startupWalletId, startupWalletId), returnValueForMissingStub: null); @override + bool get externalCalls => + (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) + as bool); + @override + set externalCalls(bool? externalCalls) => + super.noSuchMethod(Invocation.setter(#externalCalls, externalCalls), + returnValueForMissingStub: null); + @override bool get hasListeners => (super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool); diff --git a/test/screen_tests/exchange/exchange_view_test.mocks.dart b/test/screen_tests/exchange/exchange_view_test.mocks.dart index 73667c366..d6e307cc5 100644 --- a/test/screen_tests/exchange/exchange_view_test.mocks.dart +++ b/test/screen_tests/exchange/exchange_view_test.mocks.dart @@ -107,14 +107,6 @@ class MockPrefs extends _i1.Mock implements _i3.Prefs { super.noSuchMethod(Invocation.setter(#wifiOnly, wifiOnly), returnValueForMissingStub: null); @override - bool get externalCalls => - (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) - as bool); - @override - set externalCalls(bool? eCalls) => - super.noSuchMethod(Invocation.setter(#externalCalls, eCalls), - returnValueForMissingStub: null); - @override bool get showFavoriteWallets => (super.noSuchMethod(Invocation.getter(#showFavoriteWallets), returnValue: false) as bool); @@ -219,6 +211,14 @@ class MockPrefs extends _i1.Mock implements _i3.Prefs { super.noSuchMethod(Invocation.setter(#startupWalletId, startupWalletId), returnValueForMissingStub: null); @override + bool get externalCalls => + (super.noSuchMethod(Invocation.getter(#externalCalls), returnValue: false) + as bool); + @override + set externalCalls(bool? externalCalls) => + super.noSuchMethod(Invocation.setter(#externalCalls, externalCalls), + returnValueForMissingStub: null); + @override bool get hasListeners => (super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) as bool); diff --git a/test/widget_tests/address_book_card_test.dart b/test/widget_tests/address_book_card_test.dart index a82e31323..1800e77bf 100644 --- a/test/widget_tests/address_book_card_test.dart +++ b/test/widget_tests/address_book_card_test.dart @@ -5,6 +5,7 @@ import 'package:mockito/annotations.dart'; import 'package:mockito/mockito.dart'; import 'package:stackwallet/models/contact.dart'; import 'package:stackwallet/models/contact_address_entry.dart'; +import 'package:stackwallet/pages/address_book_views/subviews/contact_popup.dart'; import 'package:stackwallet/providers/global/address_book_service_provider.dart'; import 'package:stackwallet/services/address_book_service.dart'; import 'package:stackwallet/utilities/enums/coin_enum.dart'; @@ -53,4 +54,44 @@ void main() { expect(find.text("John Doe"), findsOneWidget); }); + + testWidgets("TEst button press opens dialog", (widgetTester) async { + final service = MockAddressBookService(); + + // await widgetTester.pumpWidget( + // ProviderScope( + // overrides: [ + // addressBookServiceProvider.overrideWithValue( + // service, + // ), + // ], + // child: MaterialApp( + // theme: ThemeData( + // extensions: [ + // StackColors.fromStackColorTheme( + // LightColors(), + // ), + // ], + // ), + // home: const AddressBookCard( + // contactId: "03177ce0-4af4-11ed-9617-af8aa7a3796f", + // ), + // ), + // ), + // ); + // + // when(service.getContactById("03177ce0-4af4-11ed-9617-af8aa7a3796f")) + // .thenAnswer((realInvocation) => Contact( + // name: "John Doe", + // addresses: [ + // const ContactAddressEntry( + // coin: Coin.bitcoincash, + // address: "some bch address", + // label: "Bills") + // ], + // isFavorite: true)); + // await widgetTester.tap(find.byType(RawMaterialButton)); + // // when(contact) + // await widgetTester.pump(); + }); } diff --git a/test/widget_tests/animated_text_test.dart b/test/widget_tests/animated_text_test.dart index 8aaa7a674..ba2610dc5 100644 --- a/test/widget_tests/animated_text_test.dart +++ b/test/widget_tests/animated_text_test.dart @@ -33,5 +33,6 @@ void main() { ); expect(find.text("Calculating"), findsOneWidget); + expect(find.byWidget(animatedText), findsOneWidget); }); } diff --git a/test/widget_tests/wallet_card_test.dart b/test/widget_tests/wallet_card_test.dart new file mode 100644 index 000000000..0faf66d82 --- /dev/null +++ b/test/widget_tests/wallet_card_test.dart @@ -0,0 +1,156 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_riverpod/flutter_riverpod.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:mockito/annotations.dart'; +import 'package:mockito/mockito.dart'; +import 'package:mockingjay/mockingjay.dart' as mockingjay; +import 'package:stackwallet/providers/providers.dart'; +import 'package:stackwallet/services/coins/bitcoin/bitcoin_wallet.dart'; +import 'package:stackwallet/services/coins/coin_service.dart'; +import 'package:stackwallet/services/coins/manager.dart'; +import 'package:stackwallet/services/wallets.dart'; +import 'package:stackwallet/utilities/enums/coin_enum.dart'; +import 'package:stackwallet/utilities/theme/light_colors.dart'; +import 'package:stackwallet/utilities/theme/stack_colors.dart'; +import 'package:stackwallet/widgets/wallet_card.dart'; + +import 'wallet_card_test.mocks.dart'; + +class MockNavigatorObserver extends Mock implements NavigatorObserver {} + +@GenerateMocks([Wallets, BitcoinWallet]) +void main() { + group('Navigation tests', () { + late NavigatorObserver mockObserver; + setUp(() { + mockObserver = MockNavigatorObserver(); + }); + + Future _builAddressSheetCard( + WidgetTester widgetTester, bool popPrevious) async { + final CoinServiceAPI wallet = MockBitcoinWallet(); + when(wallet.walletId).thenAnswer((realInvocation) => "wallet id"); + when(wallet.coin).thenAnswer((realInvocation) => Coin.bitcoin); + when(wallet.walletName).thenAnswer((realInvocation) => "wallet name"); + + final wallets = MockWallets(); + final manager = Manager(wallet); + + when(wallets.getManagerProvider("wallet id")).thenAnswer( + (realInvocation) => ChangeNotifierProvider((ref) => manager)); + + await widgetTester.pumpWidget( + ProviderScope( + overrides: [ + walletsChangeNotifierProvider.overrideWithValue(wallets), + ], + child: MaterialApp( + theme: ThemeData( + extensions: [ + StackColors.fromStackColorTheme(LightColors()), + ], + ), + home: Material( + child: WalletSheetCard( + walletId: "wallet id", + popPrevious: popPrevious, + ), + ), + navigatorObservers: [mockObserver], + ), + ), + ); + } + + // testWidgets("When not popOver redirect", (widgetTester) async { + // final navigator = mockingjay.MockNavigator(); + // // mockingjay.when(() => navi) + // await _builAddressSheetCard(widgetTester, false); + // + // // final Route pushedRoute = verify(mocki) + // expect(find.byType(MaterialButton), findsOneWidget); + // await widgetTester.tap(find.byType(MaterialButton)); + // verify(mockObserver.didPop(mockingjay.any(), mockingjay.any())); + // }); + }); + + testWidgets('test widget loads correctly', (widgetTester) async { + final CoinServiceAPI wallet = MockBitcoinWallet(); + when(wallet.walletId).thenAnswer((realInvocation) => "wallet id"); + when(wallet.coin).thenAnswer((realInvocation) => Coin.bitcoin); + when(wallet.walletName).thenAnswer((realInvocation) => "wallet name"); + + final wallets = MockWallets(); + final manager = Manager(wallet); + + when(wallets.getManagerProvider("wallet id")).thenAnswer( + (realInvocation) => ChangeNotifierProvider((ref) => manager)); + + const walletSheetCard = WalletSheetCard( + walletId: "wallet id", + ); + + await widgetTester.pumpWidget( + ProviderScope( + overrides: [ + walletsChangeNotifierProvider.overrideWithValue(wallets), + ], + child: MaterialApp( + theme: ThemeData( + extensions: [ + StackColors.fromStackColorTheme(LightColors()), + ], + ), + home: const Material( + child: walletSheetCard, + ), + ), + ), + ); + expect(find.byWidget(walletSheetCard), findsOneWidget); + }); + + // testWidgets("test pop previous is false does nothing", (widgetTester) async { + // final CoinServiceAPI wallet = MockBitcoinWallet(); + // when(wallet.walletId).thenAnswer((realInvocation) => "wallet id"); + // when(wallet.coin).thenAnswer((realInvocation) => Coin.bitcoin); + // when(wallet.walletName).thenAnswer((realInvocation) => "wallet name"); + // + // final wallets = MockWallets(); + // final manager = Manager(wallet); + // + // when(wallets.getManagerProvider("wallet id")).thenAnswer( + // (realInvocation) => ChangeNotifierProvider((ref) => manager)); + // + // const walletSheetCard = WalletSheetCard( + // walletId: "wallet id", + // popPrevious: false, + // ); + // + // // late NavigatorObserver mockObserver; + // // + // // setUp(() { + // // mockObserver = MockNavigatorObserver(); + // // }); + // + // await widgetTester.pumpWidget( + // ProviderScope( + // overrides: [ + // walletsChangeNotifierProvider.overrideWithValue(wallets), + // ], + // child: MaterialApp( + // theme: ThemeData( + // extensions: [ + // StackColors.fromStackColorTheme(LightColors()), + // ], + // ), + // home: const Material( + // child: walletSheetCard, + // ), + // ), + // ), + // ); + // + // await widgetTester.tap(find.byType(MaterialButton)); + // }); +} diff --git a/test/widget_tests/wallet_card_test.mocks.dart b/test/widget_tests/wallet_card_test.mocks.dart new file mode 100644 index 000000000..8d209d34e --- /dev/null +++ b/test/widget_tests/wallet_card_test.mocks.dart @@ -0,0 +1,589 @@ +// Mocks generated by Mockito 5.2.0 from annotations +// in stackwallet/test/widget_tests/wallet_card_test.dart. +// Do not manually edit this file. + +import 'dart:async' as _i14; +import 'dart:ui' as _i16; + +import 'package:decimal/decimal.dart' as _i9; +import 'package:flutter/foundation.dart' as _i4; +import 'package:flutter_riverpod/flutter_riverpod.dart' as _i5; +import 'package:mockito/mockito.dart' as _i1; +import 'package:stackwallet/electrumx_rpc/cached_electrumx.dart' as _i11; +import 'package:stackwallet/electrumx_rpc/electrumx.dart' as _i10; +import 'package:stackwallet/models/models.dart' as _i8; +import 'package:stackwallet/services/coins/bitcoin/bitcoin_wallet.dart' as _i17; +import 'package:stackwallet/services/coins/manager.dart' as _i6; +import 'package:stackwallet/services/node_service.dart' as _i3; +import 'package:stackwallet/services/transaction_notification_tracker.dart' + as _i7; +import 'package:stackwallet/services/wallets.dart' as _i12; +import 'package:stackwallet/services/wallets_service.dart' as _i2; +import 'package:stackwallet/utilities/enums/coin_enum.dart' as _i13; +import 'package:stackwallet/utilities/prefs.dart' as _i15; + +// ignore_for_file: type=lint +// ignore_for_file: avoid_redundant_argument_values +// ignore_for_file: avoid_setters_without_getters +// ignore_for_file: comment_references +// ignore_for_file: implementation_imports +// ignore_for_file: invalid_use_of_visible_for_testing_member +// ignore_for_file: prefer_const_constructors +// ignore_for_file: unnecessary_parenthesis +// ignore_for_file: camel_case_types + +class _FakeWalletsService_0 extends _i1.Fake implements _i2.WalletsService {} + +class _FakeNodeService_1 extends _i1.Fake implements _i3.NodeService {} + +class _FakeChangeNotifierProvider_2 + extends _i1.Fake implements _i5.ChangeNotifierProvider {} + +class _FakeManager_3 extends _i1.Fake implements _i6.Manager {} + +class _FakeTransactionNotificationTracker_4 extends _i1.Fake + implements _i7.TransactionNotificationTracker {} + +class _FakeUtxoData_5 extends _i1.Fake implements _i8.UtxoData {} + +class _FakeDecimal_6 extends _i1.Fake implements _i9.Decimal {} + +class _FakeFeeObject_7 extends _i1.Fake implements _i8.FeeObject {} + +class _FakeTransactionData_8 extends _i1.Fake implements _i8.TransactionData {} + +class _FakeElectrumX_9 extends _i1.Fake implements _i10.ElectrumX {} + +class _FakeCachedElectrumX_10 extends _i1.Fake implements _i11.CachedElectrumX { +} + +class _FakeElectrumXNode_11 extends _i1.Fake implements _i10.ElectrumXNode {} + +/// A class which mocks [Wallets]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockWallets extends _i1.Mock implements _i12.Wallets { + MockWallets() { + _i1.throwOnMissingStub(this); + } + + @override + _i2.WalletsService get walletsService => + (super.noSuchMethod(Invocation.getter(#walletsService), + returnValue: _FakeWalletsService_0()) as _i2.WalletsService); + @override + set walletsService(_i2.WalletsService? _walletsService) => + super.noSuchMethod(Invocation.setter(#walletsService, _walletsService), + returnValueForMissingStub: null); + @override + _i3.NodeService get nodeService => + (super.noSuchMethod(Invocation.getter(#nodeService), + returnValue: _FakeNodeService_1()) as _i3.NodeService); + @override + set nodeService(_i3.NodeService? _nodeService) => + super.noSuchMethod(Invocation.setter(#nodeService, _nodeService), + returnValueForMissingStub: null); + @override + bool get hasWallets => + (super.noSuchMethod(Invocation.getter(#hasWallets), returnValue: false) + as bool); + @override + List<_i5.ChangeNotifierProvider<_i6.Manager>> get managerProviders => + (super.noSuchMethod(Invocation.getter(#managerProviders), + returnValue: <_i5.ChangeNotifierProvider<_i6.Manager>>[]) + as List<_i5.ChangeNotifierProvider<_i6.Manager>>); + @override + List<_i6.Manager> get managers => + (super.noSuchMethod(Invocation.getter(#managers), + returnValue: <_i6.Manager>[]) as List<_i6.Manager>); + @override + bool get hasListeners => + (super.noSuchMethod(Invocation.getter(#hasListeners), returnValue: false) + as bool); + @override + void dispose() => super.noSuchMethod(Invocation.method(#dispose, []), + returnValueForMissingStub: null); + @override + List getWalletIdsFor({_i13.Coin? coin}) => (super.noSuchMethod( + Invocation.method(#getWalletIdsFor, [], {#coin: coin}), + returnValue: []) as List); + @override + Map<_i13.Coin, List<_i5.ChangeNotifierProvider<_i6.Manager>>> + getManagerProvidersByCoin() => + (super.noSuchMethod(Invocation.method(#getManagerProvidersByCoin, []), + returnValue: <_i13.Coin, + List<_i5.ChangeNotifierProvider<_i6.Manager>>>{}) + as Map<_i13.Coin, List<_i5.ChangeNotifierProvider<_i6.Manager>>>); + @override + _i5.ChangeNotifierProvider<_i6.Manager> getManagerProvider( + String? walletId) => + (super.noSuchMethod(Invocation.method(#getManagerProvider, [walletId]), + returnValue: _FakeChangeNotifierProvider_2<_i6.Manager>()) + as _i5.ChangeNotifierProvider<_i6.Manager>); + @override + _i6.Manager getManager(String? walletId) => + (super.noSuchMethod(Invocation.method(#getManager, [walletId]), + returnValue: _FakeManager_3()) as _i6.Manager); + @override + void addWallet({String? walletId, _i6.Manager? manager}) => + super.noSuchMethod( + Invocation.method( + #addWallet, [], {#walletId: walletId, #manager: manager}), + returnValueForMissingStub: null); + @override + void removeWallet({String? walletId}) => super.noSuchMethod( + Invocation.method(#removeWallet, [], {#walletId: walletId}), + returnValueForMissingStub: null); + @override + _i14.Future load(_i15.Prefs? prefs) => (super.noSuchMethod( + Invocation.method(#load, [prefs]), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + _i14.Future loadAfterStackRestore( + _i15.Prefs? prefs, List<_i6.Manager>? managers) => + (super.noSuchMethod( + Invocation.method(#loadAfterStackRestore, [prefs, managers]), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + void addListener(_i16.VoidCallback? listener) => + super.noSuchMethod(Invocation.method(#addListener, [listener]), + returnValueForMissingStub: null); + @override + void removeListener(_i16.VoidCallback? listener) => + super.noSuchMethod(Invocation.method(#removeListener, [listener]), + returnValueForMissingStub: null); + @override + void notifyListeners() => + super.noSuchMethod(Invocation.method(#notifyListeners, []), + returnValueForMissingStub: null); +} + +/// A class which mocks [BitcoinWallet]. +/// +/// See the documentation for Mockito's code generation for more information. +class MockBitcoinWallet extends _i1.Mock implements _i17.BitcoinWallet { + MockBitcoinWallet() { + _i1.throwOnMissingStub(this); + } + + @override + set timer(_i14.Timer? _timer) => + super.noSuchMethod(Invocation.setter(#timer, _timer), + returnValueForMissingStub: null); + @override + _i7.TransactionNotificationTracker get txTracker => + (super.noSuchMethod(Invocation.getter(#txTracker), + returnValue: _FakeTransactionNotificationTracker_4()) + as _i7.TransactionNotificationTracker); + @override + set txTracker(_i7.TransactionNotificationTracker? _txTracker) => + super.noSuchMethod(Invocation.setter(#txTracker, _txTracker), + returnValueForMissingStub: null); + @override + List<_i8.UtxoObject> get outputsList => + (super.noSuchMethod(Invocation.getter(#outputsList), + returnValue: <_i8.UtxoObject>[]) as List<_i8.UtxoObject>); + @override + set outputsList(List<_i8.UtxoObject>? _outputsList) => + super.noSuchMethod(Invocation.setter(#outputsList, _outputsList), + returnValueForMissingStub: null); + @override + bool get longMutex => + (super.noSuchMethod(Invocation.getter(#longMutex), returnValue: false) + as bool); + @override + set longMutex(bool? _longMutex) => + super.noSuchMethod(Invocation.setter(#longMutex, _longMutex), + returnValueForMissingStub: null); + @override + bool get refreshMutex => + (super.noSuchMethod(Invocation.getter(#refreshMutex), returnValue: false) + as bool); + @override + set refreshMutex(bool? _refreshMutex) => + super.noSuchMethod(Invocation.setter(#refreshMutex, _refreshMutex), + returnValueForMissingStub: null); + @override + bool get isActive => + (super.noSuchMethod(Invocation.getter(#isActive), returnValue: false) + as bool); + @override + set isActive(bool? _isActive) => + super.noSuchMethod(Invocation.setter(#isActive, _isActive), + returnValueForMissingStub: null); + @override + set isFavorite(bool? markFavorite) => + super.noSuchMethod(Invocation.setter(#isFavorite, markFavorite), + returnValueForMissingStub: null); + @override + bool get isFavorite => + (super.noSuchMethod(Invocation.getter(#isFavorite), returnValue: false) + as bool); + @override + _i13.Coin get coin => (super.noSuchMethod(Invocation.getter(#coin), + returnValue: _i13.Coin.bitcoin) as _i13.Coin); + @override + _i14.Future> get allOwnAddresses => + (super.noSuchMethod(Invocation.getter(#allOwnAddresses), + returnValue: Future>.value([])) + as _i14.Future>); + @override + _i14.Future<_i8.UtxoData> get utxoData => + (super.noSuchMethod(Invocation.getter(#utxoData), + returnValue: Future<_i8.UtxoData>.value(_FakeUtxoData_5())) + as _i14.Future<_i8.UtxoData>); + @override + _i14.Future> get unspentOutputs => (super.noSuchMethod( + Invocation.getter(#unspentOutputs), + returnValue: Future>.value(<_i8.UtxoObject>[])) + as _i14.Future>); + @override + _i14.Future<_i9.Decimal> get availableBalance => + (super.noSuchMethod(Invocation.getter(#availableBalance), + returnValue: Future<_i9.Decimal>.value(_FakeDecimal_6())) + as _i14.Future<_i9.Decimal>); + @override + _i14.Future<_i9.Decimal> get pendingBalance => + (super.noSuchMethod(Invocation.getter(#pendingBalance), + returnValue: Future<_i9.Decimal>.value(_FakeDecimal_6())) + as _i14.Future<_i9.Decimal>); + @override + _i14.Future<_i9.Decimal> get balanceMinusMaxFee => + (super.noSuchMethod(Invocation.getter(#balanceMinusMaxFee), + returnValue: Future<_i9.Decimal>.value(_FakeDecimal_6())) + as _i14.Future<_i9.Decimal>); + @override + _i14.Future<_i9.Decimal> get totalBalance => + (super.noSuchMethod(Invocation.getter(#totalBalance), + returnValue: Future<_i9.Decimal>.value(_FakeDecimal_6())) + as _i14.Future<_i9.Decimal>); + @override + _i14.Future get currentReceivingAddress => + (super.noSuchMethod(Invocation.getter(#currentReceivingAddress), + returnValue: Future.value('')) as _i14.Future); + @override + _i14.Future get currentLegacyReceivingAddress => + (super.noSuchMethod(Invocation.getter(#currentLegacyReceivingAddress), + returnValue: Future.value('')) as _i14.Future); + @override + _i14.Future get currentReceivingAddressP2SH => + (super.noSuchMethod(Invocation.getter(#currentReceivingAddressP2SH), + returnValue: Future.value('')) as _i14.Future); + @override + bool get hasCalledExit => + (super.noSuchMethod(Invocation.getter(#hasCalledExit), returnValue: false) + as bool); + @override + _i14.Future<_i8.FeeObject> get fees => + (super.noSuchMethod(Invocation.getter(#fees), + returnValue: Future<_i8.FeeObject>.value(_FakeFeeObject_7())) + as _i14.Future<_i8.FeeObject>); + @override + _i14.Future get maxFee => (super.noSuchMethod(Invocation.getter(#maxFee), + returnValue: Future.value(0)) as _i14.Future); + @override + _i14.Future> get mnemonic => + (super.noSuchMethod(Invocation.getter(#mnemonic), + returnValue: Future>.value([])) + as _i14.Future>); + @override + _i14.Future get chainHeight => + (super.noSuchMethod(Invocation.getter(#chainHeight), + returnValue: Future.value(0)) as _i14.Future); + @override + int get storedChainHeight => + (super.noSuchMethod(Invocation.getter(#storedChainHeight), returnValue: 0) + as int); + @override + bool get shouldAutoSync => (super + .noSuchMethod(Invocation.getter(#shouldAutoSync), returnValue: false) + as bool); + @override + set shouldAutoSync(bool? shouldAutoSync) => + super.noSuchMethod(Invocation.setter(#shouldAutoSync, shouldAutoSync), + returnValueForMissingStub: null); + @override + bool get isRefreshing => + (super.noSuchMethod(Invocation.getter(#isRefreshing), returnValue: false) + as bool); + @override + bool get isConnected => + (super.noSuchMethod(Invocation.getter(#isConnected), returnValue: false) + as bool); + @override + _i14.Future<_i8.TransactionData> get transactionData => + (super.noSuchMethod(Invocation.getter(#transactionData), + returnValue: + Future<_i8.TransactionData>.value(_FakeTransactionData_8())) + as _i14.Future<_i8.TransactionData>); + @override + String get walletId => + (super.noSuchMethod(Invocation.getter(#walletId), returnValue: '') + as String); + @override + String get walletName => + (super.noSuchMethod(Invocation.getter(#walletName), returnValue: '') + as String); + @override + set walletName(String? newName) => + super.noSuchMethod(Invocation.setter(#walletName, newName), + returnValueForMissingStub: null); + @override + _i10.ElectrumX get electrumXClient => + (super.noSuchMethod(Invocation.getter(#electrumXClient), + returnValue: _FakeElectrumX_9()) as _i10.ElectrumX); + @override + _i11.CachedElectrumX get cachedElectrumXClient => + (super.noSuchMethod(Invocation.getter(#cachedElectrumXClient), + returnValue: _FakeCachedElectrumX_10()) as _i11.CachedElectrumX); + @override + set onIsActiveWalletChanged(void Function(bool)? _onIsActiveWalletChanged) => + super.noSuchMethod( + Invocation.setter(#onIsActiveWalletChanged, _onIsActiveWalletChanged), + returnValueForMissingStub: null); + @override + _i14.Future exit() => (super.noSuchMethod(Invocation.method(#exit, []), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + _i14.Future updateStoredChainHeight({int? newHeight}) => + (super.noSuchMethod( + Invocation.method( + #updateStoredChainHeight, [], {#newHeight: newHeight}), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i17.DerivePathType addressType({String? address}) => (super.noSuchMethod( + Invocation.method(#addressType, [], {#address: address}), + returnValue: _i17.DerivePathType.bip44) as _i17.DerivePathType); + @override + _i14.Future recoverFromMnemonic( + {String? mnemonic, + int? maxUnusedAddressGap, + int? maxNumberOfIndexesToCheck, + int? height}) => + (super.noSuchMethod( + Invocation.method(#recoverFromMnemonic, [], { + #mnemonic: mnemonic, + #maxUnusedAddressGap: maxUnusedAddressGap, + #maxNumberOfIndexesToCheck: maxNumberOfIndexesToCheck, + #height: height + }), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i14.Future getTransactionCacheEarly(List? allAddresses) => + (super.noSuchMethod( + Invocation.method(#getTransactionCacheEarly, [allAddresses]), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i14.Future refreshIfThereIsNewData() => + (super.noSuchMethod(Invocation.method(#refreshIfThereIsNewData, []), + returnValue: Future.value(false)) as _i14.Future); + @override + _i14.Future getAllTxsToWatch(_i8.TransactionData? txData) => + (super.noSuchMethod(Invocation.method(#getAllTxsToWatch, [txData]), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i14.Future refresh() => (super.noSuchMethod( + Invocation.method(#refresh, []), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + _i14.Future> prepareSend( + {String? address, int? satoshiAmount, Map? args}) => + (super.noSuchMethod( + Invocation.method(#prepareSend, [], { + #address: address, + #satoshiAmount: satoshiAmount, + #args: args + }), + returnValue: + Future>.value({})) + as _i14.Future>); + @override + _i14.Future confirmSend({Map? txData}) => (super + .noSuchMethod(Invocation.method(#confirmSend, [], {#txData: txData}), + returnValue: Future.value('')) as _i14.Future); + @override + _i14.Future send( + {String? toAddress, + int? amount, + Map? args = const {}}) => + (super.noSuchMethod( + Invocation.method( + #send, [], {#toAddress: toAddress, #amount: amount, #args: args}), + returnValue: Future.value('')) as _i14.Future); + @override + _i14.Future testNetworkConnection() => + (super.noSuchMethod(Invocation.method(#testNetworkConnection, []), + returnValue: Future.value(false)) as _i14.Future); + @override + void startNetworkAlivePinging() => + super.noSuchMethod(Invocation.method(#startNetworkAlivePinging, []), + returnValueForMissingStub: null); + @override + void stopNetworkAlivePinging() => + super.noSuchMethod(Invocation.method(#stopNetworkAlivePinging, []), + returnValueForMissingStub: null); + @override + _i14.Future initializeNew() => (super.noSuchMethod( + Invocation.method(#initializeNew, []), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + _i14.Future initializeExisting() => (super.noSuchMethod( + Invocation.method(#initializeExisting, []), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + bool validateAddress(String? address) => + (super.noSuchMethod(Invocation.method(#validateAddress, [address]), + returnValue: false) as bool); + @override + _i14.Future updateNode(bool? shouldRefresh) => (super.noSuchMethod( + Invocation.method(#updateNode, [shouldRefresh]), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) as _i14.Future); + @override + _i14.Future<_i10.ElectrumXNode> getCurrentNode() => + (super.noSuchMethod(Invocation.method(#getCurrentNode, []), + returnValue: + Future<_i10.ElectrumXNode>.value(_FakeElectrumXNode_11())) + as _i14.Future<_i10.ElectrumXNode>); + @override + _i14.Future addDerivation( + {int? chain, + String? address, + String? pubKey, + String? wif, + _i17.DerivePathType? derivePathType}) => + (super.noSuchMethod( + Invocation.method(#addDerivation, [], { + #chain: chain, + #address: address, + #pubKey: pubKey, + #wif: wif, + #derivePathType: derivePathType + }), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i14.Future addDerivations( + {int? chain, + _i17.DerivePathType? derivePathType, + Map? derivationsToAdd}) => + (super.noSuchMethod( + Invocation.method(#addDerivations, [], { + #chain: chain, + #derivePathType: derivePathType, + #derivationsToAdd: derivationsToAdd + }), + returnValue: Future.value(), + returnValueForMissingStub: Future.value()) + as _i14.Future); + @override + _i14.Future getTxCount({String? address}) => (super.noSuchMethod( + Invocation.method(#getTxCount, [], {#address: address}), + returnValue: Future.value(0)) as _i14.Future); + @override + _i14.Future checkCurrentReceivingAddressesForTransactions() => + (super.noSuchMethod( + Invocation.method(#checkCurrentReceivingAddressesForTransactions, []), + returnValue: Future.value(), + returnValueForMissingStub: + Future.value()) as _i14.Future); + @override + _i14.Future checkCurrentChangeAddressesForTransactions() => + (super.noSuchMethod( + Invocation.method(#checkCurrentChangeAddressesForTransactions, []), + returnValue: Future.value(), + returnValueForMissingStub: + Future.value()) as _i14.Future); + @override + _i14.Future>> fastFetch( + List? allTxHashes) => + (super.noSuchMethod(Invocation.method(#fastFetch, [allTxHashes]), + returnValue: Future>>.value( + >[])) + as _i14.Future>>); + @override + int estimateTxFee({int? vSize, int? feeRatePerKB}) => (super.noSuchMethod( + Invocation.method( + #estimateTxFee, [], {#vSize: vSize, #feeRatePerKB: feeRatePerKB}), + returnValue: 0) as int); + @override + dynamic coinSelection(int? satoshiAmountToSend, int? selectedTxFeeRate, + String? _recipientAddress, bool? isSendAll, + {int? additionalOutputs = 0, List<_i8.UtxoObject>? utxos}) => + super.noSuchMethod(Invocation.method(#coinSelection, [ + satoshiAmountToSend, + selectedTxFeeRate, + _recipientAddress, + isSendAll + ], { + #additionalOutputs: additionalOutputs, + #utxos: utxos + })); + @override + _i14.Future> fetchBuildTxData( + List<_i8.UtxoObject>? utxosToUse) => + (super.noSuchMethod(Invocation.method(#fetchBuildTxData, [utxosToUse]), + returnValue: + Future>.value({})) + as _i14.Future>); + @override + _i14.Future> buildTransaction( + {List<_i8.UtxoObject>? utxosToUse, + Map? utxoSigningData, + List? recipients, + List? satoshiAmounts}) => + (super.noSuchMethod( + Invocation.method(#buildTransaction, [], { + #utxosToUse: utxosToUse, + #utxoSigningData: utxoSigningData, + #recipients: recipients, + #satoshiAmounts: satoshiAmounts + }), + returnValue: + Future>.value({})) + as _i14.Future>); + @override + _i14.Future fullRescan( + int? maxUnusedAddressGap, int? maxNumberOfIndexesToCheck) => + (super.noSuchMethod( + Invocation.method( + #fullRescan, [maxUnusedAddressGap, maxNumberOfIndexesToCheck]), + returnValue: Future.value(), + returnValueForMissingStub: + Future.value()) as _i14.Future); + @override + _i14.Future estimateFeeFor(int? satoshiAmount, int? feeRate) => + (super.noSuchMethod( + Invocation.method(#estimateFeeFor, [satoshiAmount, feeRate]), + returnValue: Future.value(0)) as _i14.Future); + @override + int roughFeeEstimate(int? inputCount, int? outputCount, int? feeRatePerKB) => + (super.noSuchMethod( + Invocation.method( + #roughFeeEstimate, [inputCount, outputCount, feeRatePerKB]), + returnValue: 0) as int); + @override + int sweepAllEstimate(int? feeRate) => + (super.noSuchMethod(Invocation.method(#sweepAllEstimate, [feeRate]), + returnValue: 0) as int); + @override + _i14.Future generateNewAddress() => + (super.noSuchMethod(Invocation.method(#generateNewAddress, []), + returnValue: Future.value(false)) as _i14.Future); +}