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(); } }
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); }
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); }