public async Task BarberHours_IsAvailableAsync_DaysOfWeekExpected(DayOfWeek dayOfWeek, int hour, bool expectedAvailability) { IHoursRepository repository = new MemoryHoursRepository(); BarberHours barberHours = new BarberHours(repository); var date = DateTime.Now.This(dayOfWeek).Date; var inputDateTime = new DateTime(date.Year, date.Month, date.Day, hour, 0, 0); Mock <IBarber> barberMock = new Mock <IBarber>(); barberMock.Setup(s => s.Type).Returns(HoursType.Barber); bool actualAvailability = await barberHours.IsAvailableAsync(barberMock.Object, inputDateTime); Assert.Equal(expectedAvailability, actualAvailability); }
public async Task BarberHours_LoadAsync_DaysOfWeekExpectedHours(DayOfWeek dayOfWeek, int expectedOpeningHour, int expectedClosingHour) { IHoursRepository repository = new MemoryHoursRepository(); BarberHours barberHours = new BarberHours(repository); var expectedDateTime = DateTime.Now.This(dayOfWeek); Mock <IBarber> barberMock = new Mock <IBarber>(); barberMock.Setup(s => s.Type).Returns(HoursType.Barber); await barberHours.LoadAsync(barberMock.Object, expectedDateTime); Assert.Equal(expectedOpeningHour, barberHours.OpeningHour); Assert.Equal(expectedClosingHour, barberHours.ClosingHour); Assert.Equal(expectedDateTime.Date, barberHours.OpeningDateTime().Date); Assert.Equal(expectedDateTime.Date, barberHours.ClosingDateTime().Date); }
public async Task AppointmentRequest_IsAvaiableNowJessica_True() { var hoursRepository = new MemoryHoursRepository(); var appointmentRepository = new MemoryAppointmentRepository(); var barbersRepository = new MemoryBarbersRepository(appointmentRepository, hoursRepository); var storeHours = new ShopHours(hoursRepository); var barberHours = new BarberHours(hoursRepository); Shop shop = new Shop(appointmentRepository, storeHours, barbersRepository); AppointmentRequest request = new AppointmentRequest(shop); Barber initialBarber = new Barber(shop, appointmentRepository, barberHours); request.StartDateTime = DateTime.Now; initialBarber.DisplayName = "Jessica"; request.RequestedBarber = initialBarber; request.Service = new BarberService() { DisplayName = "Short Hair Cut", Duration = TimeSpan.FromMinutes(30) }; AppointmentAvailabilityResponse response = await request.IsAvailableAsync(); Assert.True(response.IsAvailable, $"{initialBarber.DisplayName} should be availabe on {request.StartDateTime}"); }