public static AddReservationCommand ToServiceCommand(AddReservationRequest apiRequest)
        {
            if (apiRequest == null)
            {
                return(null);
            }

            return(new AddReservationCommand(apiRequest.ProductId, apiRequest.Quantity));
        }
        public async Task <IActionResult> AddReservation(AddReservationRequest model)
        {
            var resource = await _reservationService.AddNewReservation(_mapper.Map <AddReservationCommand>(model));

            var uri = $"reservation/{resource.Id}";

            return(Created(uri, new AddReservationResponse
            {
                Id = resource.Id,
                Uri = uri,
            }));
        }
Esempio n. 3
0
        public async Task <IActionResult> AddReservation([FromBody] AddReservationRequest addReservationRequest)
        {
            var registeredLeagues = await pokeDexClient.GetRegisteredLeaguesForTrainer(addReservationRequest.trainerId);

            if (!registeredLeagues.Contains("Indigo"))
            {
                return(new StatusCodeResult(403));
            }

            await pokeGymRepository.CreateReservationAsync(addReservationRequest.trainerId, addReservationRequest.ClassId);

            return(new NoContentResult());
        }
Esempio n. 4
0
        public async void AddReservationTest()
        {
            // Arrange
            var trainerId             = (await context.Reservations.FirstOrDefaultAsync()).TrainerId;
            var classId               = 3;
            var beginningReservations = await context.Reservations.Where(x => x.TrainerId == trainerId).ToListAsync();

            var addReservationRequest = new AddReservationRequest()
            {
                trainerId = trainerId,
                ClassId   = classId
            };
            var requestBodyContent = new StringContent(
                JsonConvert.SerializeObject(addReservationRequest),
                Encoding.UTF8,
                "application/json"
                );

            fluentMockServer
            .Given(
                Request.Create().WithPath($"/trainers/{trainerId}").UsingGet()
                )
            .RespondWith(
                Response.Create()
                .WithStatusCode(200)
                .WithHeader("Content-Type", "application/json")
                .WithBody("[\"Joto\", \"Indigo\"]")
                );

            // Act
            var response = await client.PostAsync(RouteConstants.RESERVATIONS_ROUTE, requestBodyContent);

            // Assert
            Assert.Equal(StatusCodes.Status204NoContent, (int)response.StatusCode);

            var updatedReservations = await context.Reservations.Where(x => x.TrainerId == trainerId).ToListAsync();

            Assert.Equal(beginningReservations.Count + 1, updatedReservations.Count);

            var newReservation = await context.Reservations.Where(x => x.TrainerId == trainerId && x.ClassId == classId).ToListAsync();

            Assert.Single(newReservation);

            Assert.Single(fluentMockServer.FindLogEntries(Request.Create().WithPath($"/trainers/{trainerId}").UsingGet()));
            Assert.Single(fluentMockServer.LogEntries);
        }