Ejemplo n.º 1
0
        public void BookPlaceAsyncWithValidParametersExpectPlaceBooked()
        {
            UzContext      context        = _uzClient.GetUZContextAsync().Result;
            TrainsResponse trainsResponse = GetTrains(context, KievStationId, LvovStatinId, DateTime.Today.AddDays(DaysOffset));

            TrainsResponse.Train train          = trainsResponse.Trains.First();
            WagonsResponse       wagonsResponse = _uzClient.GetWagonsAsync(context, KievStationId, LvovStatinId, train.StationFrom.DateTime, train.TrainNumber, train.TrainType, train.Wagons.First().TypeCode).Result;

            WagonsResponse.Wagon wagon          = wagonsResponse.Wagons.First();
            PlacesResponse       placesResponse = GetPlaces(context, KievStationId, LvovStatinId, train.StationFrom.DateTime, train.TrainNumber, wagon.Number, wagon.CoachClass, wagon.CoachType);

            BookPlacesResponse bookPlaceResult = BookPlace(context,
                                                           KievStationId,
                                                           LvovStatinId,
                                                           DateTime.Today.AddDays(DaysOffset),
                                                           train.TrainNumber,
                                                           wagon.Number,
                                                           wagon.CoachClass,
                                                           wagon.TypeCode,
                                                           placesResponse.Places.First(),
                                                           placesResponse.PlaceType,
                                                           "Валера",
                                                           "Топор");

            Assert.IsFalse(bookPlaceResult.IsError);
        }
Ejemplo n.º 2
0
        // POST api/wagons
        public async Task <IHttpActionResult> Post([FromBody] WagonsRequestDto requestDto)
        {
            UzContext context = await UZ.GetUZContextAsync();

            WagonsResponse wagons = await UZ.GetWagonsAsync(context, requestDto.StationFromId, requestDto.StationToId, requestDto.DateTime,
                                                            requestDto.TrainNumber, requestDto.TrainType, requestDto.WagonType);

            return(Json(wagons));
        }
Ejemplo n.º 3
0
        private async Task <ICollection <ResponseWagonWithPlaceInfo> > GetWagons(UzContext uzContext, TrainsResponse.Train train, string wagonTypeId, Request request)
        {
            WagonsResponse wagonsResponse =
                await _uzClient.GetWagonsAsync(uzContext, train.StationFrom.Id,
                                               train.StationTo.Id,
                                               train.StationFrom.DateTime,
                                               train.TrainNumber, train.TrainType, wagonTypeId);

            return(await FilterWagonsByAvailablePlaces(uzContext, train, wagonsResponse, request));
        }
Ejemplo n.º 4
0
        public void GetWagonsAsyncWithInvalidTrainNumberExpectNoWagons()
        {
            UzContext      context        = _uzClient.GetUZContextAsync().Result;
            TrainsResponse trainsResponse = GetTrains(context, KievStationId, LvovStatinId, DateTime.Today.AddDays(DaysOffset));

            TrainsResponse.Train train = trainsResponse.Trains.First();

            WagonsResponse wagonsResponse = GetWagons(context,
                                                      KievStationId,
                                                      LvovStatinId,
                                                      train.StationFrom.DateTime,
                                                      "invalid_train",
                                                      train.TrainType,
                                                      train.Wagons.First().TypeCode);

            CollectionAssert.IsEmpty(wagonsResponse.Wagons);
        }
Ejemplo n.º 5
0
        public async Task <WagonsResponse> GetWagonsAsync(UzContext context, int stationFromId, int stationToId, DateTime date, string trainNumber, int trainType, string wagonTypeCode)
        {
            var content = new FormUrlEncodedContent(
                new Dictionary <string, string> {
                { "station_id_from", stationFromId.ToString() },
                { "station_id_till", stationToId.ToString() },
                { "date_dep", date.ToUnixTimestamp().ToString(CultureInfo.InvariantCulture) },
                { "train", trainNumber },
                { "model", trainType.ToString() },
                { "coach_type", wagonTypeCode },
                { "round_trip", "0" },
                { "another_ec", "0" }
            });

            WagonsResponse wagonsResponse = await ExecutePostRequestAsync(context, UrlWagons, content, ResponseFormatter.FormatWagons);

            return(wagonsResponse);
        }
Ejemplo n.º 6
0
        public void GetPlacesAsyncWithInvalidCoachTypeExpectNoPlaces()
        {
            UzContext      context        = _uzClient.GetUZContextAsync().Result;
            TrainsResponse trainsResponse = GetTrains(context, KievStationId, LvovStatinId, DateTime.Today.AddDays(DaysOffset));

            TrainsResponse.Train train          = trainsResponse.Trains.First();
            WagonsResponse       wagonsResponse = _uzClient.GetWagonsAsync(context, KievStationId, LvovStatinId, train.StationFrom.DateTime, train.TrainNumber, train.TrainType, train.Wagons.First().TypeCode).Result;

            WagonsResponse.Wagon wagon = wagonsResponse.Wagons.First();

            PlacesResponse placesResponse = GetPlaces(context,
                                                      KievStationId,
                                                      LvovStatinId,
                                                      DateTime.Now.AddDays(-1),
                                                      train.TrainNumber,
                                                      wagon.Number,
                                                      wagon.CoachClass,
                                                      int.MaxValue);

            CollectionAssert.IsEmpty(placesResponse.Places);
        }
Ejemplo n.º 7
0
        public void GetPlacesAsyncWithValidParametersExpectPlaces()
        {
            UzContext      context        = _uzClient.GetUZContextAsync().Result;
            TrainsResponse trainsResponse = GetTrains(context, KievStationId, LvovStatinId, DateTime.Today.AddDays(DaysOffset));

            TrainsResponse.Train train          = trainsResponse.Trains.First();
            WagonsResponse       wagonsResponse = _uzClient.GetWagonsAsync(context, KievStationId, LvovStatinId, train.StationFrom.DateTime, train.TrainNumber, train.TrainType, train.Wagons.First().TypeCode).Result;

            WagonsResponse.Wagon wagon = wagonsResponse.Wagons.First();

            PlacesResponse placesResponse = GetPlaces(context,
                                                      KievStationId,
                                                      LvovStatinId,
                                                      train.StationFrom.DateTime,
                                                      train.TrainNumber,
                                                      wagon.Number,
                                                      wagon.CoachClass,
                                                      wagon.CoachType);

            Assert.IsFalse(string.IsNullOrWhiteSpace(placesResponse.PlaceType));
            CollectionAssert.IsNotEmpty(placesResponse.Places);
        }
Ejemplo n.º 8
0
        private async Task <ICollection <ResponseWagonWithPlaceInfo> > FilterWagonsByAvailablePlaces(UzContext uzContext, TrainsResponse.Train train, WagonsResponse wagonsResponse, Request request)
        {
            var wagons = new List <ResponseWagonWithPlaceInfo>();

            foreach (WagonsResponse.Wagon wagon in wagonsResponse.Wagons)
            {
                PlacesResponse placesResponse = await GetPlacesAsync(uzContext, train, wagon, request);

                bool isPlaceAvailable = IsPlaceAvailable(placesResponse, request);
                if (isPlaceAvailable)
                {
                    ResponseWagonWithPlaceInfo wagonWithPlaceInfo = ExtendResponseWagonWithPlaceInfo(wagon, placesResponse, request);
                    wagons.Add(wagonWithPlaceInfo);
                }
            }
            return(wagons);
        }