mirror of
https://github.com/aljazceru/btcpayserver.git
synced 2026-02-23 07:04:26 +01:00
Improve tests to not create new HttpClient every times
This commit is contained in:
@@ -182,7 +182,7 @@ namespace BTCPayServer.Tests
|
||||
|
||||
var factory = UnitTest1.CreateBTCPayRateFactory();
|
||||
var fetcher = new RateFetcher(factory);
|
||||
var httpClientFactory = new MockHttpClientFactory();
|
||||
var httpClientFactory = TestUtils.CreateHttpFactory();
|
||||
var changellyController = new ChangellyController(
|
||||
new ChangellyClientProvider(tester.PayTester.StoreRepository, httpClientFactory),
|
||||
tester.NetworkProvider, fetcher);
|
||||
@@ -213,7 +213,7 @@ namespace BTCPayServer.Tests
|
||||
|
||||
var factory = UnitTest1.CreateBTCPayRateFactory();
|
||||
var fetcher = new RateFetcher(factory);
|
||||
var httpClientFactory = new MockHttpClientFactory();
|
||||
var httpClientFactory = TestUtils.CreateHttpFactory();
|
||||
var changellyController = new ChangellyController(
|
||||
new ChangellyClientProvider(tester.PayTester.StoreRepository, httpClientFactory),
|
||||
tester.NetworkProvider, fetcher);
|
||||
@@ -243,12 +243,4 @@ namespace BTCPayServer.Tests
|
||||
Assert.Equal(20, ChangellyCalculationHelper.ComputeCorrectAmount(10, 1, 2));
|
||||
}
|
||||
}
|
||||
|
||||
public class MockHttpClientFactory : IHttpClientFactory
|
||||
{
|
||||
public HttpClient CreateClient(string name)
|
||||
{
|
||||
return new HttpClient();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,8 @@ using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Xunit.Sdk;
|
||||
using System.Linq;
|
||||
using System.Net.Http;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace BTCPayServer.Tests
|
||||
{
|
||||
@@ -104,5 +106,12 @@ namespace BTCPayServer.Tests
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
internal static IHttpClientFactory CreateHttpFactory()
|
||||
{
|
||||
var services = new ServiceCollection();
|
||||
services.AddHttpClient();
|
||||
return services.BuildServiceProvider().GetRequiredService<IHttpClientFactory>();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2681,6 +2681,7 @@ noninventoryitem:
|
||||
public void CanQueryDirectProviders()
|
||||
{
|
||||
var factory = CreateBTCPayRateFactory();
|
||||
var directlySupported = factory.GetSupportedExchanges().Where(s => s.Source == RateSource.Direct).Select(s => s.Id).ToHashSet();
|
||||
var all = string.Join("\r\n", factory.GetSupportedExchanges().Select(e => e.Id).ToArray());
|
||||
foreach (var result in factory
|
||||
.Providers
|
||||
@@ -2712,6 +2713,10 @@ noninventoryitem:
|
||||
&& e.BidAsk.Bid > 1.0m // 1BTC will always be more than 1USD
|
||||
);
|
||||
}
|
||||
// We are not showing a directly implemented exchange as directly implemented in the UI
|
||||
// we need to modify the AvailableRateProvider
|
||||
if (result.ExpectedName != "coinaverage")
|
||||
Assert.Contains(result.ExpectedName, directlySupported);
|
||||
}
|
||||
// Kraken emit one request only after first GetRates
|
||||
factory.Providers["kraken"].GetRatesAsync(default).GetAwaiter().GetResult();
|
||||
@@ -2782,7 +2787,7 @@ noninventoryitem:
|
||||
|
||||
public static RateProviderFactory CreateBTCPayRateFactory()
|
||||
{
|
||||
return new RateProviderFactory(new MockHttpClientFactory());
|
||||
return new RateProviderFactory(TestUtils.CreateHttpFactory());
|
||||
}
|
||||
|
||||
class SpyRateProvider : IRateProvider
|
||||
|
||||
Reference in New Issue
Block a user