public async Task GetAsyncReturnsRobotTextWhenApiReturnsRobotText()
        {
            const string ExpectedResponseText = "SomeResponseText";
            var          httpResponse         = new HttpResponseMessage
            {
                StatusCode = HttpStatusCode.OK,
                Content    = new StringContent(ExpectedResponseText),
            };

            var fakeHttpRequestSender = A.Fake <IFakeHttpRequestSender>();

            A.CallTo(() => fakeHttpRequestSender.Send(A <HttpRequestMessage> .Ignored)).Returns(httpResponse);

            var fakeHttpMessageHandler = new FakeHttpMessageHandler(fakeHttpRequestSender);
            var httpClient             = new HttpClient(fakeHttpMessageHandler)
            {
                BaseAddress = new Uri("http://SomeDummyCDNUrl")
            };

            var robotService = new ApplicationRobotService(httpClient);
            var model        = new ApplicationRobotModel {
                BearerToken = "SomeBearerToken"
            };

            var result = await robotService.GetAsync(model);

            Assert.Equal(ExpectedResponseText, result);

            httpResponse.Dispose();
            httpClient.Dispose();
            fakeHttpMessageHandler.Dispose();
        }
        public async Task GetAsyncReturnsNullIfModelIsNull()
        {
            var robotService = new ApplicationRobotService(defaultHttpClient);

            var result = await robotService.GetAsync(null);

            Assert.Null(result);
        }
        public async Task GetAsyncReturnsExceptionIfNoRobotsTextFound()
        {
            var robotService = new ApplicationRobotService(defaultHttpClient);

            var model = new ApplicationRobotModel {
                BearerToken = "SomeBearerToken"
            };
            var exceptionResult = await Assert.ThrowsAsync <InvalidOperationException>(async() => await robotService.GetAsync(model));

            Assert.StartsWith("An invalid request URI was provided.", exceptionResult.Message, StringComparison.OrdinalIgnoreCase);
        }