public void AddAppointment_ValidatorFails_ThrowsArgumentException() { var failedValidationResult = new AppointmentValidationResult(false, _fixture.Create <string>()); _validator.Setup(x => x.ValidateRequest(It.IsAny <AddAppointmentRequest>())).Returns(failedValidationResult); var exception = Assert.Throws <ArgumentException>(() => _sut.AddNewAppointment(_fixture.Create <AddAppointmentRequest>())); exception.Message.Should().Be(failedValidationResult.Errors.First()); }
public void AddAppointment_AddsAppointmentToContextWithGeneratedId() { var bookingId = new Guid(); var request = _fixture.Create <AddAppointmentRequest>(); var validatedResult = new AppointmentValidationResult(true) { AppointmentDoctor = new Doctor { Id = request.DoctorId }, AppointmentPatient = new Patient { Id = request.PatientId, Clinic = new Clinic { SurgeryType = SurgeryType.SystemOne } } }; _validator.Setup(x => x.ValidateRequest(It.IsAny <AddAppointmentRequest>())).Returns(validatedResult); var expected = new Order { Id = bookingId, StartTime = request.StartTime, EndTime = request.EndTime, PatientId = request.PatientId, DoctorId = request.DoctorId, Patient = new Patient(), Doctor = new Doctor(), SurgeryType = (int)SurgeryType.SystemOne }; _sut.AddNewAppointment(request); _context.Order.Should().ContainEquivalentOf(expected, options => options.Excluding(order => order.Patient).Excluding(order => order.Doctor).Excluding(order => order.Id).Using <DateTime>(ctx => ctx.Subject.Should().BeCloseTo(ctx.Expectation, 1000)).WhenTypeIs <DateTime>()); }