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