using Moq; using Ocelot.Configuration; using Ocelot.Configuration.Builder; using Ocelot.Logging; using Ocelot.Requester.QoS; using Shouldly; using System.Collections.Generic; using TestStack.BDDfy; using Xunit; namespace Ocelot.UnitTests.Requester { public class QoSProviderFactoryTests { private readonly IQoSProviderFactory _factory; private ReRoute _reRoute; private IQoSProvider _result; private Mock _loggerFactory; private Mock _logger; public QoSProviderFactoryTests() { _logger = new Mock(); _loggerFactory = new Mock(); _loggerFactory .Setup(x => x.CreateLogger()) .Returns(_logger.Object); _factory = new QoSProviderFactory(_loggerFactory.Object); } [Fact] public void should_return_no_qos_provider() { var reRoute = new ReRouteBuilder() .WithUpstreamHttpMethod(new List { "get" }) .WithIsQos(false) .Build(); this.Given(x => x.GivenAReRoute(reRoute)) .When(x => x.WhenIGetTheQoSProvider()) .Then(x => x.ThenTheQoSProviderIsReturned()) .BDDfy(); } [Fact] public void should_return_polly_qos_provider() { var qosOptions = new QoSOptionsBuilder() .WithTimeoutValue(100) .WithDurationOfBreak(100) .WithExceptionsAllowedBeforeBreaking(100) .Build(); var reRoute = new ReRouteBuilder() .WithUpstreamHttpMethod(new List { "get" }) .WithIsQos(true) .WithQosOptions(qosOptions) .Build(); this.Given(x => x.GivenAReRoute(reRoute)) .When(x => x.WhenIGetTheQoSProvider()) .Then(x => x.ThenTheQoSProviderIsReturned()) .BDDfy(); } private void GivenAReRoute(ReRoute reRoute) { _reRoute = reRoute; } private void WhenIGetTheQoSProvider() { _result = _factory.Get(_reRoute); } private void ThenTheQoSProviderIsReturned() { _result.ShouldBeOfType(); } } }