public async Task GetPlanetsAsync_IsSuccessStatusCode_ReturnsPlanets()
        {
            //Arrange
            var expected = new List <Planet>();
            var mapper   = Substitute.For <IMapper>();

            mapper.Map <IEnumerable <Planet> >(Arg.Any <StarWarsPlanetsResponse>()).Returns(expected);

            var client = MockHttpClientHelper.GetHttpClient("", HttpStatusCode.OK);

            var sut = new StarWarsPlanetsService(client, mapper);

            //Act
            var result = await sut.GetPlanetsAsync();

            //Assert
            Assert.Equal(expected, result.Planets);
        }
        public async Task GetPlanetsAsync_NotIsSuccessStatusCode_ThrowsExternalException()
        {
            //Arrange
            var planets         = new List <Planet>();
            var expectedMessage = "We're having problems with our StarWars Data Provider";

            var mapper = Substitute.For <IMapper>();

            mapper.Map <IEnumerable <Planet> >(Arg.Any <StarWarsPlanetsResponse>()).Returns(planets);

            var client = MockHttpClientHelper.GetHttpClient("", HttpStatusCode.BadRequest);

            var sut = new StarWarsPlanetsService(client, mapper);

            //Act
            var exception = await Assert.ThrowsAsync <ExternalException>(async() => await sut.GetPlanetsAsync());

            //Assert
            Assert.Equal(expectedMessage, exception.Message);
        }