public async Task ShouldThrowTeacherViewDependencyExceptionIfDependecyErrorOccursAndLogItAsync(
            Exception dependencyException)
        {
            var expectedTeacherViewDependencyException =
                new TeacherViewDependencyException(dependencyException);

            this.teacherServiceMock.Setup(service =>
                                          service.RetrieveAllTeachersAsync())
            .ThrowsAsync(dependencyException);

            ValueTask <List <TeacherView> > retrieveAllTeacherViewsTask =
                this.teacherViewService.RetrieveAllTeacherViewsAsync();

            await Assert.ThrowsAsync <TeacherViewDependencyException>(() =>
                                                                      retrieveAllTeacherViewsTask.AsTask());

            this.teacherServiceMock.Verify(service =>
                                           service.RetrieveAllTeachersAsync(),
                                           Times.Once);

            this.loggingBrokerMock.Verify(broker =>
                                          broker.LogError(It.Is(SameExceptionAs(
                                                                    expectedTeacherViewDependencyException))),
                                          Times.Once);

            this.teacherServiceMock.VerifyNoOtherCalls();
            this.loggingBrokerMock.VerifyNoOtherCalls();
        }
        private TeacherViewDependencyException CreateAndLogDependencyException(Exception innerException)
        {
            var teacherViewDependencyException = new TeacherViewDependencyException(innerException);

            this.loggingBroker.LogError(teacherViewDependencyException);

            return(teacherViewDependencyException);
        }