예제 #1
0
        public async Task Batch_CreateReservation_Success()
        {
            try
            {
                // Arrange
                var now     = DateTime.UtcNow;
                var request = new CreateBatchReservationRequest()
                {
                    DeployType  = DeployType.DevelopmentStaging.NumericValue(),
                    ServerTypes = new [] { ServerType.AccountApi, ServerType.MailWorker, ServerType.LoginServer }
                    .Select(t => t.NumericValue()).ToList(),
                    BranchName = Generator.RandomString(10),
                    UserId     = Generator.RandomString(10),
                    Start      = now.ToApiDate(),
                    End        = now.AddDays(2).ToApiDate(),
                };

                // Act
                var httpResponse = await Client.PostAsync("/api/batch/reservation", request.ToRequestBody());

                // Assert
                httpResponse.EnsureSuccessStatusCode();
                var stringResponse = await httpResponse.Content.ReadAsStringAsync();

                var reservationResponse = JsonConvert.DeserializeObject <CreateBatchReservationResponse>(stringResponse);
                Assert.Equal(request.ServerTypes.Count, reservationResponse.Reservations.Count);
                foreach (var reservationId in reservationResponse.Reservations)
                {
                    var reservation = await GetReservationAsync(reservationId);

                    new {
                        request.DeployType,
                        request.BranchName,
                        request.UserId,
                        request.Start,
                        request.End,
                    }.ToExpectedObject().ShouldMatch(reservation);
                }
            }
            finally
            {
                await CleanUpReservationsAsync();
            }
        }
예제 #2
0
        private async Task <CreateBatchReservationResponse> CreateBatchReservationAsync(DateTime start, DateTime end, DeployType deployType, ServerType[] serverTypes)
        {
            var request = new CreateBatchReservationRequest()
            {
                DeployType  = deployType.NumericValue(),
                ServerTypes = serverTypes.Select(t => t.NumericValue()).ToList(),
                BranchName  = Generator.RandomString(10),
                UserId      = Generator.RandomString(10),
                Start       = start.ToApiDate(),
                End         = end.ToApiDate(),
            };

            var httpResponse = await Client.PostAsync("/api/batch/reservation", request.ToRequestBody());

            httpResponse.EnsureSuccessStatusCode();
            var responseJson = await httpResponse.Content.ReadAsStringAsync();

            return(responseJson.DeserializeJson <CreateBatchReservationResponse>());
        }
        public async Task <ActionResult <CreateBatchReservationResponse> > CreateBatchReservation([FromBody] CreateBatchReservationRequest request)
        {
            var response = await Service.CreateBatchReservationAsync(request);

            return(response);
        }
예제 #4
0
        public async Task <CreateBatchReservationResponse> CreateBatchReservationAsync(CreateBatchReservationRequest request)
        {
            var batchId  = Generator.RandomString(32);
            var response = new CreateBatchReservationResponse()
            {
                Id           = batchId,
                Reservations = new List <string>(),
            };

            foreach (var serverType in request.ServerTypes)
            {
                var start       = request.Start.ParseApiDate();
                var end         = request.End.ParseApiDate();
                var reservation = new Reservation()
                {
                    Id         = Generator.RandomString(32),
                    DeployType = request.DeployType,
                    ServerType = serverType,
                    BranchName = request.BranchName,
                    UserId     = request.UserId,
                    Start      = start.Value,
                    End        = end.Value,
                };
                Db.Reservation.Add(reservation);
                response.Reservations.Add(reservation.Id);

                var batch = new BatchReservation()
                {
                    BatchId       = batchId,
                    ReservationId = reservation.Id,
                };
                Db.BatchReservation.Add(batch);
            }
            ;

            await Db.SaveChangesAsync();

            return(response);
        }