示例#1
0
        public void BookRoom_WhenOverlapsForTheSameRoom_ReturnsFalse2()
        {
            var currentBooking1 = new BookingSchedule()
            {
                Id               = 1,
                StartTime        = new DateTime(2016, 10, 15, 13, 0, 0),
                DurationInMinuts = 30,
                RoomId           = 1
            };
            var currentBookings = new List <BookingSchedule>()
            {
                currentBooking1
            };
            var bookingService = CreateServiceBasedOnCurrentBookingScheduleList(currentBookings);

            var newBooking = new BookingSchedule()
            {
                Id               = 100,
                StartTime        = new DateTime(2016, 10, 15, 12, 30, 0),
                DurationInMinuts = 60,
                RoomId           = 1
            };

            var result = bookingService.BookRoom(newBooking);

            Assert.That(result, Is.EqualTo(false));
        }
示例#2
0
        public void BookRoom(BookingSchedule bookingSchedule)
        {
            var booking = _bookingContext.BookingSchedules.Create();

            _bookingContext.BookingSchedules.Add(booking);
            _bookingContext.SaveChanges();
        }
示例#3
0
        public void BookRoom_SavesToContext()
        {
            var bookingSchedule = new BookingSchedule()
            {
                Id               = 1,
                StartTime        = new DateTime(2016, 5, 5),
                RoomId           = 1,
                DurationInMinuts = 30,
                PersonId         = 1,
                Room             = new Room(),
                Person           = new Person()
            };
            var mockBookingScheduleSet = new Mock <DbSet <BookingSchedule> >();
            var mockContext            = new Mock <BookingContext>();

            mockContext.Setup(x => x.BookingSchedules).Returns(mockBookingScheduleSet.Object);
            var repository = new RoomRepository(mockContext.Object);

            repository.BookRoom(bookingSchedule);

            // Though it's not recommended to assert against more than 1 mock object
            // here we have to do so as we need to make sure both Add() and SaveChanges() methods
            // are called
            mockBookingScheduleSet.Verify(b => b.Add(It.IsAny <BookingSchedule>()), Times.Once());
            mockContext.Verify(ctx => ctx.SaveChanges(), Times.Once());
        }
示例#4
0
        private bool BookingIsAllowed(BookingSchedule bookingSchedule)
        {
            var bookings = GetRoomBookings(bookingSchedule.RoomId, bookingSchedule.StartTime.Date);
            var overlap  = bookings.Any(b => b.StartTime <bookingSchedule.EndTime &&
                                                          b.EndTime> bookingSchedule.StartTime);

            return(!overlap);
        }
示例#5
0
 public bool BookRoom(BookingSchedule bookingSchedule)
 {
     if (!BookingIsAllowed(bookingSchedule))
     {
         return(false);
     }
     _roomRepository.BookRoom(bookingSchedule);
     return(true);
 }
示例#6
0
        public void RemoveBooking(int bookingId)
        {
            var bookingSchedule = new BookingSchedule()
            {
                Id = bookingId
            };

            _bookingContext.BookingSchedules.Attach(bookingSchedule);
            _bookingContext.BookingSchedules.Remove(bookingSchedule);
            _bookingContext.SaveChanges();
        }
 public HttpResponseMessage AddBooking(BookingSchedule model)
 {
     try
     {
         db.BookingSchedules.Add(model);
         db.SaveChanges();
         return(new HttpResponseMessage(HttpStatusCode.Created));
     }
     catch (Exception ex)
     {
         return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
     }
 }
 public HttpResponseMessage UpdateBooking(int id, BookingSchedule model)
 {
     try
     {
         if (id == model.TicketID)
         {
             db.Entry(model).State = EntityState.Modified;
             db.SaveChanges();
             return(new HttpResponseMessage(HttpStatusCode.OK));
         }
         else
         {
             return(new HttpResponseMessage(HttpStatusCode.NotFound));
         }
     }
     catch (Exception ex)
     {
         return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
     }
 }
 public HttpResponseMessage DeleteBooking(int id)
 {
     try
     {
         BookingSchedule model = db.BookingSchedules.Find(id);
         if (model != null)
         {
             db.BookingSchedules.Remove(model);
             db.SaveChanges();
             return(new HttpResponseMessage(HttpStatusCode.OK));
         }
         else
         {
             return(new HttpResponseMessage(HttpStatusCode.NotFound));
         }
     }
     catch (Exception ex)
     {
         return(new HttpResponseMessage(HttpStatusCode.InternalServerError));
     }
 }
示例#10
0
        public void RemoveBooking_SavesToContext()
        {
            var bookingSchedule = new BookingSchedule()
            {
                Id               = 1,
                StartTime        = new DateTime(2016, 5, 5),
                RoomId           = 1,
                DurationInMinuts = 30,
                PersonId         = 1,
                Room             = new Room(),
                Person           = new Person()
            };
            var mockBookingScheduleSet = new Mock <DbSet <BookingSchedule> >();
            var mockContext            = new Mock <BookingContext>();

            mockContext.Setup(x => x.BookingSchedules).Returns(mockBookingScheduleSet.Object);
            var repository = new RoomRepository(mockContext.Object);

            repository.RemoveBooking(bookingSchedule.Id);

            mockBookingScheduleSet.Verify(b => b.Remove(It.IsAny <BookingSchedule>()), Times.Once());
            mockContext.Verify(ctx => ctx.SaveChanges(), Times.Once());
        }