public async void ShouldThrowValidationExceptionOnAddWhenAttachmentIdIsInvalidAndLogItAsync() { // given ExamAttachment randomExamAttachment = CreateRandomExamAttachment(); ExamAttachment inputExamAttachment = randomExamAttachment; inputExamAttachment.AttachmentId = default; var invalidExamAttachmentInputException = new InvalidExamAttachmentException( parameterName: nameof(ExamAttachment.AttachmentId), parameterValue: inputExamAttachment.AttachmentId); var expectedExamAttachmentValidationException = new ExamAttachmentValidationException(invalidExamAttachmentInputException); // when ValueTask <ExamAttachment> addExamAttachmentTask = this.examAttachmentService.AddExamAttachmentAsync(inputExamAttachment); // then await Assert.ThrowsAsync <ExamAttachmentValidationException>(() => addExamAttachmentTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamAttachmentValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.InsertExamAttachmentAsync(It.IsAny <ExamAttachment>()), Times.Never); this.loggingBrokerMock.VerifyNoOtherCalls(); this.storageBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidatonExceptionOnRemoveWhenIdsAreInvalidAndLogItAsync() { // given Guid randomAttachmentId = default; Guid randomExamId = default; Guid inputAttachmentId = randomAttachmentId; Guid inputExamId = randomExamId; var invalidExamAttachmentInputException = new InvalidExamAttachmentException(); invalidExamAttachmentInputException.AddData( key: nameof(ExamAttachment.ExamId), values: "Id is required"); invalidExamAttachmentInputException.AddData( key: nameof(ExamAttachment.AttachmentId), values: "Id is required"); var expectedExamAttachmentValidationException = new ExamAttachmentValidationException(invalidExamAttachmentInputException); // when ValueTask <ExamAttachment> removeExamAttachmentTask = this.examAttachmentService.RemoveExamAttachmentByIdAsync(inputExamId, inputAttachmentId); // then await Assert.ThrowsAsync <ExamAttachmentValidationException>(() => removeExamAttachmentTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameValidationExceptionAs( expectedExamAttachmentValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamAttachmentByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Never); this.storageBrokerMock.Verify(broker => broker.DeleteExamAttachmentAsync(It.IsAny <ExamAttachment>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }
public async Task ShouldThrowValidatonExceptionOnRetrieveWhenAttachmentIdIsInvalidAndLogItAsync() { // given Guid randomAttachmentId = default; Guid randomExamId = Guid.NewGuid(); Guid invalidAttachmentId = randomAttachmentId; Guid inputExamId = randomExamId; var invalidExamAttachmentInputException = new InvalidExamAttachmentException( parameterName: nameof(ExamAttachment.AttachmentId), parameterValue: invalidAttachmentId); var expectedExamAttachmentValidationException = new ExamAttachmentValidationException(invalidExamAttachmentInputException); // when ValueTask <ExamAttachment> retrieveExamAttachmentTask = this.examAttachmentService.RetrieveExamAttachmentByIdAsync( inputExamId, invalidAttachmentId); // then await Assert.ThrowsAsync <ExamAttachmentValidationException>(() => retrieveExamAttachmentTask.AsTask()); this.loggingBrokerMock.Verify(broker => broker.LogError(It.Is(SameExceptionAs(expectedExamAttachmentValidationException))), Times.Once); this.storageBrokerMock.Verify(broker => broker.SelectExamAttachmentByIdAsync(It.IsAny <Guid>(), It.IsAny <Guid>()), Times.Never); this.storageBrokerMock.VerifyNoOtherCalls(); this.loggingBrokerMock.VerifyNoOtherCalls(); this.dateTimeBrokerMock.VerifyNoOtherCalls(); }