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