public void ShouldThrowServiceExceptionOnRetrieveAllWhenExceptionOccursAndLogIt() { // given var exception = new Exception(); var expectedTeacherServiceException = new TeacherServiceException(exception); this.storageBrokerMock.Setup(broker => broker.SelectAllTeachers()) .Throws(exception); // when . then Assert.Throws <TeacherServiceException>(() => this.teacherService.RetrieveAllTeachers()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherServiceException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectAllTeachers(), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowServiceExceptionOnRetrieveWhenExceptionOccursAndLogItAsync() { // given Guid randomTeacherId = Guid.NewGuid(); Guid inputTeacherId = randomTeacherId; var exception = new Exception(); var expectedTeacherServiceException = new TeacherServiceException(exception); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(inputTeacherId)) .ThrowsAsync(exception); // when ValueTask <Teacher> retrieveTeacherTask = this.teacherService.RetrieveTeacherByIdAsync(inputTeacherId); // then await Assert.ThrowsAsync <TeacherServiceException>(() => retrieveTeacherTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherServiceException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(inputTeacherId), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowServiceExceptionOnRetrieveAllIfServiceErrorOccursAndLogItAsync() { var serviceException = new Exception(); var failedTeacherServiceException = new FailedTeacherServiceException(serviceException); var expectedTeacherServiceException = new TeacherServiceException(failedTeacherServiceException); this.apiBrokerMock.Setup(broker => broker.GetAllTeachersAsync()) .ThrowsAsync(serviceException); // when ValueTask <List <Teacher> > retrieveAllTeachersTask = this.teacherService.RetrieveAllTeachersAsync(); // then await Assert.ThrowsAsync <TeacherServiceException>(() => retrieveAllTeachersTask.AsTask()); this.apiBrokerMock.Verify(broker => broker.GetAllTeachersAsync(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherServiceException))), Times.Once); this.apiBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); }
private TeacherServiceException CreateAndLogServiceException(Exception exception) { var teacherServiceException = new TeacherServiceException(exception); this.loggingBroker.LogError(teacherServiceException); return(teacherServiceException); }
public async Task ShouldThrowServiceExceptionOnModifyIfServiceErrorOccursAndLogItAsync() { // given int randomNegativeNumber = GetNegativeRandomNumber(); DateTimeOffset randomDateTime = GetRandomDateTime(); Teacher randomTeacher = CreateRandomTeacher(randomDateTime); Teacher someTeacher = randomTeacher; someTeacher.CreatedDate = randomDateTime.AddMinutes(randomNegativeNumber); var serviceException = new Exception(); var failedTeacherServiceException = new FailedTeacherServiceException(serviceException); var expectedTeacherServiceException = new TeacherServiceException(failedTeacherServiceException); this.storageBrokerMock.Setup(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>())) .ThrowsAsync(serviceException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(randomDateTime); // when ValueTask <Teacher> modifyTeacherTask = this.teacherService.ModifyTeacherAsync(someTeacher); // then await Assert.ThrowsAsync <TeacherServiceException>(() => modifyTeacherTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectTeacherByIdAsync(It.IsAny <Guid>()), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherServiceException))), Times.Once); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public static TheoryData DependencyExceptions() { var innerException = new Exception(); var teacherServiceDependencyException = new TeacherDependencyException(innerException); var teacherServiceException = new TeacherServiceException(innerException); return(new TheoryData <Exception> { teacherServiceDependencyException, teacherServiceException }); }
public async Task ShouldThrowServiceExceptionOnCreateWhenExceptionOccursAndLogItAsync() { // given DateTimeOffset dateTime = GetRandomDateTime(); Teacher randomTeacher = CreateRandomTeacher(dateTime); Teacher inputTeacher = randomTeacher; inputTeacher.UpdatedBy = inputTeacher.CreatedBy; var exception = new Exception(); var expectedTeacherServiceException = new TeacherServiceException(exception); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Returns(dateTime); this.storageBrokerMock.Setup(broker => broker.InsertTeacherAsync(inputTeacher)) .ThrowsAsync(exception); // when ValueTask <Teacher> createTeacherByIdTask = this.teacherService.CreateTeacherAsync(inputTeacher); // then await Assert.ThrowsAsync <TeacherServiceException>(() => createTeacherByIdTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedTeacherServiceException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherAsync(inputTeacher), Times.Once); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowServiceExceptionOnAddIfServiceErrorOccursAndLogItAsync() { // given Teacher someTeacher = CreateRandomTeacher(); var serviceException = new Exception(); var failedTeacherServiceException = new FailedTeacherServiceException(serviceException); var expectedTeacherServiceException = new TeacherServiceException(failedTeacherServiceException); this.dateTimeBrokerMock.Setup(broker => broker.GetCurrentDateTime()) .Throws(serviceException); // when ValueTask <Teacher> addTeacherTask = this.teacherService.CreateTeacherAsync(someTeacher); // then await Assert.ThrowsAsync <TeacherServiceException>(() => addTeacherTask.AsTask()); this.dateTimeBrokerMock.Verify(broker => broker.GetCurrentDateTime(), Times.Once); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs( expectedTeacherServiceException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertTeacherAsync(It.IsAny <Teacher>()), Times.Never); this.dateTimeBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }