public async Task <FlightOfferResponse> GetFlightOffersAsync(string apiKey, FlightOfferRequest request)
        {
            var apiConnection = new ApiConnection
            {
                Url     = new Uri("https://api.transavia.com"),
                Version = ApiVersion.V1,
                Key     = apiKey
            };

            return(await this.httpService.GetAsync <FlightOfferResponse>(apiConnection, "flightoffers", request));
        }
        public async Task CanGetFlightOffersAsync()
        {
            // Arrange
            const string apiKey  = "YOUR_API_KEY";
            var          request = new FlightOfferRequest {
                Origin = "AMS", OriginDepartureDate = "201508", Limit = 5
            };

            // Act
            var flightOffersClient  = FlightOffersClientFactory.CreateFlightOffersClient();
            var flightOfferResponse = await flightOffersClient.GetFlightOffersAsync(apiKey, request);

            // Assert
            flightOfferResponse.ShouldNotBeNull();
            flightOfferResponse.FlightOffer.ShouldNotBeEmpty();
            AssertValidFlightOffers(flightOfferResponse.FlightOffer);
        }
        public async Task CanGetFlightOffersAsyncViaIoc()
        {
            // Arrange
            const string apiKey  = "YOUR_API_KEY";
            var          request = new FlightOfferRequest {
                Origin = "AMS", OriginDepartureDate = "201508", Limit = 5
            };

            // Act
            var container           = IocHelper.GetContainerForAssembly(typeof(IFlightOffersClient).Assembly);
            var flightOffersClient  = container.GetInstance <IFlightOffersClient>();
            var flightOfferResponse = await flightOffersClient.GetFlightOffersAsync(apiKey, request);

            // Assert
            flightOfferResponse.ShouldNotBeNull();
            flightOfferResponse.FlightOffer.ShouldNotBeEmpty();
            AssertValidFlightOffers(flightOfferResponse.FlightOffer);
        }
        public async Task CanGetFlightOffersForReturnFlightsAsync()
        {
            // Arrange
            const string apiKey  = "YOUR_API_KEY";
            var          request = new FlightOfferRequest {
                Origin = "AMS", OriginDepartureDate = "201508", DestinationDepartureDate = "201509", Limit = 5
            };

            // Act
            var flightOffersClient  = FlightOffersClientFactory.CreateFlightOffersClient();
            var flightOfferResponse = await flightOffersClient.GetFlightOffersAsync(apiKey, request);

            // Assert
            flightOfferResponse.ShouldNotBeNull();
            flightOfferResponse.FlightOffer.ShouldNotBeEmpty();
            AssertValidFlightOffers(flightOfferResponse.FlightOffer);

            var hasOnlyReturnFlights = flightOfferResponse.FlightOffer.All(f => f.InboundFlight != null);

            hasOnlyReturnFlights.ShouldBeTrue();
        }
 public async Task <FlightOfferResponse> GetFlightOffersAsync(IApiConnection apiConnection, FlightOfferRequest request)
 {
     return(await this.httpService.GetAsync <FlightOfferResponse>(apiConnection, "flightoffers", request));
 }