diff --git a/BTCPayServer.Tests/BTCPayServerTester.cs b/BTCPayServer.Tests/BTCPayServerTester.cs index 8d3fac4c4..2d23825b9 100644 --- a/BTCPayServer.Tests/BTCPayServerTester.cs +++ b/BTCPayServer.Tests/BTCPayServerTester.cs @@ -97,7 +97,12 @@ namespace BTCPayServer.Tests .UseConfiguration(conf) .ConfigureServices(s => { - s.AddSingleton(new MockRateProvider(new Rate("USD", 5000m))); + var mockRates = new MockRateProviderFactory(); + var btc = new MockRateProvider("BTC", new Rate("USD", 5000m)); + var ltc = new MockRateProvider("LTC", new Rate("USD", 500m)); + mockRates.AddMock(btc); + mockRates.AddMock(ltc); + s.AddSingleton(mockRates); s.AddLogging(l => { l.SetMinimumLevel(LogLevel.Information) diff --git a/BTCPayServer/Services/Rates/MockRateProvider.cs b/BTCPayServer/Services/Rates/MockRateProvider.cs index 6cd8dadb0..c735c980a 100644 --- a/BTCPayServer/Services/Rates/MockRateProvider.cs +++ b/BTCPayServer/Services/Rates/MockRateProvider.cs @@ -6,17 +6,38 @@ using System.Threading.Tasks; namespace BTCPayServer.Services.Rates { + public class MockRateProviderFactory : IRateProviderFactory + { + List _Mocks = new List(); + public MockRateProviderFactory() + { + + } + + public void AddMock(MockRateProvider mock) + { + _Mocks.Add(mock); + } + public IRateProvider GetRateProvider(BTCPayNetwork network) + { + return _Mocks.FirstOrDefault(m => m.CryptoCode == network.CryptoCode); + } + } public class MockRateProvider : IRateProvider { List _Rates; - public MockRateProvider(params Rate[] rates) + public string CryptoCode { get; } + + public MockRateProvider(string cryptoCode, params Rate[] rates) { _Rates = new List(rates); + CryptoCode = cryptoCode; } - public MockRateProvider(List rates) + public MockRateProvider(string cryptoCode, List rates) { _Rates = rates; + CryptoCode = cryptoCode; } public Task GetRateAsync(string currency) {