AppointmentReminders.Web.Domain.AppointmentsFinder.FindAvailableAppointments C# (CSharp) Method

FindAvailableAppointments() public method

public FindAvailableAppointments ( System.DateTime currentTime ) : IList
currentTime System.DateTime
return IList
        public IList<Appointment> FindAvailableAppointments(DateTime currentTime)
        {
            var availableAppointments = _repository.FindAll()
                .Where(appointment =>
                    new AppointmentsNotificationPolicy(
                        appointment, _timeConverter)
                    .NeedsToBeSent(currentTime));

            return availableAppointments.ToList();
        }

Usage Example

        public void FindAvailableAppointments_returns_the_available_appointments()
        {
            var repository = new InMemoryAppointmentRepository();

            var appointment = new Appointment();
            repository.Create(appointment);

            var mockTimeConverter = new Mock<ITimeConverter>();

            // For test purposes lets assume the local timezone is Pacific Standard Time.
            mockTimeConverter.Setup(x => x.ToLocalTime(It.IsAny<DateTime>(), It.IsAny<String>()))
                .Returns(new DateTime(2015, 07, 15, 12, 00, 00));

            var appointmentsFinder = new AppointmentsFinder(repository, mockTimeConverter.Object);

            var currentTime = new DateTime(2015, 7, 15, 11, 30, 00);
            var availableAppointments = appointmentsFinder.FindAvailableAppointments(currentTime);

            CollectionAssert.Contains(availableAppointments, appointment);
        }