public async Task TestHandleIncomingPatientDataInvalidArgument() { // Arrange AppointmentMessage testMessage = null; var service = new Services.PatientService(null, null, null); // Act async Task TestAction() => await service.HandleIncomingPatientData(testMessage); // Assert await Assert.ThrowsAsync <ArgumentNullException>(TestAction); }
public async Task TestHandleIncomingPatientData() { // Arrange var testMessage = new AppointmentMessage { FirstName = "Test", LastName = "McTest", DateOfBirth = new DateTime(2000, 1, 1) }; var testPatient = new Patient { FirstName = testMessage.FirstName, LastName = testMessage.LastName, DateOfBirth = testMessage.DateOfBirth }; var mockUnitOfWork = new Mock <IUnitOfWork>(); mockUnitOfWork .Setup(x => x.PatientRepository.GetByConditionAsync( It.IsAny <Expression <Func <Patient, bool> > >(), It.IsAny <bool>())) .ReturnsAsync(new List <Patient> { testPatient }) .Verifiable(); var mockPublisher = new Mock <IPatientPublisher>(); mockPublisher .Setup(x => x.PushMessageToQueue(It.IsAny <PatientMessage>())) .Verifiable(); var service = new Services.PatientService(mockUnitOfWork.Object, mockPublisher.Object, null); // Act await service.HandleIncomingPatientData(testMessage); // Assert mockUnitOfWork .Verify(x => x.PatientRepository.GetByConditionAsync( It.IsAny <Expression <Func <Patient, bool> > >(), It.IsAny <bool>()), Times.Once); mockPublisher .Verify(x => x.PushMessageToQueue(It.IsAny <PatientMessage>()), Times.Once); }
public async Task TestHandleIncomingPatientDataLastNameNull() { // Arrange var testMessage = new AppointmentMessage { FirstName = "Test", LastName = null }; var service = new Services.PatientService(null, null, null); // Act async Task TestAction() => await service.HandleIncomingPatientData(testMessage); // Assert await Assert.ThrowsAsync <ArgumentNullException>(TestAction); }
public async Task TestHandleIncomingDataPatientNull() { // Arrange var testMessage = new AppointmentMessage { FirstName = "Test", LastName = "McTest", DateOfBirth = new DateTime(2000, 1, 1) }; var mockUnitOfWork = new Mock <IUnitOfWork>(); mockUnitOfWork .Setup(x => x.PatientRepository.GetByConditionAsync( It.IsAny <Expression <Func <Patient, bool> > >(), It.IsAny <bool>())) .ReturnsAsync(new List <Patient>()) .Verifiable(); var mockPublisher = new Mock <IPatientPublisher>(); mockPublisher .Setup(x => x.PushMessageToQueue(It.IsAny <PatientMessage>())) .Verifiable(); var service = new Services.PatientService(mockUnitOfWork.Object, mockPublisher.Object, null); // Act async Task TestAction() => await service.HandleIncomingPatientData(testMessage); // Assert var ex = await Assert.ThrowsAnyAsync <Exception>(TestAction); Assert.Equal($"No {typeof(Patient)} entity matching the specified criteria exists.", ex.Message); mockUnitOfWork .Verify(x => x.PatientRepository.GetByConditionAsync( It.IsAny <Expression <Func <Patient, bool> > >(), It.IsAny <bool>()), Times.Once); mockPublisher .Verify(x => x.PushMessageToQueue(It.IsAny <PatientMessage>()), Times.Never); }