public async Task TerminateOtherBookingGenException()
        {
            Mock <IBookingsService>   mockBookingsService   = new Mock <IBookingsService>();
            Mock <BookingsController> mockBookingsControler = new Mock <BookingsController>(mockBookingsService.Object)
            {
                CallBase = true
            };

            Booking booking = (await GetTestBookings())
                              .Where(item => item.Id == 1)
                              .First();

            mockBookingsService.Setup(mock => mock.GetAsync(1))
            .ReturnsAsync(booking);
            // It.IsAny<System.Nullable<T>> not work if arg null
            mockBookingsService.Setup(mock => mock.Terminate(It.IsAny <int>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            mockBookingsControler.SetupGet(mock => mock.IsAdmin).Returns(false);
            mockBookingsControler.SetupGet(mock => mock.UserId).Returns((string)null);

            BookingUpdateDTO bookingUpdateDTO = new BookingUpdateDTO();

            await Assert.ThrowsAsync <BookingApp.Exceptions.OperationRestrictedException>(
                async() => await mockBookingsControler.Object.Terminate(1));

            mockBookingsService.Verify(
                mock => mock.Terminate(It.IsAny <int>(), It.IsAny <string>()), Times.Never());
        }
示例#2
0
        public async Task <BookingDTO> PatchAsync(BookingUpdateDTO dto)
        {
            this.Logger.LogDebug($"{nameof(BookingUpdateService)} called for client with id = {dto.ClientId}");

            return(this.Mapper.Map <BookingDTO>(
                       await this.BookingUpdateService.UpdateAsync(Mapper.Map <BookingUpdateModel>(dto))));
        }
        public async Task TerminateOwnedBooking()
        {
            Mock <IBookingsService>   mockBookingsService   = new Mock <IBookingsService>();
            Mock <BookingsController> mockBookingsControler = new Mock <BookingsController>(mockBookingsService.Object)
            {
                CallBase = true
            };

            Booking booking = (await GetTestBookings())
                              .Where(item => item.Id == 1)
                              .First();

            mockBookingsService.Setup(mock => mock.GetAsync(1))
            .ReturnsAsync(booking);
            // It.IsAny<System.Nullable<T>> not work if arg null
            mockBookingsService.Setup(mock => mock.Terminate(It.IsAny <int>(), It.IsAny <string>()))
            .Returns(Task.CompletedTask);

            mockBookingsControler.SetupGet(mock => mock.IsAdmin).Returns(false);
            mockBookingsControler.SetupGet(mock => mock.UserId).Returns(booking.CreatedUserId);

            BookingUpdateDTO bookingUpdateDTO = new BookingUpdateDTO();

            var result = await mockBookingsControler.Object.Terminate(1);

            var okResult = Assert.IsType <OkResult>(result);

            mockBookingsService.Verify(
                mock => mock.Terminate(It.IsAny <int>(), It.IsAny <string>()), Times.Once());
        }
示例#4
0
        public async Task <bool> UpdateBooking(string token, BookingUpdateDTO booking)
        {
            var result = await _httpClient.PutAsJsonAsync($"booking/{token}", booking);

            var StatusCode = result.StatusCode;

            return(StatusCode != HttpStatusCode.OK ? false : true);
        }
示例#5
0
        public async Task <ActionResult> Put(string token, [FromBody] BookingUpdateDTO booking)
        {
            // Ensures you dont update wrong object
            if (token != booking.Token)
            {
                ModelState.AddModelError("token", "token in URL must match token in body");

                return(BadRequest(ModelState));
            }
            var response = await _repository.Update(booking);

            return(new StatusCodeResult((int)response));
        }
示例#6
0
        public bool EditBooking(BookingDTO booking)
        {
            var newBooking = new BookingUpdateDTO
            {
                StartDate   = booking.StartDate,
                EndDate     = booking.EndDate,
                BookComment = booking.BookComment,
                Complaint   = booking.Complaint
            };

            var resp = Client.PutAsJsonAsync($"api/bookings/{booking.BookingId}", newBooking).Result;

            return(resp.IsSuccessStatusCode);
        }
示例#7
0
        public async Task Update_non_existing_booking_unsuccessful()
        {
            // Arrange
            var entity = new BookingUpdateDTO {
                Token = "badToken"
            };

            // Act
            var actual = await _repository.Update(entity);

            var expected = NotFound;

            // Assert
            Assert.Equal(expected, actual);
        }
示例#8
0
        public async Task <HttpStatusCode> Update(BookingUpdateDTO Booking)
        {
            var entity = await _context.Booking.FindAsync(Booking.Token);

            if (entity == null)
            {
                return(NotFound);
            }

            entity.State = (QueueSafe.Entities.BookingState)Booking.State;

            await _context.SaveChangesAsync();

            return(OK);
        }
        public async void Update_existing_booking_returns_ok()
        {
            // Arrange
            var updateBooking = new BookingUpdateDTO
            {
                Token = "righttoken",
                State = BookingState.Expired
            };

            mockBookingRepository.Setup(m => m.Update(updateBooking)).ReturnsAsync(HttpStatusCode.OK);
            var controller = new BookingController(mockBookingRepository.Object);

            // Act
            var actual = await controller.Put(updateBooking.Token, updateBooking);

            // Assert
            var result = Assert.IsType <StatusCodeResult>(actual);

            Assert.Equal(200, result.StatusCode);
        }
示例#10
0
        public async Task <IActionResult> Update([FromRoute] int bookingId, [FromBody] BookingUpdateDTO item)
        {
            if (!ModelState.IsValid)
            {
                return(BadRequest(ModelState));
            }

            var bookingData = await bookingService.GetAsync(bookingId);

            if (IsAdmin || bookingData.CreatedUserId == UserId)
            {
                await bookingService.Update(bookingId, item.StartTime, item.EndTime, UserId, item.Note);

                return(new OkResult());
            }
            else
            {
                throw new Exceptions.OperationRestrictedException("Can not edit not owned booking");
            }
        }
示例#11
0
        public async Task Update_existing_booking_successful()
        {
            // Arrange
            var entity = new BookingUpdateDTO {
                Token = "goodtoken1", State = Shared.BookingState.Canceled
            };

            // Act
            var actualResponse = await _repository.Update(entity);

            var expectedResponse = OK;

            var updated = await _repository.Read(entity.Token);

            var actualState   = updated.State;
            var expectedState = Shared.BookingState.Canceled;

            // Assert
            Assert.Equal(expectedResponse, actualResponse);
            Assert.Equal(expectedState, actualState);
        }
 public IActionResult UpdateBooking([FromRoute] int id, [FromBody] BookingUpdateDTO updateDTO)
 {
     _hotelService.UpdateBooking(updateDTO, id);
     return(NoContent());
 }