public async Task RetryAfterIsNotSetWhenTimeSpanNotSet()
        {
            var controller = new DummyController()
            {
                Configuration = new HttpConfiguration(),
                Request       = new HttpRequestMessage()
            };

            var actionResult = new ServiceUnavailableResult(controller, new TimeSpan());
            var response     = await actionResult.ExecuteAsync(new CancellationToken());

            response.Headers.RetryAfter.Should().BeNull("because the response should not specify the Retry-After");
        }
        public async Task HttpStatusCodeIsCorrect()
        {
            var controller = new DummyController()
            {
                Configuration = new HttpConfiguration(),
                Request       = new HttpRequestMessage()
            };

            var actionResult = new ServiceUnavailableResult(controller, TimeSpan.FromSeconds(5));
            var response     = await actionResult.ExecuteAsync(new CancellationToken());

            response.StatusCode.Should().Be(HttpStatusCode.ServiceUnavailable, "because the result should set the provided status code");
        }
        public async Task RetryAfterIsSetOnResponse()
        {
            var controller = new DummyController()
            {
                Configuration = new HttpConfiguration(),
                Request       = new HttpRequestMessage()
            };

            var retryAfter   = TimeSpan.FromSeconds(5);
            var actionResult = new ServiceUnavailableResult(controller, retryAfter);
            var response     = await actionResult.ExecuteAsync(new CancellationToken());

            response.Headers.RetryAfter.Should().NotBeNull("Retry-After", "because the response should specify the Retry-After");
            response.Headers.RetryAfter.Delta.Should().Be(retryAfter, "because the duration should match the provided TimeSpan");
        }