diff --git a/BTCPayServer.Rating/Providers/YadioRateProvider.cs b/BTCPayServer.Rating/Providers/YadioRateProvider.cs index ed1652583..5f331cbaa 100644 --- a/BTCPayServer.Rating/Providers/YadioRateProvider.cs +++ b/BTCPayServer.Rating/Providers/YadioRateProvider.cs @@ -30,10 +30,10 @@ namespace BTCPayServer.Services.Rates var list = new List(); foreach (var item in results) { - string name = ((JProperty)item).Name; - var value = results[name].Value(); - list.Add(new PairRate(new CurrencyPair("BTC", name), new BidAsk(value))); + var value = results[name].Value(); + if (value.HasValue) + list.Add(new PairRate(new CurrencyPair("BTC", name), new BidAsk(value.Value))); } return list.ToArray(); diff --git a/BTCPayServer.Tests/ThirdPartyTests.cs b/BTCPayServer.Tests/ThirdPartyTests.cs index f88706fa2..768ec5669 100644 --- a/BTCPayServer.Tests/ThirdPartyTests.cs +++ b/BTCPayServer.Tests/ThirdPartyTests.cs @@ -138,13 +138,14 @@ namespace BTCPayServer.Tests var factory = FastTests.CreateBTCPayRateFactory(); var directlySupported = factory.AvailableRateProviders.Where(s => s.Source == RateSource.Direct) .Select(s => s.Id).ToHashSet(); - foreach (var result in factory + var providerList = factory .Providers .Where(p => p.Value is BackgroundFetcherRateProvider bf && !(bf.Inner is CoinGeckoRateProvider cg && cg.UnderlyingExchange != null)) .Select(p => (ExpectedName: p.Key, ResultAsync: p.Value.GetRatesAsync(default), Fetcher: (BackgroundFetcherRateProvider)p.Value)) - .ToList()) + .ToList(); + foreach (var result in providerList) { var name = result.ExpectedName; if (brokenShitcoinCasinos.Contains(name)) @@ -207,6 +208,9 @@ namespace BTCPayServer.Tests Assert.Contains(exchangeRates.ByExchange[name], e => e.CurrencyPair == new CurrencyPair("BTC", "LBP") && e.BidAsk.Bid > 1.0m); // 1 BTC will always be more than 1 LBP (I hope) + Assert.Contains(exchangeRates.ByExchange[name], + e => e.CurrencyPair == new CurrencyPair("BTC", "XPT") && + e.BidAsk.Bid > 1.0m); // 1 BTC will always be more than 1 LBP (I hope) } else if (name == "bitmynt") {