public void CreateAppointment_NullStaff_ThrowsArgumentException()
        {
            var appointmentRepository = new Mock<IAppointmentRepository> ();
            var appointmentFactory = new AppointmentFactory (
                appointmentRepository.Object );

            var start = new DateTime ( 2000, 1, 1, 9, 0, 0 );
            var end = new DateTime ( 2000, 1, 1, 10, 0, 0 );

            appointmentFactory.CreateAppointment ( null, new DateTimeRange ( start, end ) );
        }
        public void CreateAppointment_GivenValidArguments_CreatesAnAppointment()
        {
            var appointmentRepository = new Mock<IAppointmentRepository> ();
            var appointmentFactory = new AppointmentFactory (
                appointmentRepository.Object );

            var staff = new Mock<Staff> ();
            var start = new DateTime ( 2000, 1, 1, 9, 0, 0 );
            var end = new DateTime ( 2000, 1, 1, 10, 0, 0 );

            Appointment appointment = appointmentFactory.CreateAppointment ( staff.Object, new DateTimeRange ( start, end ) );

            Assert.IsNotNull ( appointment );
        }
        public void CreateAppointment_GivenValidArguments_AppointmentIsEditable()
        {
            using ( var serviceLocatorFixture = new ServiceLocatorFixture () )
            {
                // Setup
                var appointmentRepository = new Mock<IAppointmentRepository> ();
                var appointmentFactory = new AppointmentFactory (
                    appointmentRepository.Object );

                var staff = new Mock<Staff> ();
                var start = new DateTime ( 2000, 1, 1, 9, 0, 0 );
                var end = new DateTime ( 2000, 1, 1, 10, 0, 0 );

                Appointment appointment = appointmentFactory.CreateAppointment ( staff.Object, new DateTimeRange ( start, end ) );

                appointment.ReviseSubjectDescription ( "Some Appointment" );
            }
        }
        public void CreateAppointment_GivenValidArguments_AppointmentIsPersisted()
        {
            bool isPersisted = false;

            var appointmentRepository = new Mock<IAppointmentRepository> ();
            appointmentRepository
                .Setup ( a => a.MakePersistent ( It.IsAny<Appointment> () ) )
                .Callback ( () => isPersisted = true );
            var appointmentFactory = new AppointmentFactory (
                appointmentRepository.Object );

            var staff = new Mock<Staff> ();
            var start = new DateTime ( 2000, 1, 1, 9, 0, 0 );
            var end = new DateTime ( 2000, 1, 1, 10, 0, 0 );

            appointmentFactory.CreateAppointment ( staff.Object, new DateTimeRange ( start, end ) );

            Assert.IsTrue ( isPersisted );
        }
        public void DestroyAppointment_GivenAnAppointment_AppointmentIsMadeTransient()
        {
            bool isTransient = false;

            var appointmentRepository = new Mock<IAppointmentRepository> ();
            appointmentRepository
                .Setup ( a => a.MakeTransient ( It.IsAny<Appointment> () ) )
                .Callback ( () => isTransient = true );
            var appointmentFactory = new AppointmentFactory (
                appointmentRepository.Object );

            var appointment = new Mock<Appointment> ();

            appointmentFactory.DestroyAppointment ( appointment.Object );

            Assert.IsTrue ( isTransient );
        }