diff --git a/assets/default_themes/dark.zip b/assets/default_themes/dark.zip index 70bc24340..9823262a9 100644 Binary files a/assets/default_themes/dark.zip and b/assets/default_themes/dark.zip differ diff --git a/assets/default_themes/light.zip b/assets/default_themes/light.zip index f4544f179..649716126 100644 Binary files a/assets/default_themes/light.zip and b/assets/default_themes/light.zip differ diff --git a/crypto_plugins/flutter_libepiccash b/crypto_plugins/flutter_libepiccash index 01bad9471..c34af5aad 160000 --- a/crypto_plugins/flutter_libepiccash +++ b/crypto_plugins/flutter_libepiccash @@ -1 +1 @@ -Subproject commit 01bad9471c4b41392cd2aa98f5655dc14dedc997 +Subproject commit c34af5aadd0c986023a1ab998ca6972582142c4c diff --git a/lib/main.dart b/lib/main.dart index e075e10b7..852ffc9c0 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -205,6 +205,27 @@ void main() async { // check and update or install default themes await ThemeService.instance.checkDefaultThemesOnStartup(); + // verify current user preference theme and revert to default + // if problems are found to prevent app being unusable + if (!(await ThemeService.instance + .verifyInstalled(themeId: Prefs.instance.themeId))) { + Prefs.instance.themeId = "light"; + } + + // verify current user preference light brightness theme and revert to default + // if problems are found to prevent app being unusable + if (!(await ThemeService.instance + .verifyInstalled(themeId: Prefs.instance.systemBrightnessLightThemeId))) { + Prefs.instance.systemBrightnessLightThemeId = "light"; + } + + // verify current user preference dark brightness theme and revert to default + // if problems are found to prevent app being unusable + if (!(await ThemeService.instance + .verifyInstalled(themeId: Prefs.instance.systemBrightnessDarkThemeId))) { + Prefs.instance.systemBrightnessDarkThemeId = "dark"; + } + runApp(const ProviderScope(child: MyApp())); } diff --git a/lib/models/isar/stack_theme.dart b/lib/models/isar/stack_theme.dart index d5c1bb1a9..d68494d3b 100644 --- a/lib/models/isar/stack_theme.dart +++ b/lib/models/isar/stack_theme.dart @@ -1939,7 +1939,9 @@ class ThemeAssets implements IThemeAssets { @override late final String? background; - // todo: add all assets expected in json + @override + @ignore + String? get walletSummaryCardBackground => null; ThemeAssets(); @@ -2102,6 +2104,8 @@ class ThemeAssetsV2 implements IThemeAssets { late final String? loadingGif; @override late final String? background; + @override + late final String? walletSummaryCardBackground; late final String coinPlaceholder; @@ -2196,6 +2200,10 @@ class ThemeAssetsV2 implements IThemeAssets { : null ..background = json["background"] is String ? "$applicationThemesDirectoryPath/$themeId/assets/${json["background"] as String}" + : null + ..walletSummaryCardBackground = json["walletSummaryCardBackground"] + is String + ? "$applicationThemesDirectoryPath/$themeId/assets/${json["walletSummaryCardBackground"] as String}" : null; } @@ -2246,6 +2254,7 @@ class ThemeAssetsV2 implements IThemeAssets { 'txExchangeFailed: $txExchangeFailed, ' 'loadingGif: $loadingGif, ' 'background: $background, ' + 'walletSummaryCardBackground: $walletSummaryCardBackground, ' 'coinPlaceholder: $coinPlaceholder, ' 'coinIcons: $coinIcons, ' 'coinImages: $coinImages, ' @@ -2276,4 +2285,5 @@ abstract class IThemeAssets { String? get loadingGif; String? get background; + String? get walletSummaryCardBackground; } diff --git a/lib/models/isar/stack_theme.g.dart b/lib/models/isar/stack_theme.g.dart index ad6f905bd..13c01d906 100644 --- a/lib/models/isar/stack_theme.g.dart +++ b/lib/models/isar/stack_theme.g.dart @@ -25895,6 +25895,11 @@ const ThemeAssetsV2Schema = Schema( id: 23, name: r'txExchangePending', type: IsarType.string, + ), + r'walletSummaryCardBackground': PropertySchema( + id: 24, + name: r'walletSummaryCardBackground', + type: IsarType.string, ) }, estimateSize: _themeAssetsV2EstimateSize, @@ -25943,6 +25948,12 @@ int _themeAssetsV2EstimateSize( bytesCount += 3 + object.txExchange.length * 3; bytesCount += 3 + object.txExchangeFailed.length * 3; bytesCount += 3 + object.txExchangePending.length * 3; + { + final value = object.walletSummaryCardBackground; + if (value != null) { + bytesCount += 3 + value.length * 3; + } + } return bytesCount; } @@ -25976,6 +25987,7 @@ void _themeAssetsV2Serialize( writer.writeString(offsets[21], object.txExchange); writer.writeString(offsets[22], object.txExchangeFailed); writer.writeString(offsets[23], object.txExchangePending); + writer.writeString(offsets[24], object.walletSummaryCardBackground); } ThemeAssetsV2 _themeAssetsV2Deserialize( @@ -26009,6 +26021,7 @@ ThemeAssetsV2 _themeAssetsV2Deserialize( object.txExchange = reader.readString(offsets[21]); object.txExchangeFailed = reader.readString(offsets[22]); object.txExchangePending = reader.readString(offsets[23]); + object.walletSummaryCardBackground = reader.readStringOrNull(offsets[24]); return object; } @@ -26067,6 +26080,8 @@ P _themeAssetsV2DeserializeProp
(
return (reader.readString(offset)) as P;
case 23:
return (reader.readString(offset)) as P;
+ case 24:
+ return (reader.readStringOrNull(offset)) as P;
default:
throw IsarError('Unknown property with id $propertyId');
}
@@ -29372,6 +29387,162 @@ extension ThemeAssetsV2QueryFilter
));
});
}
+
+ QueryBuilder> get utxos => (super.noSuchMethod(
@@ -2837,7 +2837,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i22.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i22.Coin.bitcoin,
+ returnValue: _i22.Coin.banano,
) as _i22.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
@@ -3205,7 +3205,7 @@ class MockCoinServiceAPI extends _i1.Mock implements _i20.CoinServiceAPI {
@override
_i22.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i22.Coin.bitcoin,
+ returnValue: _i22.Coin.banano,
) as _i22.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/price_test.dart b/test/price_test.dart
index 58dc797e4..dfca4e212 100644
--- a/test/price_test.dart
+++ b/test/price_test.dart
@@ -21,328 +21,383 @@ void main() {
boxName: DB.boxNamePrefs, key: "externalCalls", value: true);
});
- // test("getPricesAnd24hChange fetch", () async {
- // final client = MockClient();
- //
- // when(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids"
- // "=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,bitcoin-cash"
- // ",namecoin,wownero,ethereum,particl&order=market_cap_desc&per_page=50"
- // "&page=1&sparkline=false"),
- // headers: {
- // 'Content-Type': 'application/json'
- // })).thenAnswer((_) async => Response(
- // '[{"id":"bitcoin","symbol":"btc","name":"Bitcoin","image":"https://asse'
- // 'ts.coingecko.com/coins/images/1/large/bitcoin.png?1547033579","curr'
- // 'ent_price":1.0,"market_cap":19128800,"market_cap_rank":1,"fully_dil'
- // 'uted_valuation":21000000,"total_volume":1272132,"high_24h":1.0,"low'
- // '_24h":1.0,"price_change_24h":0.0,"price_change_percentage_24h":0.0,'
- // '"market_cap_change_24h":950.0,"market_cap_change_percentage_24h":0.0'
- // '0497,"circulating_supply":19128800.0,"total_supply":21000000.0,"max'
- // '_supply":21000000.0,"ath":1.003301,"ath_change_percentage":-0.32896'
- // ',"ath_date":"2019-10-15T16:00:56.136Z","atl":0.99895134,"atl_change_'
- // 'percentage":0.10498,"atl_date":"2019-10-21T00:00:00.000Z","roi":nul'
- // 'l,"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin","symb'
- // 'ol":"doge","name":"Dogecoin","image":"https://assets.coingecko.com/'
- // 'coins/images/5/large/dogecoin.png?1547792256","current_price":3.15e'
- // '-06,"market_cap":417916,"market_cap_rank":10,"fully_diluted_valuati'
- // 'on":null,"total_volume":27498,"high_24h":3.26e-06,"low_24h":3.13e-0'
- // '6,"price_change_24h":-8.6889947714e-08,"price_change_percentage_24h'
- // '":-2.68533,"market_cap_change_24h":-11370.894861206936,"market_cap_c'
- // 'hange_percentage_24h":-2.64879,"circulating_supply":132670764299.89'
- // '4,"total_supply":null,"max_supply":null,"ath":1.264e-05,"ath_change'
- // '_percentage":-75.05046,"ath_date":"2021-05-07T23:04:53.026Z","atl":'
- // '1.50936e-07,"atl_change_percentage":1989.69346,"atl_date":"2020-12-'
- // '17T09:18:05.654Z","roi":null,"last_updated":"2022-08-22T16:38:15.11'
- // '3Z"},{"id":"monero","symbol":"xmr","name":"Monero","image":"https:/'
- // '/assets.coingecko.com/coins/images/69/large/monero_logo.png?1547033'
- // '729","current_price":0.00717236,"market_cap":130002,"market_cap_ran'
- // 'k":29,"fully_diluted_valuation":null,"total_volume":4901,"high_24h":'
- // '0.00731999,"low_24h":0.00707511,"price_change_24h":-5.6133543212467'
- // 'e-05,"price_change_percentage_24h":-0.77656,"market_cap_change_24h"'
- // ':-1007.8447677436197,"market_cap_change_percentage_24h":-0.76929,"c'
- // 'irculating_supply":18147820.3764146,"total_supply":null,"max_supply'
- // '":null,"ath":0.03475393,"ath_change_percentage":-79.32037,"ath_date'
- // '":"2018-01-09T00:00:00.000Z","atl":0.00101492,"atl_change_percentag'
- // 'e":608.13327,"atl_date":"2014-12-18T00:00:00.000Z","roi":null,"las'
- // 't_updated":"2022-08-22T16:38:26.347Z"},{"id":"zcoin","symbol":"firo'
- // '","name":"Firo","image":"https://assets.coingecko.com/coins/images/'
- // '479/large/firocoingecko.png?1636537544","current_price":0.0001096,"'
- // 'market_cap":1252,"market_cap_rank":604,"fully_diluted_valuation":234'
- // '9,"total_volume":90.573,"high_24h":0.00011148,"low_24h":0.00010834,'
- // '"price_change_24h":-9.87561775002e-07,"price_change_percentage_24h'
- // '":-0.89304,"market_cap_change_24h":-10.046635178462793,"market_cap_'
- // 'change_percentage_24h":-0.79578,"circulating_supply":11411043.83546'
- // '97,"total_supply":21400000.0,"max_supply":21400000.0,"ath":0.016162'
- // '72,"ath_change_percentage":-99.3208,"ath_date":"2018-04-04T16:04:48.'
- // '408Z","atl":4.268e-05,"atl_change_percentage":157.22799,"atl_date":"'
- // '2022-05-12T07:28:47.088Z","roi":null,"last_updated":"2022-08-22T16'
- // ':38:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"Epic Cash",'
- // '"image":"https://assets.coingecko.com/coins/images/9520/large/Epic_C'
- // 'oin_NO_drop_shadow.png?1620122642","current_price":2.803e-05,"marke'
- // 't_cap":415.109,"market_cap_rank":953,"fully_diluted_valuation":null'
- // ',"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h":2.581e-05'
- // ',"price_change_24h":1.9e-06,"price_change_percentage_24h":7.27524,"'
- // 'market_cap_change_24h":28.26753,"market_cap_change_percentage_24h":'
- // '7.30726,"circulating_supply":14808052.0,"total_supply":21000000.0,"'
- // 'max_supply":null,"ath":0.00013848,"ath_change_percentage":-79.75864'
- // ',"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74028e-07,"atl_chang'
- // 'e_percentage":4783.08078,"atl_date":"2020-03-13T16:55:01.177Z","roi'
- // '":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
- // 200));
- //
- // final priceAPI = PriceAPI(client);
- // priceAPI.resetLastCalledToForceNextCallToUpdateCache();
- //
- // final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
- //
- // expect(
- // price.toString(),
- // '{Coin.bitcoin: [1, 0.0], Coin.bitcoincash: [0, 0.0], '
- // 'Coin.dogecoin: [0.00000315, -2.68533], '
- // 'Coin.eCash: [0, 0.0], Coin.epicCash: [0.00002803, 7.27524], '
- // 'Coin.ethereum: [0, 0.0], '
- // 'Coin.firo: [0.0001096, -0.89304], Coin.litecoin: [0, 0.0], '
- // 'Coin.monero: [0.00717236, -0.77656], Coin.namecoin: [0, 0.0], '
- // 'Coin.particl: [0, 0.0], Coin.wownero: [0, 0.0], '
- // 'Coin.bitcoinTestNet: [0, 0.0],'
- // ' Coin.litecoinTestNet: [0, 0.0], Coin.bitcoincashTestnet: [0, 0.0], '
- // 'Coin.dogecoinTestNet: [0, 0.0], Coin.firoTestNet: [0, 0.0]}',
- // );
- // verify(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
- // "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
- // "bitcoin-cash,namecoin,wownero,ethereum,particl"
- // "&order=market_cap_desc&per_page=50&page=1&sparkline=false",
- // ),
- // headers: {'Content-Type': 'application/json'})).called(1);
- //
- // verifyNoMoreInteractions(client);
- // });
+ test("getPricesAnd24hChange fetch", () async {
+ final client = MockClient();
- // test("cached price fetch", () async {
- // final client = MockClient();
- //
- // when(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&"
- // "ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
- // "bitcoin-cash,namecoin,wownero,ethereum,particl"
- // "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
- // headers: {
- // 'Content-Type': 'application/json'
- // })).thenAnswer((_) async => Response(
- // '[{"id":"bitcoin","symbol":"btc","name":"Bitcoin","image":"https://a'
- // 'ssets.coingecko.com/coins/images/1/large/bitcoin.png?1547033579","c'
- // 'urrent_price":1.0,"market_cap":19128800,"market_cap_rank":1,"fully_'
- // 'diluted_valuation":21000000,"total_volume":1272132,"high_24h":1.0,"'
- // 'low_24h":1.0,"price_change_24h":0.0,"price_change_percentage_24h":0'
- // '.0,"market_cap_change_24h":950.0,"market_cap_change_percentage_24h"'
- // ':0.00497,"circulating_supply":19128800.0,"total_supply":21000000.0,"'
- // 'max_supply":21000000.0,"ath":1.003301,"ath_change_percentage":-0.32'
- // '896,"ath_date":"2019-10-15T16:00:56.136Z","atl":0.99895134,"atl_cha'
- // 'nge_percentage":0.10498,"atl_date":"2019-10-21T00:00:00.000Z","roi"'
- // ':null,"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin","'
- // 'symbol":"doge","name":"Dogecoin","image":"https://assets.coingecko.'
- // 'com/coins/images/5/large/dogecoin.png?1547792256","current_price":3'
- // '.15e-06,"market_cap":417916,"market_cap_rank":10,"fully_diluted_val'
- // 'uation":null,"total_volume":27498,"high_24h":3.26e-06,"low_24h":3.1'
- // '3e-06,"price_change_24h":-8.6889947714e-08,"price_change_percentage'
- // '_24h":-2.68533,"market_cap_change_24h":-11370.894861206936,"market_'
- // 'cap_change_percentage_24h":-2.64879,"circulating_supply":1326707642'
- // '99.894,"total_supply":null,"max_supply":null,"ath":1.264e-05,"ath_c'
- // 'hange_percentage":-75.05046,"ath_date":"2021-05-07T23:04:53.026Z","'
- // 'atl":1.50936e-07,"atl_change_percentage":1989.69346,"atl_date":"202'
- // '0-12-17T09:18:05.654Z","roi":null,"last_updated":"2022-08-22T16:38:'
- // '15.113Z"},{"id":"monero","symbol":"xmr","name":"Monero","image":"ht'
- // 'tps://assets.coingecko.com/coins/images/69/large/monero_logo.png?15'
- // '47033729","current_price":0.00717236,"market_cap":130002,"market_cap'
- // '_rank":29,"fully_diluted_valuation":null,"total_volume":4901,"high'
- // '_24h":0.00731999,"low_24h":0.00707511,"price_change_24h":-5.613354'
- // '3212467e-05,"price_change_percentage_24h":-0.77656,"market_cap_chan'
- // 'ge_24h":-1007.8447677436197,"market_cap_change_percentage_24h":-0.7'
- // '6929,"circulating_supply":18147820.3764146,"total_supply":null,"ma'
- // 'x_supply":null,"ath":0.03475393,"ath_change_percentage":-79.32037,"'
- // 'ath_date":"2018-01-09T00:00:00.000Z","atl":0.00101492,"atl_change_'
- // 'percentage":608.13327,"atl_date":"2014-12-18T00:00:00.000Z","roi":n'
- // 'ull,"last_updated":"2022-08-22T16:38:26.347Z"},{"id":"zcoin","symbo'
- // 'l":"firo","name":"Firo","image":"https://assets.coingecko.com/coins'
- // '/images/479/large/firocoingecko.png?1636537544","current_price":0.0'
- // '001096,"market_cap":1252,"market_cap_rank":604,"fully_diluted_valu'
- // 'ation":2349,"total_volume":90.573,"high_24h":0.00011148,"low_24h":0'
- // '.00010834,"price_change_24h":-9.87561775002e-07,"price_change_perce'
- // 'ntage_24h":-0.89304,"market_cap_change_24h":-10.046635178462793,"ma'
- // 'rket_cap_change_percentage_24h":-0.79578,"circulating_supply":11411'
- // '043.8354697,"total_supply":21400000.0,"max_supply":21400000.0,"ath"'
- // ':0.01616272,"ath_change_percentage":-99.3208,"ath_date":"2018-04-04'
- // 'T16:04:48.408Z","atl":4.268e-05,"atl_change_percentage":157.22799,'
- // '"atl_date":"2022-05-12T07:28:47.088Z","roi":null,"last_updated":"2'
- // '022-08-22T16:38:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"'
- // 'Epic Cash","image":"https://assets.coingecko.com/coins/images/9520/'
- // 'large/Epic_Coin_NO_drop_shadow.png?1620122642","current_price":2.80'
- // '3e-05,"market_cap":415.109,"market_cap_rank":953,"fully_diluted_val'
- // 'uation":null,"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h'
- // '":2.581e-05,"price_change_24h":1.9e-06,"price_change_percentage_24'
- // 'h":7.27524,"market_cap_change_24h":28.26753,"market_cap_change_perc'
- // 'entage_24h":7.30726,"circulating_supply":14808052.0,"total_supply":'
- // '21000000.0,"max_supply":null,"ath":0.00013848,"ath_change_percentag'
- // 'e":-79.75864,"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74028e-0'
- // '7,"atl_change_percentage":4783.08078,"atl_date":"2020-03-13T16:55:01'
- // '.177Z","roi":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
- // 200));
- //
- // final priceAPI = PriceAPI(client);
- // priceAPI.resetLastCalledToForceNextCallToUpdateCache();
- //
- // // initial fetch to fill cache
- // await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
- //
- // // now this time it should grab from cache instead of http.get
- // final cachedPrice =
- // await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
- //
- // expect(
- // cachedPrice.toString(),
- // '{Coin.bitcoin: [1, 0.0], Coin.bitcoincash: [0, 0.0],'
- // ' Coin.dogecoin: [0.00000315, -2.68533], Coin.eCash: [0, 0.0], Coin.epicCash: [0.00002803, 7.27524],'
- // ' Coin.ethereum: [0, 0.0], Coin.firo: [0.0001096, -0.89304], '
- // 'Coin.litecoin: [0, 0.0], Coin.monero: [0.00717236, -0.77656], '
- // 'Coin.namecoin: [0, 0.0], Coin.particl: [0, 0.0], Coin.wownero: [0, 0.0], '
- // 'Coin.bitcoinTestNet: [0, 0.0], Coin.litecoinTestNet: [0, 0.0], '
- // 'Coin.bitcoincashTestnet: [0, 0.0], Coin.dogecoinTestNet: [0, 0.0], '
- // 'Coin.firoTestNet: [0, 0.0]}');
- //
- // // verify only called once during filling of cache
- // verify(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids"
- // "=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
- // "bitcoin-cash,namecoin,wownero,ethereum,particl"
- // "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
- // headers: {'Content-Type': 'application/json'})).called(1);
- //
- // verifyNoMoreInteractions(client);
- // });
+ when(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids"
+ "=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,bitcoin-cash"
+ ",namecoin,wownero,ethereum,particl,nano,ban&order=market_cap_desc&per_page=50"
+ "&page=1&sparkline=false"),
+ headers: {
+ 'Content-Type': 'application/json'
+ })).thenAnswer((_) async => Response(
+ '[{"id":"bitcoin","symbol":"btc","name":"Bitcoin","image":"https://asse'
+ 'ts.coingecko.com/coins/images/1/large/bitcoin.png?1547033579","curr'
+ 'ent_price":1.0,"market_cap":19128800,"market_cap_rank":1,"fully_dil'
+ 'uted_valuation":21000000,"total_volume":1272132,"high_24h":1.0,"low'
+ '_24h":1.0,"price_change_24h":0.0,"price_change_percentage_24h":0.0,'
+ '"market_cap_change_24h":950.0,"market_cap_change_percentage_24h":0.0'
+ '0497,"circulating_supply":19128800.0,"total_supply":21000000.0,"max'
+ '_supply":21000000.0,"ath":1.003301,"ath_change_percentage":-0.32896'
+ ',"ath_date":"2019-10-15T16:00:56.136Z","atl":0.99895134,"atl_change_'
+ 'percentage":0.10498,"atl_date":"2019-10-21T00:00:00.000Z","roi":nul'
+ 'l,"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin","symb'
+ 'ol":"doge","name":"Dogecoin","image":"https://assets.coingecko.com/'
+ 'coins/images/5/large/dogecoin.png?1547792256","current_price":3.15e'
+ '-06,"market_cap":417916,"market_cap_rank":10,"fully_diluted_valuati'
+ 'on":null,"total_volume":27498,"high_24h":3.26e-06,"low_24h":3.13e-0'
+ '6,"price_change_24h":-8.6889947714e-08,"price_change_percentage_24h'
+ '":-2.68533,"market_cap_change_24h":-11370.894861206936,"market_cap_c'
+ 'hange_percentage_24h":-2.64879,"circulating_supply":132670764299.89'
+ '4,"total_supply":null,"max_supply":null,"ath":1.264e-05,"ath_change'
+ '_percentage":-75.05046,"ath_date":"2021-05-07T23:04:53.026Z","atl":'
+ '1.50936e-07,"atl_change_percentage":1989.69346,"atl_date":"2020-12-'
+ '17T09:18:05.654Z","roi":null,"last_updated":"2022-08-22T16:38:15.11'
+ '3Z"},{"id":"monero","symbol":"xmr","name":"Monero","image":"https:/'
+ '/assets.coingecko.com/coins/images/69/large/monero_logo.png?1547033'
+ '729","current_price":0.00717236,"market_cap":130002,"market_cap_ran'
+ 'k":29,"fully_diluted_valuation":null,"total_volume":4901,"high_24h":'
+ '0.00731999,"low_24h":0.00707511,"price_change_24h":-5.6133543212467'
+ 'e-05,"price_change_percentage_24h":-0.77656,"market_cap_change_24h"'
+ ':-1007.8447677436197,"market_cap_change_percentage_24h":-0.76929,"c'
+ 'irculating_supply":18147820.3764146,"total_supply":null,"max_supply'
+ '":null,"ath":0.03475393,"ath_change_percentage":-79.32037,"ath_date'
+ '":"2018-01-09T00:00:00.000Z","atl":0.00101492,"atl_change_percentag'
+ 'e":608.13327,"atl_date":"2014-12-18T00:00:00.000Z","roi":null,"las'
+ 't_updated":"2022-08-22T16:38:26.347Z"},{"id":"zcoin","symbol":"firo'
+ '","name":"Firo","image":"https://assets.coingecko.com/coins/images/'
+ '479/large/firocoingecko.png?1636537544","current_price":0.0001096,"'
+ 'market_cap":1252,"market_cap_rank":604,"fully_diluted_valuation":234'
+ '9,"total_volume":90.573,"high_24h":0.00011148,"low_24h":0.00010834,'
+ '"price_change_24h":-9.87561775002e-07,"price_change_percentage_24h'
+ '":-0.89304,"market_cap_change_24h":-10.046635178462793,"market_cap_'
+ 'change_percentage_24h":-0.79578,"circulating_supply":11411043.83546'
+ '97,"total_supply":21400000.0,"max_supply":21400000.0,"ath":0.016162'
+ '72,"ath_change_percentage":-99.3208,"ath_date":"2018-04-04T16:04:48.'
+ '408Z","atl":4.268e-05,"atl_change_percentage":157.22799,"atl_date":"'
+ '2022-05-12T07:28:47.088Z","roi":null,"last_updated":"2022-08-22T16'
+ ':38:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"Epic Cash",'
+ '"image":"https://assets.coingecko.com/coins/images/9520/large/Epic_C'
+ 'oin_NO_drop_shadow.png?1620122642","current_price":2.803e-05,"marke'
+ 't_cap":415.109,"market_cap_rank":953,"fully_diluted_valuation":null'
+ ',"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h":2.581e-05'
+ ',"price_change_24h":1.9e-06,"price_change_percentage_24h":7.27524,"'
+ 'market_cap_change_24h":28.26753,"market_cap_change_percentage_24h":'
+ '7.30726,"circulating_supply":14808052.0,"total_supply":21000000.0,"'
+ 'max_supply":null,"ath":0.00013848,"ath_change_percentage":-79.75864'
+ ',"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74028e-07,"atl_chang'
+ 'e_percentage":4783.08078,"atl_date":"2020-03-13T16:55:01.177Z","roi'
+ '":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
+ 200));
- // test("response parse failure", () async {
- // final client = MockClient();
- //
- // when(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
- // "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
- // "bitcoin-cash,namecoin,wownero,ethereum,particl"
- // "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
- // headers: {
- // 'Content-Type': 'application/json'
- // })).thenAnswer((_) async => Response(
- // '[{"id":"bitcoin","symbol":"btc","name":com/coins/images/1/large/'
- // 'bitcoin.png?1547033579","current_price":1.0,"market_cap":19128800'
- // ',"market_cap_rank":1,"fully_diluted_valuation":21000000,"total_volum'
- // 'e":1272132,"high_24h":1.0,"low_24h":1.0,"price_change_24h":0.0,"pri'
- // 'ce_change_percentage_24h":0.0,"market_cap_change_24h":950.0,"market_'
- // 'cap_change_percentage_24h":0.00497,"circulating_supply":19128800.0,"t'
- // 'otal_supply":21000000.0,"max_supply":21000000.0,"ath":1.003301,"ath'
- // '_change_percentage":-0.32896,"ath_date":"2019-10-15T16:00:56.136Z",'
- // '"atl":0.99895134,"atl_change_percentage":0.10498,"atl_date":'
- // '"2019-10-21T00:00:00.000Z","roi":null,'
- // '"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin"'
- // ',"symbol":"doge","name":"Dogecoin","image":'
- // '"https://assets.coingecko.com/coins/images/5/large/dogecoin.png?1547792256",'
- // '"current_price":3.15e-06,"market_cap":417916,"market_cap_rank":10'
- // ',"fully_diluted_valuation":null,"total_volume":27498,"high_24h":3'
- // '.26e-06,"low_24h":3.13e-06,"price_change_24h":-8.6889947714e-08,"'
- // 'price_change_percentage_24h":-2.68533,"market_cap_change_24h":-11'
- // '370.894861206936,"market_cap_change_percentage_24h":-2.64879,"cir'
- // 'culating_supply":132670764299.894,"total_supply":null,"max_supply'
- // '":null,"ath":1.264e-05,"ath_change_percentage":-75.05046,"ath_date'
- // '":"2021-05-07T23:04:53.026Z","atl":1.50936e-07,"atl_change_percen'
- // 'tage":1989.69346,"atl_date":"2020-12-17T09:18:05.654Z","roi":null,'
- // '"last_updated":"2022-08-22T16:38:15.113Z"},{"id":"monero","symbol"'
- // ':"xmr","name":"Monero","image":"https://assets.coingecko.com/coins'
- // '/images/69/large/monero_logo.png?1547033729","current_price":0.007'
- // '17236,"market_cap":130002,"market_cap_rank":29,"fully_diluted_valu'
- // 'ation":null,"total_volume":4901,"high_24h":0.00731999,"low_24h":0.'
- // '00707511,"price_change_24h":-5.6133543212467e-05,"price_change_per'
- // 'centage_24h":-0.77656,"market_cap_change_24h":-1007.8447677436197'
- // ',"market_cap_change_percentage_24h":-0.76929,"circulating_supply":'
- // '18147820.3764146,"total_supply":null,"max_supply":null,"ath":0.034'
- // '75393,"ath_change_percentage":-79.32037,"ath_date":"2018-01-09T00:'
- // '00:00.000Z","atl":0.00101492,"atl_change_percentage":608.13327,"at'
- // 'l_date":"2014-12-18T00:00:00.000Z","roi":null,"last_updated":"2022'
- // '-08-22T16:38:26.347Z"},{"id":"zcoin","symbol":"firo","name":"Firo"'
- // ',"image":"https://assets.coingecko.com/coins/images/479/large/firo'
- // 'coingecko.png?1636537544","current_price":0.0001096,"market_cap":1'
- // '252,"market_cap_rank":604,"fully_diluted_valuation":2349,"total_vo'
- // 'lume":90.573,"high_24h":0.00011148,"low_24h":0.00010834,"price_chang'
- // 'e_24h":-9.87561775002e-07,"price_change_percentage_24h":-0.89304,'
- // '"market_cap_change_24h":-10.046635178462793,"market_cap_change_per'
- // 'centage_24h":-0.79578,"circulating_supply":11411043.8354697,"tota'
- // 'l_supply":21400000.0,"max_supply":21400000.0,"ath":0.01616272,"ath'
- // '_change_percentage":-99.3208,"ath_date":"2018-04-04T16:04:48.408Z"'
- // ',"atl":4.268e-05,"atl_change_percentage":157.22799,"atl_date":"202'
- // '2-05-12T07:28:47.088Z","roi":null,"last_updated":"2022-08-22T16:3'
- // '8:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"Epic Cash",'
- // '"image":"https://assets.coingecko.com/coins/images/9520/large/'
- // 'Epic_Coin_NO_drop_shadow.png?1620122642","current_price":2.803e-0'
- // '5,"market_cap":415.109,"market_cap_rank":953,"fully_diluted_valuat'
- // 'ion":null,"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h":'
- // '2.581e-05,"price_change_24h":1.9e-06,"price_change_percentage_24h"'
- // ':7.27524,"market_cap_change_24h":28.26753,"market_cap_change_per'
- // 'centage_24h":7.30726,"circulating_supply":14808052.0,"total_suppl'
- // 'y":21000000.0,"max_supply":null,"ath":0.00013848,"ath_change_perce'
- // 'ntage":-79.75864,"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74'
- // '028e-07,"atl_change_percentage":4783.08078,"atl_date":"2020-03-13T'
- // '16:55:01.177Z","roi":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
- // 200));
- //
- // final priceAPI = PriceAPI(client);
- // priceAPI.resetLastCalledToForceNextCallToUpdateCache();
- //
- // final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
- //
- // expect(
- // price.toString(),
- // '{Coin.bitcoin: [0, 0.0], Coin.bitcoincash: [0, 0.0], Coin.dogecoin: '
- // '[0, 0.0], Coin.eCash: [0, 0.0], Coin.epicCash: [0, 0.0], Coin.ethereum: [0, 0.0],'
- // ' Coin.firo: [0, 0.0], Coin.litecoin: [0, 0.0], Coin.monero: [0, 0.0],'
- // ' Coin.namecoin: [0, 0.0], Coin.particl: [0, 0.0], Coin.wownero: [0, 0.0],'
- // ' Coin.bitcoinTestNet: [0, 0.0], Coin.litecoinTestNet: [0, 0.0], '
- // 'Coin.bitcoincashTestnet: [0, 0.0], Coin.dogecoinTestNet: [0, 0.0],'
- // ' Coin.firoTestNet: [0, 0.0]}');
- // });
+ final priceAPI = PriceAPI(client);
+ priceAPI.resetLastCalledToForceNextCallToUpdateCache();
- // test("no internet available", () async {
- // final client = MockClient();
- //
- // when(client.get(
- // Uri.parse(
- // "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
- // "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
- // "bitcoin-cash,namecoin,wownero,ethereum,particl"
- // "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
- // headers: {
- // 'Content-Type': 'application/json'
- // })).thenThrow(const SocketException(
- // "Failed host lookup: 'api.com' (OS Error: Temporary failure in name resolution, errno = -3)"));
- //
- // final priceAPI = PriceAPI(client);
- // priceAPI.resetLastCalledToForceNextCallToUpdateCache();
- //
- // final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
- //
- // expect(
- // price.toString(),
- // '{Coin.bitcoin: [0, 0.0], Coin.bitcoincash: [0, 0.0], '
- // 'Coin.dogecoin: [0, 0.0], Coin.eCash: [0, 0.0], Coin.epicCash: [0, 0.0], Coin.ethereum: [0, 0.0],'
- // ' Coin.firo: [0, 0.0], Coin.litecoin: [0, 0.0], Coin.monero: [0, 0.0],'
- // ' Coin.namecoin: [0, 0.0], Coin.particl: [0, 0.0], Coin.wownero: [0, 0.0],'
- // ' Coin.bitcoinTestNet: [0, 0.0], Coin.litecoinTestNet: [0, 0.0], '
- // 'Coin.bitcoincashTestnet: [0, 0.0], Coin.dogecoinTestNet: [0, 0.0], '
- // 'Coin.firoTestNet: [0, 0.0]}');
- // });
+ final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
+
+ expect(
+ price.toString(),
+ '{'
+ 'Coin.banano: [0, 0.0], '
+ 'Coin.bitcoin: [1, 0.0], '
+ 'Coin.bitcoincash: [0, 0.0], '
+ 'Coin.dogecoin: [0.00000315, -2.68533], '
+ 'Coin.eCash: [0, 0.0], '
+ 'Coin.epicCash: [0.00002803, 7.27524], '
+ 'Coin.ethereum: [0, 0.0], '
+ 'Coin.firo: [0.0001096, -0.89304], '
+ 'Coin.litecoin: [0, 0.0], '
+ 'Coin.monero: [0.00717236, -0.77656], '
+ 'Coin.namecoin: [0, 0.0], '
+ 'Coin.nano: [0, 0.0], '
+ 'Coin.particl: [0, 0.0], '
+ 'Coin.wownero: [0, 0.0], '
+ 'Coin.bitcoinTestNet: [0, 0.0], '
+ 'Coin.bitcoincashTestnet: [0, 0.0], '
+ 'Coin.dogecoinTestNet: [0, 0.0], '
+ 'Coin.firoTestNet: [0, 0.0], '
+ 'Coin.litecoinTestNet: [0, 0.0]'
+ '}',
+ );
+ verify(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
+ "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
+ "bitcoin-cash,namecoin,wownero,ethereum,particl,nano,ban"
+ "&order=market_cap_desc&per_page=50&page=1&sparkline=false",
+ ),
+ headers: {'Content-Type': 'application/json'})).called(1);
+
+ verifyNoMoreInteractions(client);
+ });
+
+ test("cached price fetch", () async {
+ final client = MockClient();
+
+ when(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&"
+ "ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
+ "bitcoin-cash,namecoin,wownero,ethereum,particl,nano,ban"
+ "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
+ headers: {
+ 'Content-Type': 'application/json'
+ })).thenAnswer((_) async => Response(
+ '[{"id":"bitcoin","symbol":"btc","name":"Bitcoin","image":"https://a'
+ 'ssets.coingecko.com/coins/images/1/large/bitcoin.png?1547033579","c'
+ 'urrent_price":1.0,"market_cap":19128800,"market_cap_rank":1,"fully_'
+ 'diluted_valuation":21000000,"total_volume":1272132,"high_24h":1.0,"'
+ 'low_24h":1.0,"price_change_24h":0.0,"price_change_percentage_24h":0'
+ '.0,"market_cap_change_24h":950.0,"market_cap_change_percentage_24h"'
+ ':0.00497,"circulating_supply":19128800.0,"total_supply":21000000.0,"'
+ 'max_supply":21000000.0,"ath":1.003301,"ath_change_percentage":-0.32'
+ '896,"ath_date":"2019-10-15T16:00:56.136Z","atl":0.99895134,"atl_cha'
+ 'nge_percentage":0.10498,"atl_date":"2019-10-21T00:00:00.000Z","roi"'
+ ':null,"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin","'
+ 'symbol":"doge","name":"Dogecoin","image":"https://assets.coingecko.'
+ 'com/coins/images/5/large/dogecoin.png?1547792256","current_price":3'
+ '.15e-06,"market_cap":417916,"market_cap_rank":10,"fully_diluted_val'
+ 'uation":null,"total_volume":27498,"high_24h":3.26e-06,"low_24h":3.1'
+ '3e-06,"price_change_24h":-8.6889947714e-08,"price_change_percentage'
+ '_24h":-2.68533,"market_cap_change_24h":-11370.894861206936,"market_'
+ 'cap_change_percentage_24h":-2.64879,"circulating_supply":1326707642'
+ '99.894,"total_supply":null,"max_supply":null,"ath":1.264e-05,"ath_c'
+ 'hange_percentage":-75.05046,"ath_date":"2021-05-07T23:04:53.026Z","'
+ 'atl":1.50936e-07,"atl_change_percentage":1989.69346,"atl_date":"202'
+ '0-12-17T09:18:05.654Z","roi":null,"last_updated":"2022-08-22T16:38:'
+ '15.113Z"},{"id":"monero","symbol":"xmr","name":"Monero","image":"ht'
+ 'tps://assets.coingecko.com/coins/images/69/large/monero_logo.png?15'
+ '47033729","current_price":0.00717236,"market_cap":130002,"market_cap'
+ '_rank":29,"fully_diluted_valuation":null,"total_volume":4901,"high'
+ '_24h":0.00731999,"low_24h":0.00707511,"price_change_24h":-5.613354'
+ '3212467e-05,"price_change_percentage_24h":-0.77656,"market_cap_chan'
+ 'ge_24h":-1007.8447677436197,"market_cap_change_percentage_24h":-0.7'
+ '6929,"circulating_supply":18147820.3764146,"total_supply":null,"ma'
+ 'x_supply":null,"ath":0.03475393,"ath_change_percentage":-79.32037,"'
+ 'ath_date":"2018-01-09T00:00:00.000Z","atl":0.00101492,"atl_change_'
+ 'percentage":608.13327,"atl_date":"2014-12-18T00:00:00.000Z","roi":n'
+ 'ull,"last_updated":"2022-08-22T16:38:26.347Z"},{"id":"zcoin","symbo'
+ 'l":"firo","name":"Firo","image":"https://assets.coingecko.com/coins'
+ '/images/479/large/firocoingecko.png?1636537544","current_price":0.0'
+ '001096,"market_cap":1252,"market_cap_rank":604,"fully_diluted_valu'
+ 'ation":2349,"total_volume":90.573,"high_24h":0.00011148,"low_24h":0'
+ '.00010834,"price_change_24h":-9.87561775002e-07,"price_change_perce'
+ 'ntage_24h":-0.89304,"market_cap_change_24h":-10.046635178462793,"ma'
+ 'rket_cap_change_percentage_24h":-0.79578,"circulating_supply":11411'
+ '043.8354697,"total_supply":21400000.0,"max_supply":21400000.0,"ath"'
+ ':0.01616272,"ath_change_percentage":-99.3208,"ath_date":"2018-04-04'
+ 'T16:04:48.408Z","atl":4.268e-05,"atl_change_percentage":157.22799,'
+ '"atl_date":"2022-05-12T07:28:47.088Z","roi":null,"last_updated":"2'
+ '022-08-22T16:38:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"'
+ 'Epic Cash","image":"https://assets.coingecko.com/coins/images/9520/'
+ 'large/Epic_Coin_NO_drop_shadow.png?1620122642","current_price":2.80'
+ '3e-05,"market_cap":415.109,"market_cap_rank":953,"fully_diluted_val'
+ 'uation":null,"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h'
+ '":2.581e-05,"price_change_24h":1.9e-06,"price_change_percentage_24'
+ 'h":7.27524,"market_cap_change_24h":28.26753,"market_cap_change_perc'
+ 'entage_24h":7.30726,"circulating_supply":14808052.0,"total_supply":'
+ '21000000.0,"max_supply":null,"ath":0.00013848,"ath_change_percentag'
+ 'e":-79.75864,"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74028e-0'
+ '7,"atl_change_percentage":4783.08078,"atl_date":"2020-03-13T16:55:01'
+ '.177Z","roi":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
+ 200));
+
+ final priceAPI = PriceAPI(client);
+ priceAPI.resetLastCalledToForceNextCallToUpdateCache();
+
+ // initial fetch to fill cache
+ await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
+
+ // now this time it should grab from cache instead of http.get
+ final cachedPrice =
+ await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
+
+ expect(
+ cachedPrice.toString(),
+ '{'
+ 'Coin.banano: [0, 0.0], '
+ 'Coin.bitcoin: [1, 0.0], '
+ 'Coin.bitcoincash: [0, 0.0], '
+ 'Coin.dogecoin: [0.00000315, -2.68533], '
+ 'Coin.eCash: [0, 0.0], '
+ 'Coin.epicCash: [0.00002803, 7.27524], '
+ 'Coin.ethereum: [0, 0.0], '
+ 'Coin.firo: [0.0001096, -0.89304], '
+ 'Coin.litecoin: [0, 0.0], '
+ 'Coin.monero: [0.00717236, -0.77656], '
+ 'Coin.namecoin: [0, 0.0], '
+ 'Coin.nano: [0, 0.0], '
+ 'Coin.particl: [0, 0.0], '
+ 'Coin.wownero: [0, 0.0], '
+ 'Coin.bitcoinTestNet: [0, 0.0], '
+ 'Coin.bitcoincashTestnet: [0, 0.0], '
+ 'Coin.dogecoinTestNet: [0, 0.0], '
+ 'Coin.firoTestNet: [0, 0.0], '
+ 'Coin.litecoinTestNet: [0, 0.0]'
+ '}',
+ );
+
+ // verify only called once during filling of cache
+ verify(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc&ids"
+ "=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
+ "bitcoin-cash,namecoin,wownero,ethereum,particl,nano,ban"
+ "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
+ headers: {'Content-Type': 'application/json'})).called(1);
+
+ verifyNoMoreInteractions(client);
+ });
+
+ test("response parse failure", () async {
+ final client = MockClient();
+
+ when(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
+ "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
+ "bitcoin-cash,namecoin,wownero,ethereum,particl,nano,ban"
+ "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
+ headers: {
+ 'Content-Type': 'application/json'
+ })).thenAnswer((_) async => Response(
+ '[{"id":"bitcoin","symbol":"btc","name":com/coins/images/1/large/'
+ 'bitcoin.png?1547033579","current_price":1.0,"market_cap":19128800'
+ ',"market_cap_rank":1,"fully_diluted_valuation":21000000,"total_volum'
+ 'e":1272132,"high_24h":1.0,"low_24h":1.0,"price_change_24h":0.0,"pri'
+ 'ce_change_percentage_24h":0.0,"market_cap_change_24h":950.0,"market_'
+ 'cap_change_percentage_24h":0.00497,"circulating_supply":19128800.0,"t'
+ 'otal_supply":21000000.0,"max_supply":21000000.0,"ath":1.003301,"ath'
+ '_change_percentage":-0.32896,"ath_date":"2019-10-15T16:00:56.136Z",'
+ '"atl":0.99895134,"atl_change_percentage":0.10498,"atl_date":'
+ '"2019-10-21T00:00:00.000Z","roi":null,'
+ '"last_updated":"2022-08-22T16:37:59.237Z"},{"id":"dogecoin"'
+ ',"symbol":"doge","name":"Dogecoin","image":'
+ '"https://assets.coingecko.com/coins/images/5/large/dogecoin.png?1547792256",'
+ '"current_price":3.15e-06,"market_cap":417916,"market_cap_rank":10'
+ ',"fully_diluted_valuation":null,"total_volume":27498,"high_24h":3'
+ '.26e-06,"low_24h":3.13e-06,"price_change_24h":-8.6889947714e-08,"'
+ 'price_change_percentage_24h":-2.68533,"market_cap_change_24h":-11'
+ '370.894861206936,"market_cap_change_percentage_24h":-2.64879,"cir'
+ 'culating_supply":132670764299.894,"total_supply":null,"max_supply'
+ '":null,"ath":1.264e-05,"ath_change_percentage":-75.05046,"ath_date'
+ '":"2021-05-07T23:04:53.026Z","atl":1.50936e-07,"atl_change_percen'
+ 'tage":1989.69346,"atl_date":"2020-12-17T09:18:05.654Z","roi":null,'
+ '"last_updated":"2022-08-22T16:38:15.113Z"},{"id":"monero","symbol"'
+ ':"xmr","name":"Monero","image":"https://assets.coingecko.com/coins'
+ '/images/69/large/monero_logo.png?1547033729","current_price":0.007'
+ '17236,"market_cap":130002,"market_cap_rank":29,"fully_diluted_valu'
+ 'ation":null,"total_volume":4901,"high_24h":0.00731999,"low_24h":0.'
+ '00707511,"price_change_24h":-5.6133543212467e-05,"price_change_per'
+ 'centage_24h":-0.77656,"market_cap_change_24h":-1007.8447677436197'
+ ',"market_cap_change_percentage_24h":-0.76929,"circulating_supply":'
+ '18147820.3764146,"total_supply":null,"max_supply":null,"ath":0.034'
+ '75393,"ath_change_percentage":-79.32037,"ath_date":"2018-01-09T00:'
+ '00:00.000Z","atl":0.00101492,"atl_change_percentage":608.13327,"at'
+ 'l_date":"2014-12-18T00:00:00.000Z","roi":null,"last_updated":"2022'
+ '-08-22T16:38:26.347Z"},{"id":"zcoin","symbol":"firo","name":"Firo"'
+ ',"image":"https://assets.coingecko.com/coins/images/479/large/firo'
+ 'coingecko.png?1636537544","current_price":0.0001096,"market_cap":1'
+ '252,"market_cap_rank":604,"fully_diluted_valuation":2349,"total_vo'
+ 'lume":90.573,"high_24h":0.00011148,"low_24h":0.00010834,"price_chang'
+ 'e_24h":-9.87561775002e-07,"price_change_percentage_24h":-0.89304,'
+ '"market_cap_change_24h":-10.046635178462793,"market_cap_change_per'
+ 'centage_24h":-0.79578,"circulating_supply":11411043.8354697,"tota'
+ 'l_supply":21400000.0,"max_supply":21400000.0,"ath":0.01616272,"ath'
+ '_change_percentage":-99.3208,"ath_date":"2018-04-04T16:04:48.408Z"'
+ ',"atl":4.268e-05,"atl_change_percentage":157.22799,"atl_date":"202'
+ '2-05-12T07:28:47.088Z","roi":null,"last_updated":"2022-08-22T16:3'
+ '8:47.229Z"},{"id":"epic-cash","symbol":"epic","name":"Epic Cash",'
+ '"image":"https://assets.coingecko.com/coins/images/9520/large/'
+ 'Epic_Coin_NO_drop_shadow.png?1620122642","current_price":2.803e-0'
+ '5,"market_cap":415.109,"market_cap_rank":953,"fully_diluted_valuat'
+ 'ion":null,"total_volume":0.2371557,"high_24h":3.053e-05,"low_24h":'
+ '2.581e-05,"price_change_24h":1.9e-06,"price_change_percentage_24h"'
+ ':7.27524,"market_cap_change_24h":28.26753,"market_cap_change_per'
+ 'centage_24h":7.30726,"circulating_supply":14808052.0,"total_suppl'
+ 'y":21000000.0,"max_supply":null,"ath":0.00013848,"ath_change_perce'
+ 'ntage":-79.75864,"ath_date":"2021-12-11T08:39:41.129Z","atl":5.74'
+ '028e-07,"atl_change_percentage":4783.08078,"atl_date":"2020-03-13T'
+ '16:55:01.177Z","roi":null,"last_updated":"2022-08-22T16:38:32.826Z"}]',
+ 200));
+
+ final priceAPI = PriceAPI(client);
+ priceAPI.resetLastCalledToForceNextCallToUpdateCache();
+
+ final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
+
+ expect(
+ price.toString(),
+ '{'
+ 'Coin.banano: [0, 0.0], '
+ 'Coin.bitcoin: [0, 0.0], '
+ 'Coin.bitcoincash: [0, 0.0], '
+ 'Coin.dogecoin: [0, 0.0], '
+ 'Coin.eCash: [0, 0.0], '
+ 'Coin.epicCash: [0, 0.0], '
+ 'Coin.ethereum: [0, 0.0], '
+ 'Coin.firo: [0, 0.0], '
+ 'Coin.litecoin: [0, 0.0], '
+ 'Coin.monero: [0, 0.0], '
+ 'Coin.namecoin: [0, 0.0], '
+ 'Coin.nano: [0, 0.0], '
+ 'Coin.particl: [0, 0.0], '
+ 'Coin.wownero: [0, 0.0], '
+ 'Coin.bitcoinTestNet: [0, 0.0], '
+ 'Coin.bitcoincashTestnet: [0, 0.0], '
+ 'Coin.dogecoinTestNet: [0, 0.0], '
+ 'Coin.firoTestNet: [0, 0.0], '
+ 'Coin.litecoinTestNet: [0, 0.0]'
+ '}',
+ );
+ });
+
+ test("no internet available", () async {
+ final client = MockClient();
+
+ when(client.get(
+ Uri.parse(
+ "https://api.coingecko.com/api/v3/coins/markets?vs_currency=btc"
+ "&ids=monero,bitcoin,litecoin,ecash,epic-cash,zcoin,dogecoin,"
+ "bitcoin-cash,namecoin,wownero,ethereum,particl,nano,ban"
+ "&order=market_cap_desc&per_page=50&page=1&sparkline=false"),
+ headers: {
+ 'Content-Type': 'application/json'
+ })).thenThrow(const SocketException(
+ "Failed host lookup: 'api.com' (OS Error: Temporary failure in name resolution, errno = -3)"));
+
+ final priceAPI = PriceAPI(client);
+ priceAPI.resetLastCalledToForceNextCallToUpdateCache();
+
+ final price = await priceAPI.getPricesAnd24hChange(baseCurrency: "btc");
+
+ expect(
+ price.toString(),
+ '{'
+ 'Coin.banano: [0, 0.0], '
+ 'Coin.bitcoin: [0, 0.0], '
+ 'Coin.bitcoincash: [0, 0.0], '
+ 'Coin.dogecoin: [0, 0.0], '
+ 'Coin.eCash: [0, 0.0], '
+ 'Coin.epicCash: [0, 0.0], '
+ 'Coin.ethereum: [0, 0.0], '
+ 'Coin.firo: [0, 0.0], '
+ 'Coin.litecoin: [0, 0.0], '
+ 'Coin.monero: [0, 0.0], '
+ 'Coin.namecoin: [0, 0.0], '
+ 'Coin.nano: [0, 0.0], '
+ 'Coin.particl: [0, 0.0], '
+ 'Coin.wownero: [0, 0.0], '
+ 'Coin.bitcoinTestNet: [0, 0.0], '
+ 'Coin.bitcoincashTestnet: [0, 0.0], '
+ 'Coin.dogecoinTestNet: [0, 0.0], '
+ 'Coin.firoTestNet: [0, 0.0], '
+ 'Coin.litecoinTestNet: [0, 0.0]'
+ '}',
+ );
+ });
tearDown(() async {
await tearDownTestHive();
diff --git a/test/screen_tests/address_book_view/subviews/add_address_book_view_screen_test.mocks.dart b/test/screen_tests/address_book_view/subviews/add_address_book_view_screen_test.mocks.dart
index a5f53d82b..343c90563 100644
--- a/test/screen_tests/address_book_view/subviews/add_address_book_view_screen_test.mocks.dart
+++ b/test/screen_tests/address_book_view/subviews/add_address_book_view_screen_test.mocks.dart
@@ -269,7 +269,7 @@ class MockManager extends _i1.Mock implements _i12.Manager {
@override
_i13.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i13.Coin.bitcoin,
+ returnValue: _i13.Coin.banano,
) as _i13.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/address_book_view/subviews/address_book_entry_details_view_screen_test.mocks.dart b/test/screen_tests/address_book_view/subviews/address_book_entry_details_view_screen_test.mocks.dart
index 630726884..c32b1051a 100644
--- a/test/screen_tests/address_book_view/subviews/address_book_entry_details_view_screen_test.mocks.dart
+++ b/test/screen_tests/address_book_view/subviews/address_book_entry_details_view_screen_test.mocks.dart
@@ -230,7 +230,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i11.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i11.Coin.bitcoin,
+ returnValue: _i11.Coin.banano,
) as _i11.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/address_book_view/subviews/edit_address_book_entry_view_screen_test.mocks.dart b/test/screen_tests/address_book_view/subviews/edit_address_book_entry_view_screen_test.mocks.dart
index c64135241..8b2e70ac8 100644
--- a/test/screen_tests/address_book_view/subviews/edit_address_book_entry_view_screen_test.mocks.dart
+++ b/test/screen_tests/address_book_view/subviews/edit_address_book_entry_view_screen_test.mocks.dart
@@ -228,7 +228,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i11.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i11.Coin.bitcoin,
+ returnValue: _i11.Coin.banano,
) as _i11.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/lockscreen_view_screen_test.mocks.dart b/test/screen_tests/lockscreen_view_screen_test.mocks.dart
index 3f7609c1f..af9c67151 100644
--- a/test/screen_tests/lockscreen_view_screen_test.mocks.dart
+++ b/test/screen_tests/lockscreen_view_screen_test.mocks.dart
@@ -548,7 +548,7 @@ class MockManager extends _i1.Mock implements _i13.Manager {
@override
_i9.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i9.Coin.bitcoin,
+ returnValue: _i9.Coin.banano,
) as _i9.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/main_view_tests/main_view_screen_testA_test.mocks.dart b/test/screen_tests/main_view_tests/main_view_screen_testA_test.mocks.dart
index 909d04a86..150f48ffa 100644
--- a/test/screen_tests/main_view_tests/main_view_screen_testA_test.mocks.dart
+++ b/test/screen_tests/main_view_tests/main_view_screen_testA_test.mocks.dart
@@ -335,7 +335,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/main_view_tests/main_view_screen_testB_test.mocks.dart b/test/screen_tests/main_view_tests/main_view_screen_testB_test.mocks.dart
index 76ca1a64a..0fcebe54f 100644
--- a/test/screen_tests/main_view_tests/main_view_screen_testB_test.mocks.dart
+++ b/test/screen_tests/main_view_tests/main_view_screen_testB_test.mocks.dart
@@ -335,7 +335,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/main_view_tests/main_view_screen_testC_test.mocks.dart b/test/screen_tests/main_view_tests/main_view_screen_testC_test.mocks.dart
index 416090add..b6796580c 100644
--- a/test/screen_tests/main_view_tests/main_view_screen_testC_test.mocks.dart
+++ b/test/screen_tests/main_view_tests/main_view_screen_testC_test.mocks.dart
@@ -335,7 +335,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/onboarding/backup_key_view_screen_test.mocks.dart b/test/screen_tests/onboarding/backup_key_view_screen_test.mocks.dart
index 7022de852..c89b92af5 100644
--- a/test/screen_tests/onboarding/backup_key_view_screen_test.mocks.dart
+++ b/test/screen_tests/onboarding/backup_key_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/onboarding/backup_key_warning_view_screen_test.mocks.dart b/test/screen_tests/onboarding/backup_key_warning_view_screen_test.mocks.dart
index 4fad26d9f..96feb3c23 100644
--- a/test/screen_tests/onboarding/backup_key_warning_view_screen_test.mocks.dart
+++ b/test/screen_tests/onboarding/backup_key_warning_view_screen_test.mocks.dart
@@ -333,7 +333,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/onboarding/create_pin_view_screen_test.mocks.dart b/test/screen_tests/onboarding/create_pin_view_screen_test.mocks.dart
index c04081c52..6be5c8995 100644
--- a/test/screen_tests/onboarding/create_pin_view_screen_test.mocks.dart
+++ b/test/screen_tests/onboarding/create_pin_view_screen_test.mocks.dart
@@ -548,7 +548,7 @@ class MockManager extends _i1.Mock implements _i13.Manager {
@override
_i9.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i9.Coin.bitcoin,
+ returnValue: _i9.Coin.banano,
) as _i9.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/onboarding/restore_wallet_view_screen_test.mocks.dart b/test/screen_tests/onboarding/restore_wallet_view_screen_test.mocks.dart
index 9a351b683..d45ffc46d 100644
--- a/test/screen_tests/onboarding/restore_wallet_view_screen_test.mocks.dart
+++ b/test/screen_tests/onboarding/restore_wallet_view_screen_test.mocks.dart
@@ -389,7 +389,7 @@ class MockManager extends _i1.Mock implements _i13.Manager {
@override
_i11.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i11.Coin.bitcoin,
+ returnValue: _i11.Coin.banano,
) as _i11.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/onboarding/verify_backup_key_view_screen_test.mocks.dart b/test/screen_tests/onboarding/verify_backup_key_view_screen_test.mocks.dart
index 496739e8e..3a50f9e38 100644
--- a/test/screen_tests/onboarding/verify_backup_key_view_screen_test.mocks.dart
+++ b/test/screen_tests/onboarding/verify_backup_key_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/currency_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/currency_view_screen_test.mocks.dart
index 5b81467df..6def2231b 100644
--- a/test/screen_tests/settings_view/settings_subviews/currency_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/currency_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/add_custom_node_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/add_custom_node_view_screen_test.mocks.dart
index 1c5de9829..5acdfe1e5 100644
--- a/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/add_custom_node_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/add_custom_node_view_screen_test.mocks.dart
@@ -317,7 +317,7 @@ class MockManager extends _i1.Mock implements _i12.Manager {
@override
_i10.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i10.Coin.bitcoin,
+ returnValue: _i10.Coin.banano,
) as _i10.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/node_details_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/node_details_view_screen_test.mocks.dart
index 760b143bd..5f1e62ae0 100644
--- a/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/node_details_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/network_settings_subviews/node_details_view_screen_test.mocks.dart
@@ -317,7 +317,7 @@ class MockManager extends _i1.Mock implements _i12.Manager {
@override
_i10.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i10.Coin.bitcoin,
+ returnValue: _i10.Coin.banano,
) as _i10.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/wallet_backup_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/wallet_backup_view_screen_test.mocks.dart
index 191e1eca7..bce263d8a 100644
--- a/test/screen_tests/settings_view/settings_subviews/wallet_backup_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/wallet_backup_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/rescan_warning_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/rescan_warning_view_screen_test.mocks.dart
index df6bac383..0e843bd14 100644
--- a/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/rescan_warning_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/rescan_warning_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/wallet_delete_mnemonic_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/wallet_delete_mnemonic_view_screen_test.mocks.dart
index 2ae50c123..dc8e09b91 100644
--- a/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/wallet_delete_mnemonic_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/wallet_settings_subviews/wallet_delete_mnemonic_view_screen_test.mocks.dart
@@ -333,7 +333,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_subviews/wallet_settings_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_subviews/wallet_settings_view_screen_test.mocks.dart
index 3548ce5a4..3771527e0 100644
--- a/test/screen_tests/settings_view/settings_subviews/wallet_settings_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_subviews/wallet_settings_view_screen_test.mocks.dart
@@ -569,7 +569,7 @@ class MockManager extends _i1.Mock implements _i15.Manager {
@override
_i9.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i9.Coin.bitcoin,
+ returnValue: _i9.Coin.banano,
) as _i9.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/settings_view/settings_view_screen_test.mocks.dart b/test/screen_tests/settings_view/settings_view_screen_test.mocks.dart
index daee1f95e..2b4b9e638 100644
--- a/test/screen_tests/settings_view/settings_view_screen_test.mocks.dart
+++ b/test/screen_tests/settings_view/settings_view_screen_test.mocks.dart
@@ -333,7 +333,7 @@ class MockManager extends _i1.Mock implements _i10.Manager {
@override
_i8.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i8.Coin.bitcoin,
+ returnValue: _i8.Coin.banano,
) as _i8.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/transaction_subviews/transaction_search_results_view_screen_test.mocks.dart b/test/screen_tests/transaction_subviews/transaction_search_results_view_screen_test.mocks.dart
index 7914d71f4..7a61b1f58 100644
--- a/test/screen_tests/transaction_subviews/transaction_search_results_view_screen_test.mocks.dart
+++ b/test/screen_tests/transaction_subviews/transaction_search_results_view_screen_test.mocks.dart
@@ -104,7 +104,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/wallet_view/confirm_send_view_screen_test.mocks.dart b/test/screen_tests/wallet_view/confirm_send_view_screen_test.mocks.dart
index f493222d9..8c3a5a39a 100644
--- a/test/screen_tests/wallet_view/confirm_send_view_screen_test.mocks.dart
+++ b/test/screen_tests/wallet_view/confirm_send_view_screen_test.mocks.dart
@@ -103,7 +103,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/wallet_view/receive_view_screen_test.mocks.dart b/test/screen_tests/wallet_view/receive_view_screen_test.mocks.dart
index 6e0382474..148289626 100644
--- a/test/screen_tests/wallet_view/receive_view_screen_test.mocks.dart
+++ b/test/screen_tests/wallet_view/receive_view_screen_test.mocks.dart
@@ -102,7 +102,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/wallet_view/send_view_screen_test.mocks.dart b/test/screen_tests/wallet_view/send_view_screen_test.mocks.dart
index 97f744995..71e0ca110 100644
--- a/test/screen_tests/wallet_view/send_view_screen_test.mocks.dart
+++ b/test/screen_tests/wallet_view/send_view_screen_test.mocks.dart
@@ -144,7 +144,7 @@ class MockManager extends _i1.Mock implements _i9.Manager {
@override
_i10.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i10.Coin.bitcoin,
+ returnValue: _i10.Coin.banano,
) as _i10.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/screen_tests/wallet_view/wallet_view_screen_test.mocks.dart b/test/screen_tests/wallet_view/wallet_view_screen_test.mocks.dart
index 4a0a14f47..60bf5ef5f 100644
--- a/test/screen_tests/wallet_view/wallet_view_screen_test.mocks.dart
+++ b/test/screen_tests/wallet_view/wallet_view_screen_test.mocks.dart
@@ -104,7 +104,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i7.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i7.Coin.bitcoin,
+ returnValue: _i7.Coin.banano,
) as _i7.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/services/coins/manager_test.mocks.dart b/test/services/coins/manager_test.mocks.dart
index a9447506e..97992e3ed 100644
--- a/test/services/coins/manager_test.mocks.dart
+++ b/test/services/coins/manager_test.mocks.dart
@@ -217,7 +217,7 @@ class MockFiroWallet extends _i1.Mock implements _i10.FiroWallet {
@override
_i12.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i12.Coin.bitcoin,
+ returnValue: _i12.Coin.banano,
) as _i12.Coin);
@override
_i11.Future
> get mnemonic => (super.noSuchMethod(
diff --git a/test/widget_tests/managed_favorite_test.dart b/test/widget_tests/managed_favorite_test.dart
index f930caf5c..e0cb0dfc7 100644
--- a/test/widget_tests/managed_favorite_test.dart
+++ b/test/widget_tests/managed_favorite_test.dart
@@ -17,8 +17,10 @@ import 'package:stackwallet/services/wallets_service.dart';
import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/themes/theme_service.dart';
import 'package:stackwallet/utilities/amount/amount.dart';
+import 'package:stackwallet/utilities/amount/amount_unit.dart';
import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/listenable_list.dart';
+import 'package:stackwallet/utilities/prefs.dart';
import 'package:stackwallet/widgets/managed_favorite.dart';
import '../sample_data/theme_json.dart';
@@ -36,6 +38,7 @@ Amount _a(int i) => Amount.fromDecimal(
WalletsService,
BitcoinWallet,
ThemeService,
+ Prefs,
LocaleService
], customMocks: [
MockSpec
> get utxos => (super.noSuchMethod(
@@ -2055,10 +2058,488 @@ class MockThemeService extends _i1.Mock implements _i30.ThemeService {
)) as _i31.StackTheme?);
}
+/// A class which mocks [Prefs].
+///
+/// See the documentation for Mockito's code generation for more information.
+class MockPrefs extends _i1.Mock implements _i24.Prefs {
+ MockPrefs() {
+ _i1.throwOnMissingStub(this);
+ }
+
+ @override
+ bool get isInitialized => (super.noSuchMethod(
+ Invocation.getter(#isInitialized),
+ returnValue: false,
+ ) as bool);
+ @override
+ int get lastUnlockedTimeout => (super.noSuchMethod(
+ Invocation.getter(#lastUnlockedTimeout),
+ returnValue: 0,
+ ) as int);
+ @override
+ set lastUnlockedTimeout(int? lastUnlockedTimeout) => super.noSuchMethod(
+ Invocation.setter(
+ #lastUnlockedTimeout,
+ lastUnlockedTimeout,
+ ),
+ returnValueForMissingStub: null,
+ );
+ @override
+ int get lastUnlocked => (super.noSuchMethod(
+ Invocation.getter(#lastUnlocked),
+ returnValue: 0,
+ ) as int);
+ @override
+ set lastUnlocked(int? lastUnlocked) => super.noSuchMethod(
+ Invocation.setter(
+ #lastUnlocked,
+ lastUnlocked,
+ ),
+ returnValueForMissingStub: null,
+ );
+ @override
+ int get currentNotificationId => (super.noSuchMethod(
+ Invocation.getter(#currentNotificationId),
+ returnValue: 0,
+ ) as int);
+ @override
+ List
> get utxos => (super.noSuchMethod(
@@ -2077,7 +2077,7 @@ class MockManager extends _i1.Mock implements _i6.Manager {
@override
_i21.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i21.Coin.bitcoin,
+ returnValue: _i21.Coin.banano,
) as _i21.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
@@ -2445,7 +2445,7 @@ class MockCoinServiceAPI extends _i1.Mock implements _i19.CoinServiceAPI {
@override
_i21.Coin get coin => (super.noSuchMethod(
Invocation.getter(#coin),
- returnValue: _i21.Coin.bitcoin,
+ returnValue: _i21.Coin.banano,
) as _i21.Coin);
@override
bool get isRefreshing => (super.noSuchMethod(
diff --git a/test/widget_tests/transaction_card_test.dart b/test/widget_tests/transaction_card_test.dart
index cb82decca..3a9765720 100644
--- a/test/widget_tests/transaction_card_test.dart
+++ b/test/widget_tests/transaction_card_test.dart
@@ -1,5 +1,20 @@
+import 'package:decimal/decimal.dart';
+import 'package:flutter/material.dart';
+import 'package:flutter_feather_icons/flutter_feather_icons.dart';
+import 'package:flutter_riverpod/flutter_riverpod.dart';
import 'package:flutter_test/flutter_test.dart';
+import 'package:mockingjay/mockingjay.dart' as mockingjay;
import 'package:mockito/annotations.dart';
+import 'package:mockito/mockito.dart';
+import 'package:stackwallet/db/isar/main_db.dart';
+import 'package:stackwallet/models/isar/models/isar_models.dart';
+import 'package:stackwallet/models/isar/stack_theme.dart';
+import 'package:stackwallet/pages/wallet_view/transaction_views/transaction_details_view.dart';
+import 'package:stackwallet/providers/db/main_db_provider.dart';
+import 'package:stackwallet/providers/global/locale_provider.dart';
+import 'package:stackwallet/providers/global/prefs_provider.dart';
+import 'package:stackwallet/providers/global/price_provider.dart';
+import 'package:stackwallet/providers/global/wallets_provider.dart';
import 'package:stackwallet/services/coins/coin_service.dart';
import 'package:stackwallet/services/coins/firo/firo_wallet.dart';
import 'package:stackwallet/services/coins/manager.dart';
@@ -7,8 +22,18 @@ import 'package:stackwallet/services/locale_service.dart';
import 'package:stackwallet/services/notes_service.dart';
import 'package:stackwallet/services/price_service.dart';
import 'package:stackwallet/services/wallets.dart';
+import 'package:stackwallet/themes/stack_colors.dart';
import 'package:stackwallet/themes/theme_service.dart';
+import 'package:stackwallet/utilities/amount/amount.dart';
+import 'package:stackwallet/utilities/amount/amount_unit.dart';
+import 'package:stackwallet/utilities/enums/coin_enum.dart';
import 'package:stackwallet/utilities/prefs.dart';
+import 'package:stackwallet/utilities/util.dart';
+import 'package:stackwallet/widgets/transaction_card.dart';
+import 'package:tuple/tuple.dart';
+
+import '../sample_data/theme_json.dart';
+import 'transaction_card_test.mocks.dart';
@GenerateMocks([
Wallets,
@@ -20,466 +45,519 @@ import 'package:stackwallet/utilities/prefs.dart';
PriceService,
NotesService,
ThemeService,
+ MainDB,
], customMocks: [])
void main() {
TestWidgetsFlutterBinding.ensureInitialized();
- // testWidgets("Sent confirmed tx displays correctly", (tester) async {
- // final mockManager = MockManager();
- // final mockLocaleService = MockLocaleService();
- // final wallets = MockWallets();
- // final mockPrefs = MockPrefs();
- // final mockPriceService = MockPriceService();
- // final mockThemeService = MockThemeService();
- //
- // final tx = Transaction(
- // txid: "some txid",
- // timestamp: 1648595998,
- // type: TransactionType.outgoing,
- // amount: 100000000,
- // amountString: Amount(
- // rawValue: BigInt.from(100000000),
- // fractionDigits: Coin.firo.decimals,
- // ).toJsonString(),
- // fee: 3794,
- // height: 450123,
- // subType: TransactionSubType.none,
- // isCancelled: false,
- // walletId: '',
- // isLelantus: null,
- // slateId: '',
- // otherData: '',
- // nonce: null,
- // inputs: [],
- // outputs: [],
- // numberOfMessages: null,
- // )..address.value = Address(
- // walletId: "walletId",
- // value: "",
- // publicKey: [],
- // derivationIndex: 0,
- // derivationPath: null,
- // type: AddressType.p2pkh,
- // subType: AddressSubType.receiving);
- //
- // final CoinServiceAPI wallet = MockFiroWallet();
- //
- // when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
- // (_) => StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // );
- // when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
- // when(mockLocaleService.locale).thenAnswer((_) => "en_US");
- // when(mockPrefs.currency).thenAnswer((_) => "USD");
- // when(mockPrefs.externalCalls).thenAnswer((_) => true);
- // when(mockPriceService.getPrice(Coin.firo))
- // .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
- //
- // when(wallet.coin).thenAnswer((_) => Coin.firo);
- //
- // when(wallets.getManager("wallet-id"))
- // .thenAnswer((realInvocation) => Manager(wallet));
- //
- // when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
- // //
- // await tester.pumpWidget(
- // ProviderScope(
- // overrides: [
- // walletsChangeNotifierProvider.overrideWithValue(wallets),
- // localeServiceChangeNotifierProvider
- // .overrideWithValue(mockLocaleService),
- // pThemeService.overrideWithValue(mockThemeService),
- // prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
- // priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
- // ],
- // child: MaterialApp(
- // theme: ThemeData(
- // extensions: [
- // StackColors.fromStackColorTheme(
- // StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // ),
- // ],
- // ),
- // home: TransactionCard(transaction: tx, walletId: "wallet-id"),
- // ),
- // ),
- // );
- //
- // //
- // final title = find.text("Sent");
- // // final price1 = find.text("0.00 USD");
- // final amount = Util.isDesktop
- // ? find.text("-1.00000000 FIRO")
- // : find.text("1.00000000 FIRO");
- //
- // final icon = find.byIcon(FeatherIcons.arrowUp);
- //
- // expect(title, findsOneWidget);
- // // expect(price1, findsOneWidget);
- // expect(amount, findsOneWidget);
- // // expect(icon, findsOneWidget);
- // //
- // await tester.pumpAndSettle(const Duration(seconds: 2));
- // //
- // // final price2 = find.text("\$10.00");
- // // expect(price2, findsOneWidget);
- // //
- // // verify(mockManager.addListener(any)).called(1);
- // verify(mockLocaleService.addListener(any)).called(1);
- //
- // verify(mockPrefs.currency).called(1);
- // verify(mockPriceService.getPrice(Coin.firo)).called(1);
- // verify(wallet.coin.ticker).called(1);
- //
- // verify(mockLocaleService.locale).called(1);
- //
- // verifyNoMoreInteractions(mockManager);
- // verifyNoMoreInteractions(mockLocaleService);
- // });
+ testWidgets("Sent confirmed tx displays correctly", (tester) async {
+ final mockManager = MockManager();
+ final mockLocaleService = MockLocaleService();
+ final wallets = MockWallets();
+ final mockPrefs = MockPrefs();
+ final mockPriceService = MockPriceService();
+ final mockThemeService = MockThemeService();
+ final mockDB = MockMainDB();
- // testWidgets("Anonymized confirmed tx displays correctly", (tester) async {
- // final mockManager = MockManager();
- // final mockLocaleService = MockLocaleService();
- // final wallets = MockWallets();
- // final mockPrefs = MockPrefs();
- // final mockPriceService = MockPriceService();
- // final mockThemeService = MockThemeService();
- //
- // final tx = Transaction(
- // txid: "some txid",
- // timestamp: 1648595998,
- // type: TransactionType.outgoing,
- // amount: 9659,
- // amountString: Amount(
- // rawValue: BigInt.from(9659),
- // fractionDigits: Coin.firo.decimals,
- // ).toJsonString(),
- // fee: 3794,
- // height: 450123,
- // subType: TransactionSubType.mint,
- // isCancelled: false,
- // walletId: '',
- // isLelantus: null,
- // slateId: '',
- // otherData: '',
- // nonce: null,
- // inputs: [],
- // outputs: [],
- // numberOfMessages: null,
- // )..address.value = Address(
- // walletId: "walletId",
- // value: "",
- // publicKey: [],
- // derivationIndex: 0,
- // derivationPath: null,
- // type: AddressType.p2pkh,
- // subType: AddressSubType.receiving);
- //
- // final CoinServiceAPI wallet = MockFiroWallet();
- //
- // when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
- // (_) => StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // );
- // when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
- // when(mockLocaleService.locale).thenAnswer((_) => "en_US");
- // when(mockPrefs.currency).thenAnswer((_) => "USD");
- // when(mockPrefs.externalCalls).thenAnswer((_) => true);
- // when(mockPriceService.getPrice(Coin.firo))
- // .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
- //
- // when(wallet.coin).thenAnswer((_) => Coin.firo);
- // when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
- //
- // when(wallets.getManager("wallet-id"))
- // .thenAnswer((realInvocation) => Manager(wallet));
- // //
- // await tester.pumpWidget(
- // ProviderScope(
- // overrides: [
- // walletsChangeNotifierProvider.overrideWithValue(wallets),
- // localeServiceChangeNotifierProvider
- // .overrideWithValue(mockLocaleService),
- // prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
- // pThemeService.overrideWithValue(mockThemeService),
- // priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
- // ],
- // child: MaterialApp(
- // theme: ThemeData(
- // extensions: [
- // StackColors.fromStackColorTheme(
- // StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // ),
- // ],
- // ),
- // home: TransactionCard(transaction: tx, walletId: "wallet-id"),
- // ),
- // ),
- // );
- //
- // //
- // final title = find.text("Anonymized");
- // // final price1 = find.text("0.00 USD");
- // final amount = find.text("-0.00009659 FIRO");
- //
- // final icon = find.byIcon(FeatherIcons.arrowUp);
- //
- // expect(title, findsOneWidget);
- // // expect(price1, findsOneWidget);
- // expect(amount, findsOneWidget);
- // // expect(icon, findsOneWidget);
- // //
- // await tester.pumpAndSettle(const Duration(seconds: 2));
- // //
- // // final price2 = find.text("\$10.00");
- // // expect(price2, findsOneWidget);
- // //
- // // verify(mockManager.addListener(any)).called(1);
- // verify(mockLocaleService.addListener(any)).called(1);
- //
- // verify(mockPrefs.currency).called(1);
- // verify(mockPriceService.getPrice(Coin.firo)).called(1);
- // verify(wallet.coin.ticker).called(1);
- //
- // verify(mockLocaleService.locale).called(1);
- //
- // verifyNoMoreInteractions(mockManager);
- // verifyNoMoreInteractions(mockLocaleService);
- // });
+ final tx = Transaction(
+ txid: "some txid",
+ timestamp: 1648595998,
+ type: TransactionType.outgoing,
+ amount: 100000000,
+ amountString: Amount(
+ rawValue: BigInt.from(100000000),
+ fractionDigits: Coin.firo.decimals,
+ ).toJsonString(),
+ fee: 3794,
+ height: 450123,
+ subType: TransactionSubType.none,
+ isCancelled: false,
+ walletId: '',
+ isLelantus: null,
+ slateId: '',
+ otherData: '',
+ nonce: null,
+ inputs: [],
+ outputs: [],
+ numberOfMessages: null,
+ )..address.value = Address(
+ walletId: "walletId",
+ value: "",
+ publicKey: [],
+ derivationIndex: 0,
+ derivationPath: null,
+ type: AddressType.p2pkh,
+ subType: AddressSubType.receiving);
- // testWidgets("Received unconfirmed tx displays correctly", (tester) async {
- // final mockManager = MockManager();
- // final mockLocaleService = MockLocaleService();
- // final wallets = MockWallets();
- // final mockPrefs = MockPrefs();
- // final mockPriceService = MockPriceService();
- // final mockThemeService = MockThemeService();
- //
- // final tx = Transaction(
- // txid: "some txid",
- // timestamp: 1648595998,
- // type: TransactionType.incoming,
- // amount: 100000000,
- // amountString: Amount(
- // rawValue: BigInt.from(100000000),
- // fractionDigits: Coin.firo.decimals,
- // ).toJsonString(),
- // fee: 3794,
- // height: 450123,
- // subType: TransactionSubType.none,
- // isCancelled: false,
- // walletId: '',
- // isLelantus: null,
- // slateId: '',
- // otherData: '',
- // nonce: null,
- // inputs: [],
- // outputs: [],
- // numberOfMessages: null,
- // )..address.value = Address(
- // walletId: "walletId",
- // value: "",
- // publicKey: [],
- // derivationIndex: 0,
- // derivationPath: null,
- // type: AddressType.p2pkh,
- // subType: AddressSubType.receiving);
- //
- // final CoinServiceAPI wallet = MockFiroWallet();
- //
- // when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
- // (_) => StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // );
- // when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
- // when(mockLocaleService.locale).thenAnswer((_) => "en_US");
- // when(mockPrefs.currency).thenAnswer((_) => "USD");
- // when(mockPrefs.externalCalls).thenAnswer((_) => true);
- // when(mockPriceService.getPrice(Coin.firo))
- // .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
- //
- // when(wallet.coin).thenAnswer((_) => Coin.firo);
- //
- // when(wallets.getManager("wallet-id"))
- // .thenAnswer((realInvocation) => Manager(wallet));
- //
- // when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
- //
- // await tester.pumpWidget(
- // ProviderScope(
- // overrides: [
- // walletsChangeNotifierProvider.overrideWithValue(wallets),
- // localeServiceChangeNotifierProvider
- // .overrideWithValue(mockLocaleService),
- // prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
- // pThemeService.overrideWithValue(mockThemeService),
- // priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
- // ],
- // child: MaterialApp(
- // theme: ThemeData(
- // extensions: [
- // StackColors.fromStackColorTheme(
- // StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // ),
- // ],
- // ),
- // home: TransactionCard(transaction: tx, walletId: "wallet-id"),
- // ),
- // ),
- // );
- //
- // final title = find.text("Received");
- // final amount = Util.isDesktop
- // ? find.text("+1.00000000 FIRO")
- // : find.text("1.00000000 FIRO");
- //
- // expect(title, findsOneWidget);
- // expect(amount, findsOneWidget);
- //
- // await tester.pumpAndSettle(const Duration(seconds: 2));
- //
- // verify(mockLocaleService.addListener(any)).called(1);
- //
- // verify(mockPrefs.currency).called(1);
- // verify(mockPriceService.getPrice(Coin.firo)).called(1);
- // verify(wallet.coin.ticker).called(1);
- //
- // verify(mockLocaleService.locale).called(1);
- //
- // verifyNoMoreInteractions(mockManager);
- // verifyNoMoreInteractions(mockLocaleService);
- // });
+ final CoinServiceAPI wallet = MockFiroWallet();
- // testWidgets("Tap gesture", (tester) async {
- // final mockManager = MockManager();
- // final mockLocaleService = MockLocaleService();
- // final wallets = MockWallets();
- // final mockPrefs = MockPrefs();
- // final mockPriceService = MockPriceService();
- // final mockThemeService = MockThemeService();
- // final navigator = mockingjay.MockNavigator();
- //
- // final tx = Transaction(
- // txid: "some txid",
- // timestamp: 1648595998,
- // type: TransactionType.outgoing,
- // amount: 100000000,
- // amountString: Amount(
- // rawValue: BigInt.from(100000000),
- // fractionDigits: Coin.firo.decimals,
- // ).toJsonString(),
- // fee: 3794,
- // height: 450123,
- // subType: TransactionSubType.none,
- // isCancelled: false,
- // walletId: '',
- // isLelantus: null,
- // slateId: '',
- // otherData: '',
- // nonce: null,
- // inputs: [],
- // outputs: [],
- // numberOfMessages: null,
- // )..address.value = Address(
- // walletId: "walletId",
- // value: "",
- // publicKey: [],
- // derivationIndex: 0,
- // derivationPath: null,
- // type: AddressType.p2pkh,
- // subType: AddressSubType.receiving);
- //
- // final CoinServiceAPI wallet = MockFiroWallet();
- //
- // when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
- // (_) => StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // );
- // when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
- // when(mockLocaleService.locale).thenAnswer((_) => "en_US");
- // when(mockPrefs.currency).thenAnswer((_) => "USD");
- // when(mockPrefs.externalCalls).thenAnswer((_) => true);
- // when(mockPriceService.getPrice(Coin.firo))
- // .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
- //
- // when(wallet.coin).thenAnswer((_) => Coin.firo);
- //
- // when(wallets.getManager("wallet id"))
- // .thenAnswer((realInvocation) => Manager(wallet));
- //
- // when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
- //
- // mockingjay
- // .when(() => navigator.pushNamed("/transactionDetails",
- // arguments: Tuple3(tx, Coin.firo, "wallet id")))
- // .thenAnswer((_) async => {});
- //
- // await tester.pumpWidget(
- // ProviderScope(
- // overrides: [
- // walletsChangeNotifierProvider.overrideWithValue(wallets),
- // localeServiceChangeNotifierProvider
- // .overrideWithValue(mockLocaleService),
- // prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
- // pThemeService.overrideWithValue(mockThemeService),
- // priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
- // ],
- // child: MaterialApp(
- // theme: ThemeData(
- // extensions: [
- // StackColors.fromStackColorTheme(
- // StackTheme.fromJson(
- // json: lightThemeJsonMap,
- // applicationThemesDirectoryPath: "test",
- // ),
- // ),
- // ],
- // ),
- // home: mockingjay.MockNavigatorProvider(
- // navigator: navigator,
- // child: TransactionCard(transaction: tx, walletId: "wallet id")),
- // ),
- // ),
- // );
- //
- // expect(find.byType(GestureDetector), findsOneWidget);
- //
- // await tester.tap(find.byType(GestureDetector));
- // await tester.pump();
- //
- // verify(mockLocaleService.addListener(any)).called(1);
- //
- // verify(mockPrefs.currency).called(2);
- // verify(mockLocaleService.locale).called(4);
- // verify(wallet.coin.ticker).called(1);
- // verify(wallet.storedChainHeight).called(2);
- //
- // verifyNoMoreInteractions(wallet);
- // verifyNoMoreInteractions(mockLocaleService);
- //
- // if (Util.isDesktop) {
- // expect(find.byType(TransactionDetailsView), findsOneWidget);
- // } else {
- // mockingjay
- // .verify(() => navigator.pushNamed("/transactionDetails",
- // arguments: Tuple3(tx, Coin.firo, "wallet id")))
- // .called(1);
- // }
- // });
+ when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
+ (_) => StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ );
+ when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
+ when(mockLocaleService.locale).thenAnswer((_) => "en_US");
+ when(mockPrefs.currency).thenAnswer((_) => "USD");
+ when(mockPrefs.externalCalls).thenAnswer((_) => true);
+ when(mockPriceService.getPrice(Coin.firo))
+ .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
+
+ when(wallet.coin).thenAnswer((_) => Coin.firo);
+
+ when(wallets.getManager("wallet-id"))
+ .thenAnswer((realInvocation) => Manager(wallet));
+
+ when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
+
+ when(mockPrefs.amountUnit(Coin.firo)).thenAnswer(
+ (_) => AmountUnit.normal,
+ );
+ when(mockPrefs.maxDecimals(Coin.firo)).thenAnswer(
+ (_) => 8,
+ );
+
+ when(mockDB.getEthContractSync("")).thenAnswer(
+ (_) => null,
+ );
+ //
+ await tester.pumpWidget(
+ ProviderScope(
+ overrides: [
+ walletsChangeNotifierProvider.overrideWithValue(wallets),
+ localeServiceChangeNotifierProvider
+ .overrideWithValue(mockLocaleService),
+ pThemeService.overrideWithValue(mockThemeService),
+ prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
+ priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService),
+ mainDBProvider.overrideWithValue(mockDB),
+ ],
+ child: MaterialApp(
+ theme: ThemeData(
+ extensions: [
+ StackColors.fromStackColorTheme(
+ StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ ),
+ ],
+ ),
+ home: TransactionCard(transaction: tx, walletId: "wallet-id"),
+ ),
+ ),
+ );
+
+ //
+ final title = find.text("Sent");
+ // final price1 = find.text("0.00 USD");
+ final amount = Util.isDesktop
+ ? find.text("-1.00000000 FIRO")
+ : find.text("1.00000000 FIRO");
+
+ final icon = find.byIcon(FeatherIcons.arrowUp);
+
+ expect(title, findsOneWidget);
+ // expect(price1, findsOneWidget);
+ expect(amount, findsOneWidget);
+ // expect(icon, findsOneWidget);
+ //
+ await tester.pumpAndSettle(const Duration(seconds: 2));
+ //
+ // final price2 = find.text("\$10.00");
+ // expect(price2, findsOneWidget);
+ //
+ // verify(mockManager.addListener(any)).called(1);
+ verify(mockLocaleService.addListener(any)).called(1);
+
+ verify(mockPrefs.currency).called(1);
+ verify(mockPriceService.getPrice(Coin.firo)).called(1);
+ verify(wallet.coin.ticker).called(1);
+
+ verify(mockLocaleService.locale).called(2);
+
+ verifyNoMoreInteractions(mockManager);
+ verifyNoMoreInteractions(mockLocaleService);
+ });
+
+ testWidgets("Anonymized confirmed tx displays correctly", (tester) async {
+ final mockManager = MockManager();
+ final mockLocaleService = MockLocaleService();
+ final wallets = MockWallets();
+ final mockPrefs = MockPrefs();
+ final mockPriceService = MockPriceService();
+ final mockThemeService = MockThemeService();
+ final mockDB = MockMainDB();
+
+ final tx = Transaction(
+ txid: "some txid",
+ timestamp: 1648595998,
+ type: TransactionType.outgoing,
+ amount: 9659,
+ amountString: Amount(
+ rawValue: BigInt.from(9659),
+ fractionDigits: Coin.firo.decimals,
+ ).toJsonString(),
+ fee: 3794,
+ height: 450123,
+ subType: TransactionSubType.mint,
+ isCancelled: false,
+ walletId: '',
+ isLelantus: null,
+ slateId: '',
+ otherData: '',
+ nonce: null,
+ inputs: [],
+ outputs: [],
+ numberOfMessages: null,
+ )..address.value = Address(
+ walletId: "walletId",
+ value: "",
+ publicKey: [],
+ derivationIndex: 0,
+ derivationPath: null,
+ type: AddressType.p2pkh,
+ subType: AddressSubType.receiving);
+
+ final CoinServiceAPI wallet = MockFiroWallet();
+
+ when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
+ (_) => StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ );
+ when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
+ when(mockLocaleService.locale).thenAnswer((_) => "en_US");
+ when(mockPrefs.currency).thenAnswer((_) => "USD");
+ when(mockPrefs.externalCalls).thenAnswer((_) => true);
+ when(mockPriceService.getPrice(Coin.firo))
+ .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
+
+ when(wallet.coin).thenAnswer((_) => Coin.firo);
+ when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
+
+ when(mockPrefs.amountUnit(Coin.firo)).thenAnswer(
+ (_) => AmountUnit.normal,
+ );
+ when(mockPrefs.maxDecimals(Coin.firo)).thenAnswer(
+ (_) => 8,
+ );
+
+ when(mockDB.getEthContractSync("")).thenAnswer(
+ (_) => null,
+ );
+
+ when(wallets.getManager("wallet-id"))
+ .thenAnswer((realInvocation) => Manager(wallet));
+ //
+ await tester.pumpWidget(
+ ProviderScope(
+ overrides: [
+ walletsChangeNotifierProvider.overrideWithValue(wallets),
+ localeServiceChangeNotifierProvider
+ .overrideWithValue(mockLocaleService),
+ prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
+ pThemeService.overrideWithValue(mockThemeService),
+ mainDBProvider.overrideWithValue(mockDB),
+ priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
+ ],
+ child: MaterialApp(
+ theme: ThemeData(
+ extensions: [
+ StackColors.fromStackColorTheme(
+ StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ ),
+ ],
+ ),
+ home: TransactionCard(transaction: tx, walletId: "wallet-id"),
+ ),
+ ),
+ );
+
+ //
+ final title = find.text("Anonymized");
+ // final price1 = find.text("0.00 USD");
+ final amount = find.text("-0.00009659 FIRO");
+
+ final icon = find.byIcon(FeatherIcons.arrowUp);
+
+ expect(title, findsOneWidget);
+ // expect(price1, findsOneWidget);
+ expect(amount, findsOneWidget);
+ // expect(icon, findsOneWidget);
+ //
+ await tester.pumpAndSettle(const Duration(seconds: 2));
+ //
+ // final price2 = find.text("\$10.00");
+ // expect(price2, findsOneWidget);
+ //
+ // verify(mockManager.addListener(any)).called(1);
+ verify(mockLocaleService.addListener(any)).called(1);
+
+ verify(mockPrefs.currency).called(1);
+ verify(mockPriceService.getPrice(Coin.firo)).called(1);
+ verify(wallet.coin.ticker).called(1);
+
+ verify(mockLocaleService.locale).called(2);
+
+ verifyNoMoreInteractions(mockManager);
+ verifyNoMoreInteractions(mockLocaleService);
+ });
+
+ testWidgets("Received unconfirmed tx displays correctly", (tester) async {
+ final mockManager = MockManager();
+ final mockLocaleService = MockLocaleService();
+ final wallets = MockWallets();
+ final mockPrefs = MockPrefs();
+ final mockPriceService = MockPriceService();
+ final mockThemeService = MockThemeService();
+ final mockDB = MockMainDB();
+
+ final tx = Transaction(
+ txid: "some txid",
+ timestamp: 1648595998,
+ type: TransactionType.incoming,
+ amount: 100000000,
+ amountString: Amount(
+ rawValue: BigInt.from(100000000),
+ fractionDigits: Coin.firo.decimals,
+ ).toJsonString(),
+ fee: 3794,
+ height: 450123,
+ subType: TransactionSubType.none,
+ isCancelled: false,
+ walletId: '',
+ isLelantus: null,
+ slateId: '',
+ otherData: '',
+ nonce: null,
+ inputs: [],
+ outputs: [],
+ numberOfMessages: null,
+ )..address.value = Address(
+ walletId: "walletId",
+ value: "",
+ publicKey: [],
+ derivationIndex: 0,
+ derivationPath: null,
+ type: AddressType.p2pkh,
+ subType: AddressSubType.receiving);
+
+ final CoinServiceAPI wallet = MockFiroWallet();
+
+ when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
+ (_) => StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ );
+ when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
+ when(mockLocaleService.locale).thenAnswer((_) => "en_US");
+ when(mockPrefs.currency).thenAnswer((_) => "USD");
+ when(mockPrefs.externalCalls).thenAnswer((_) => true);
+ when(mockPriceService.getPrice(Coin.firo))
+ .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
+
+ when(wallet.coin).thenAnswer((_) => Coin.firo);
+
+ when(wallets.getManager("wallet-id"))
+ .thenAnswer((realInvocation) => Manager(wallet));
+
+ when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
+
+ when(mockPrefs.amountUnit(Coin.firo)).thenAnswer(
+ (_) => AmountUnit.normal,
+ );
+ when(mockPrefs.maxDecimals(Coin.firo)).thenAnswer(
+ (_) => 8,
+ );
+
+ when(mockDB.getEthContractSync("")).thenAnswer(
+ (_) => null,
+ );
+
+ await tester.pumpWidget(
+ ProviderScope(
+ overrides: [
+ walletsChangeNotifierProvider.overrideWithValue(wallets),
+ localeServiceChangeNotifierProvider
+ .overrideWithValue(mockLocaleService),
+ prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
+ pThemeService.overrideWithValue(mockThemeService),
+ mainDBProvider.overrideWithValue(mockDB),
+ priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
+ ],
+ child: MaterialApp(
+ theme: ThemeData(
+ extensions: [
+ StackColors.fromStackColorTheme(
+ StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ ),
+ ],
+ ),
+ home: TransactionCard(transaction: tx, walletId: "wallet-id"),
+ ),
+ ),
+ );
+
+ final title = find.text("Received");
+ final amount = Util.isDesktop
+ ? find.text("+1.00000000 FIRO")
+ : find.text("1.00000000 FIRO");
+
+ expect(title, findsOneWidget);
+ expect(amount, findsOneWidget);
+
+ await tester.pumpAndSettle(const Duration(seconds: 2));
+
+ verify(mockLocaleService.addListener(any)).called(1);
+
+ verify(mockPrefs.currency).called(1);
+ verify(mockPriceService.getPrice(Coin.firo)).called(1);
+ verify(wallet.coin.ticker).called(1);
+
+ verify(mockLocaleService.locale).called(2);
+
+ verifyNoMoreInteractions(mockManager);
+ verifyNoMoreInteractions(mockLocaleService);
+ });
+
+ testWidgets("Tap gesture", (tester) async {
+ final mockManager = MockManager();
+ final mockLocaleService = MockLocaleService();
+ final wallets = MockWallets();
+ final mockPrefs = MockPrefs();
+ final mockPriceService = MockPriceService();
+ final mockThemeService = MockThemeService();
+ final mockDB = MockMainDB();
+ final navigator = mockingjay.MockNavigator();
+
+ final tx = Transaction(
+ txid: "some txid",
+ timestamp: 1648595998,
+ type: TransactionType.outgoing,
+ amount: 100000000,
+ amountString: Amount(
+ rawValue: BigInt.from(100000000),
+ fractionDigits: Coin.firo.decimals,
+ ).toJsonString(),
+ fee: 3794,
+ height: 450123,
+ subType: TransactionSubType.none,
+ isCancelled: false,
+ walletId: '',
+ isLelantus: null,
+ slateId: '',
+ otherData: '',
+ nonce: null,
+ inputs: [],
+ outputs: [],
+ numberOfMessages: null,
+ )..address.value = Address(
+ walletId: "walletId",
+ value: "",
+ publicKey: [],
+ derivationIndex: 0,
+ derivationPath: null,
+ type: AddressType.p2pkh,
+ subType: AddressSubType.receiving);
+
+ final CoinServiceAPI wallet = MockFiroWallet();
+
+ when(mockThemeService.getTheme(themeId: "light")).thenAnswer(
+ (_) => StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ );
+ when(wallet.coin.ticker).thenAnswer((_) => "FIRO");
+ when(mockLocaleService.locale).thenAnswer((_) => "en_US");
+ when(mockPrefs.currency).thenAnswer((_) => "USD");
+ when(mockPrefs.externalCalls).thenAnswer((_) => true);
+ when(mockPriceService.getPrice(Coin.firo))
+ .thenAnswer((realInvocation) => Tuple2(Decimal.ten, 0.00));
+
+ when(wallet.coin).thenAnswer((_) => Coin.firo);
+
+ when(wallets.getManager("wallet id"))
+ .thenAnswer((realInvocation) => Manager(wallet));
+
+ when(wallet.storedChainHeight).thenAnswer((_) => 6000000);
+
+ mockingjay
+ .when(() => navigator.pushNamed("/transactionDetails",
+ arguments: Tuple3(tx, Coin.firo, "wallet id")))
+ .thenAnswer((_) async => {});
+
+ when(mockPrefs.amountUnit(Coin.firo)).thenAnswer(
+ (_) => AmountUnit.normal,
+ );
+ when(mockPrefs.maxDecimals(Coin.firo)).thenAnswer(
+ (_) => 8,
+ );
+
+ when(mockDB.getEthContractSync("")).thenAnswer(
+ (_) => null,
+ );
+
+ await tester.pumpWidget(
+ ProviderScope(
+ overrides: [
+ walletsChangeNotifierProvider.overrideWithValue(wallets),
+ localeServiceChangeNotifierProvider
+ .overrideWithValue(mockLocaleService),
+ prefsChangeNotifierProvider.overrideWithValue(mockPrefs),
+ pThemeService.overrideWithValue(mockThemeService),
+ mainDBProvider.overrideWithValue(mockDB),
+ priceAnd24hChangeNotifierProvider.overrideWithValue(mockPriceService)
+ ],
+ child: MaterialApp(
+ theme: ThemeData(
+ extensions: [
+ StackColors.fromStackColorTheme(
+ StackTheme.fromJson(
+ json: lightThemeJsonMap,
+ applicationThemesDirectoryPath: "test",
+ ),
+ ),
+ ],
+ ),
+ home: mockingjay.MockNavigatorProvider(
+ navigator: navigator,
+ child: TransactionCard(transaction: tx, walletId: "wallet id")),
+ ),
+ ),
+ );
+
+ expect(find.byType(GestureDetector), findsOneWidget);
+
+ await tester.tap(find.byType(GestureDetector));
+ await tester.pump();
+
+ verify(mockLocaleService.addListener(any)).called(1);
+
+ verify(mockPrefs.currency).called(2);
+ verify(mockLocaleService.locale).called(3);
+ verify(wallet.coin.ticker).called(1);
+ verify(wallet.storedChainHeight).called(2);
+
+ verifyNoMoreInteractions(wallet);
+ verifyNoMoreInteractions(mockLocaleService);
+
+ if (Util.isDesktop) {
+ expect(find.byType(TransactionDetailsView), findsOneWidget);
+ } else {
+ mockingjay
+ .verify(() => navigator.pushNamed("/transactionDetails",
+ arguments: Tuple3(tx, Coin.firo, "wallet id")))
+ .called(1);
+ }
+ });
}
diff --git a/test/widget_tests/transaction_card_test.mocks.dart b/test/widget_tests/transaction_card_test.mocks.dart
index 336fd5af7..9f2817de9 100644
--- a/test/widget_tests/transaction_card_test.mocks.dart
+++ b/test/widget_tests/transaction_card_test.mocks.dart
@@ -5,40 +5,43 @@
// @dart=2.19
// ignore_for_file: no_leading_underscores_for_library_prefixes
-import 'dart:async' as _i18;
-import 'dart:typed_data' as _i33;
-import 'dart:ui' as _i20;
+import 'dart:async' as _i19;
+import 'dart:typed_data' as _i34;
+import 'dart:ui' as _i21;
-import 'package:decimal/decimal.dart' as _i29;
+import 'package:decimal/decimal.dart' as _i30;
import 'package:flutter/foundation.dart' as _i4;
import 'package:flutter_riverpod/flutter_riverpod.dart' as _i5;
+import 'package:isar/isar.dart' as _i16;
import 'package:mockito/mockito.dart' as _i1;
import 'package:stackwallet/db/isar/main_db.dart' as _i14;
import 'package:stackwallet/electrumx_rpc/cached_electrumx.dart' as _i13;
import 'package:stackwallet/electrumx_rpc/electrumx.dart' as _i12;
import 'package:stackwallet/models/balance.dart' as _i9;
-import 'package:stackwallet/models/isar/models/isar_models.dart' as _i21;
-import 'package:stackwallet/models/isar/stack_theme.dart' as _i32;
+import 'package:stackwallet/models/isar/models/block_explorer.dart' as _i36;
+import 'package:stackwallet/models/isar/models/contact_entry.dart' as _i35;
+import 'package:stackwallet/models/isar/models/isar_models.dart' as _i22;
+import 'package:stackwallet/models/isar/stack_theme.dart' as _i33;
import 'package:stackwallet/models/models.dart' as _i8;
-import 'package:stackwallet/models/signing_data.dart' as _i23;
+import 'package:stackwallet/models/signing_data.dart' as _i24;
import 'package:stackwallet/services/coins/coin_service.dart' as _i7;
-import 'package:stackwallet/services/coins/firo/firo_wallet.dart' as _i22;
+import 'package:stackwallet/services/coins/firo/firo_wallet.dart' as _i23;
import 'package:stackwallet/services/coins/manager.dart' as _i6;
-import 'package:stackwallet/services/locale_service.dart' as _i24;
+import 'package:stackwallet/services/locale_service.dart' as _i25;
import 'package:stackwallet/services/node_service.dart' as _i3;
-import 'package:stackwallet/services/notes_service.dart' as _i30;
-import 'package:stackwallet/services/price_service.dart' as _i28;
+import 'package:stackwallet/services/notes_service.dart' as _i31;
+import 'package:stackwallet/services/price_service.dart' as _i29;
import 'package:stackwallet/services/transaction_notification_tracker.dart'
as _i11;
-import 'package:stackwallet/services/wallets.dart' as _i16;
+import 'package:stackwallet/services/wallets.dart' as _i17;
import 'package:stackwallet/services/wallets_service.dart' as _i2;
-import 'package:stackwallet/themes/theme_service.dart' as _i31;
+import 'package:stackwallet/themes/theme_service.dart' as _i32;
import 'package:stackwallet/utilities/amount/amount.dart' as _i10;
-import 'package:stackwallet/utilities/amount/amount_unit.dart' as _i27;
-import 'package:stackwallet/utilities/enums/backup_frequency_type.dart' as _i26;
-import 'package:stackwallet/utilities/enums/coin_enum.dart' as _i17;
-import 'package:stackwallet/utilities/enums/sync_type_enum.dart' as _i25;
-import 'package:stackwallet/utilities/prefs.dart' as _i19;
+import 'package:stackwallet/utilities/amount/amount_unit.dart' as _i28;
+import 'package:stackwallet/utilities/enums/backup_frequency_type.dart' as _i27;
+import 'package:stackwallet/utilities/enums/coin_enum.dart' as _i18;
+import 'package:stackwallet/utilities/enums/sync_type_enum.dart' as _i26;
+import 'package:stackwallet/utilities/prefs.dart' as _i20;
import 'package:tuple/tuple.dart' as _i15;
// ignore_for_file: type=lint
@@ -198,10 +201,31 @@ class _FakeTuple2_13
> get transactions => (super.noSuchMethod(
+ _i19.Future
> get transactions => (super.noSuchMethod(
Invocation.getter(#transactions),
returnValue:
- _i18.Future
>.value(<_i21.Transaction>[]),
- ) as _i18.Future
>);
+ _i19.Future
>.value(<_i22.Transaction>[]),
+ ) as _i19.Future
>);
@override
- _i18.Future
> get utxos => (super.noSuchMethod(
+ _i19.Future
> get utxos => (super.noSuchMethod(
Invocation.getter(#utxos),
- returnValue: _i18.Future
>.value(<_i21.UTXO>[]),
- ) as _i18.Future
>);
+ returnValue: _i19.Future
>.value(<_i22.UTXO>[]),
+ ) as _i19.Future
>);
@override
set walletName(String? newName) => super.noSuchMethod(
Invocation.setter(
@@ -531,15 +555,15 @@ class MockManager extends _i1.Mock implements _i6.Manager {
returnValue: '',
) as String);
@override
- _i18.Future
> get mnemonic => (super.noSuchMethod(
+ _i19.Future
> get mnemonic => (super.noSuchMethod(
Invocation.getter(#mnemonic),
- returnValue: _i18.Future
>.value(
>);
+ returnValue: _i19.Future
>.value(
>);
@override
- _i18.Future