public void ShouldExecuteCallback()
        {
            var appointment = fixture.Create <Appointment>();

            appointment.Start = DateTime.Today.AddDays(1).AddHours(10);
            appointment.End   = DateTime.Today.AddDays(1).AddHours(12);
            var count = 0;
            Func <Appointment, Task <int> > callback = a =>
            {
                var expectedAppt = appointment;
                expectedAppt.Start = appointment.Start.ToUniversalTime();
                expectedAppt.End   = appointment.End.ToUniversalTime();
                if (JsonConvert.SerializeObject(a) == JsonConvert.SerializeObject(expectedAppt))
                {
                    count++;
                    return(Task.FromResult(1));
                }

                return(Task.FromResult(0));
            };

            var translatorMock = new Mock <ITranslator>();

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <ITranslator>()).Returns(translatorMock.Object);

            var model = new ModifyAppointmentViewModel(contextMock.Object);

            model.SubmitAsync(appointment, callback).Wait();

            Assert.Equal(1, count);
        }
Exemplo n.º 2
0
 public ModifyAppointment(IContext context, Appointment appointment = null, Customer customer = null)
 {
     _translator            = context.GetService <ITranslator>();
     _context               = context;
     _appointmentRepository = context.GetService <IAppointmentRepository>();
     _appointment           = appointment;
     _customer              = customer;
     _viewModel             = new ModifyAppointmentViewModel(context);
     InitializeComponent();
     TranslatePage();
     Init();
 }
        public void ShouldValidateBusinessHours(DateTime start, DateTime end)
        {
            Func <Appointment, Task <int> > callback = a => Task.FromResult(1);
            var expectedMsg = "This is a bad time";
            var appointment = new Appointment {
                Start = start, End = end
            };

            var translatorMock = new Mock <ITranslator>();

            translatorMock.Setup(m => m.Translate("appointment.outOfHoursError", It.IsAny <object>())).Returns(expectedMsg);

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <ITranslator>()).Returns(translatorMock.Object);

            var model = new ModifyAppointmentViewModel(contextMock.Object);

            var ex = Assert.ThrowsAsync <PublicException>(() => model.SubmitAsync(appointment, callback)).Result;

            Assert.Equal("out-of-business-hours", ex.Id);
            Assert.Equal(expectedMsg, ex.Message);
        }
        public void ShouldHandleOverlappingError()
        {
            var expectedMsg = "This is an invalid time slot";
            var appointment = fixture.Create <Appointment>();

            appointment.Start = DateTime.Today.AddDays(1).AddHours(10);
            appointment.End   = DateTime.Today.AddDays(1).AddHours(12);
            Func <Appointment, Task <int> > callback = a => throw new OverlappingAppointmentException(DateTime.Today, DateTime.Now);

            var translatorMock = new Mock <ITranslator>();

            translatorMock.Setup(m => m.Translate("appointment.overlappingAppointmentError", It.IsAny <object>())).Returns(expectedMsg);

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <ITranslator>()).Returns(translatorMock.Object);

            var model = new ModifyAppointmentViewModel(contextMock.Object);

            var ex = Assert.ThrowsAsync <PublicException>(() => model.SubmitAsync(appointment, callback)).Result;

            Assert.Equal("overlapping-appointment", ex.Id);
            Assert.Equal(expectedMsg, ex.Message);
        }
        public void ShouldHandleInvalidEntries()
        {
            var expectedMsg = "This is an invalid input";
            var appointment = fixture.Create <Appointment>();

            appointment.Start = DateTime.Today.AddDays(1).AddHours(10);
            appointment.End   = DateTime.Today.AddDays(1).AddHours(12);
            Func <Appointment, Task <int> > callback = a => throw new InvalidEntityException("someProp");

            var translatorMock = new Mock <ITranslator>();

            translatorMock.Setup(m => m.Translate("appointment.requiredFieldError", It.IsAny <object>())).Returns(expectedMsg);

            var contextMock = new Mock <IContext>();

            contextMock.Setup(m => m.GetService <ITranslator>()).Returns(translatorMock.Object);

            var model = new ModifyAppointmentViewModel(contextMock.Object);

            var ex = Assert.ThrowsAsync <PublicException>(() => model.SubmitAsync(appointment, callback)).Result;

            Assert.Equal("required-field-error", ex.Id);
            Assert.Equal(expectedMsg, ex.Message);
        }