private static NameResponse GetRandomNameResponse(string name, string surname, string gender, string region, HttpStatusCode statusCode = HttpStatusCode.OK)
        {
            var handlerMock = CreateMessageHandlerMock(statusCode, MakeJson(name, surname, gender, region), ExpectedUri);
            var feed        = new RandomNameJsonFeed(handlerMock.Object);

            return(feed.GetRandomNameResponse());
        }
        public void GetRandomNameResponseWorksThrowsWhenJson()
        {
            var handlerMock = CreateMessageHandlerMock(HttpStatusCode.OK, "This is not { valid json ].", ExpectedUri);
            var feed        = new RandomNameJsonFeed(handlerMock.Object);

            var exception = Assert.Throws <JsonFeedException>(() => feed.GetRandomNameResponse());

            StringAssert.Contains($"Failed to deserialize response ({ExpectedUri}) due to error", exception.Message);
            StringAssert.Contains("Unexpected character", exception.Message); // This snippet is from Newtonsoft, so it could potentially change in future versions.
        }
        public void GetRandomNameResponseWorksAgainstLiveApi()
        {
            var feed    = new RandomNameJsonFeed();
            var nameDto = feed.GetRandomNameResponse();

            Assert.IsNotNull(nameDto, "Returned DTO was null.");

            // Since we don't know what the live server will return, just do a very simple test.
            Assert.IsFalse(string.IsNullOrWhiteSpace(nameDto.FirstName), "No FirstName was returned.");
            Assert.IsFalse(string.IsNullOrWhiteSpace(nameDto.Surname), "No Surname was returned.");
        }