Пример #1
0
        public async Task Shoud_Book_A_Room_When_Same_Date_And_Slot_But_Another_Room()
        {
            var fixture = new Fixture();
            var booking = new Booking
            {
                User      = fixture.Create <User>(),
                StartSlot = 5,
                EndSlot   = 5,
                Date      = new DateTime(2019, 3, 25),
                Room      = fixture.Build <Room>()
                            .With(r => r.Name, "room0")
                            .Create()
            };

            var bookingsRepository = Substitute.For <IBookingsRepository>();

            bookingsRepository.GetBookingsByDateAndRoomAsync(new DateTime(2019, 3, 25), "room0").Returns(new List <Booking>(0));
            bookingsRepository.BookARoomAsync(Arg.Any <Booking>()).Returns(new Booking());
            var            bookingsBusiness           = new BookingsBusiness(bookingsRepository);
            CreatedBooking createdBookingFromBusiness = await bookingsBusiness.BookARoomAsync(booking);

            await bookingsRepository.Received().BookARoomAsync(Arg.Any <Booking>());

            Assert.IsNotNull(createdBookingFromBusiness.Booking);
        }
Пример #2
0
        public async Task Shoud_Not_Book_A_Room_If_Already_Booking()
        {
            var fixture = new Fixture();
            var booking = new Booking
            {
                User      = fixture.Create <User>(),
                StartSlot = 5,
                EndSlot   = 5,
                Date      = new DateTime(2019, 3, 25),
                Room      = fixture.Build <Room>()
                            .With(r => r.Name, "room0")
                            .Create()
            };
            var bookings = fixture.Build <Booking>()
                           .With(b => b.Date, new DateTime(2019, 3, 25))
                           .With(b => b.Room, fixture.Build <Room>()
                                 .With(r => r.Name, "room0")
                                 .Create())
                           .CreateMany(10);

            bookings.ElementAt(4).StartSlot = 5;
            bookings.ElementAt(4).EndSlot   = 7;

            var bookingsRepository = Substitute.For <IBookingsRepository>();

            bookingsRepository.GetBookingsByDateAndRoomAsync(new DateTime(2019, 3, 25), "room0").Returns(bookings);
            var            bookingsBusiness           = new BookingsBusiness(bookingsRepository);
            CreatedBooking createdBookingFromBusiness = await bookingsBusiness.BookARoomAsync(booking);

            await bookingsRepository.DidNotReceive().BookARoomAsync(Arg.Any <Booking>());

            Assert.IsNull(createdBookingFromBusiness.Booking);
        }
Пример #3
0
        public async Task Shoud_Book_A_Room()
        {
            var fixture = new Fixture();
            var booking = new Booking
            {
                User      = fixture.Create <User>(),
                StartSlot = 5,
                EndSlot   = 5,
                Room      = fixture.Create <Room>()
            };
            var bookingForSubstitute = new Booking
            {
                Id        = 1,
                User      = booking.User,
                StartSlot = booking.StartSlot,
                EndSlot   = booking.EndSlot,
                Room      = booking.Room
            };
            var bookingsRepository = Substitute.For <IBookingsRepository>();

            bookingsRepository.BookARoomAsync(Arg.Any <Booking>()).Returns(bookingForSubstitute);
            var            bookingsBusiness           = new BookingsBusiness(bookingsRepository);
            CreatedBooking createdBookingFromBusiness = await bookingsBusiness.BookARoomAsync(booking);

            Assert.Less(0, createdBookingFromBusiness.Booking.Id);
        }
Пример #4
0
        public async Task Shoud_Get_All_Available_Booking_When_Room_Is_Already_Booking()
        {
            var fixture = new Fixture();
            var booking = new Booking
            {
                User      = fixture.Create <User>(),
                StartSlot = 10,
                EndSlot   = 10,
                Date      = new DateTime(2019, 3, 25),
                Room      = fixture.Build <Room>()
                            .With(r => r.Name, "room0")
                            .Create()
            };
            var bookings = fixture.Build <Booking>()
                           .With(b => b.Date, new DateTime(2019, 3, 25))
                           .With(b => b.Room, fixture.Build <Room>()
                                 .With(r => r.Name, "room0")
                                 .Create())
                           .CreateMany(2);

            bookings.ElementAt(0).StartSlot = 5;
            bookings.ElementAt(0).EndSlot   = 5;
            bookings.ElementAt(1).StartSlot = 10;
            bookings.ElementAt(1).EndSlot   = 10;

            var bookingsRepository = Substitute.For <IBookingsRepository>();

            bookingsRepository.GetBookingsByDateAndRoomAsync(new DateTime(2019, 3, 25), "room0").Returns(bookings);
            var            bookingsBusiness           = new BookingsBusiness(bookingsRepository);
            CreatedBooking createdBookingFromBusiness = await bookingsBusiness.BookARoomAsync(booking);

            await bookingsRepository.DidNotReceive().BookARoomAsync(Arg.Any <Booking>());

            Assert.IsNull(createdBookingFromBusiness.Booking);
            Assert.AreEqual(22, createdBookingFromBusiness.AvaialbleBookingsForDateAndRoom.Count());
        }