Skip to content

Commit

Permalink
CODE RUB: PostImpressionProcessings Exceptions Upgrade v2.10.0
Browse files Browse the repository at this point in the history
Closes: #514
  • Loading branch information
glhays committed Sep 10, 2023
1 parent 7302783 commit c8b1940
Show file tree
Hide file tree
Showing 14 changed files with 191 additions and 104 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -18,20 +18,21 @@ public partial class PostImpressionProcessingServiceTests
{
[Theory]
[MemberData(nameof(DependencyValidationExceptions))]
public async Task ShouldThrowDependencyValidationOnUpsertIfDependencyValidationErrorOccursAndLogItAsync(
private async Task ShouldThrowDependencyValidationOnUpsertIfDependencyValidationErrorOccursAndLogItAsync(
Xeption dependencyValidationExceptions)
{
//given
// given
var somePostImpression = CreateRandomPostImpression();

var expectedPostImpressionProcessingDependencyValidationException =
new PostImpressionProcessingDependencyValidationException(
dependencyValidationExceptions.InnerException as Xeption);
message: "Post Impression dependency validation error occurred, please try again.",
innerException: dependencyValidationExceptions.InnerException as Xeption);

this.postImpressionServiceMock.Setup(service =>
service.RetrieveAllPostImpressions()).Throws(dependencyValidationExceptions);

//when
// when
ValueTask<PostImpression> upsertPostImpressionTask =
this.postImpressionProcessingService.UpsertPostImpressionAsync(somePostImpression);

Expand All @@ -40,95 +41,117 @@ public async Task ShouldThrowDependencyValidationOnUpsertIfDependencyValidationE
await Assert.ThrowsAsync<PostImpressionProcessingDependencyValidationException>(
upsertPostImpressionTask.AsTask);

//then
// then
actualPostImpressionProcessingDependencyValidationException.Should().BeEquivalentTo(
expectedPostImpressionProcessingDependencyValidationException);

this.postImpressionServiceMock.Verify(service =>
service.RetrieveAllPostImpressions(), Times.Once);
service.RetrieveAllPostImpressions(),
Times.Once);

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

this.postImpressionServiceMock.Verify(service =>
service.AddPostImpressions(It.IsAny<PostImpression>()), Times.Never);
service.AddPostImpressions(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.Verify(service =>
service.ModifyPostImpressionAsync(It.IsAny<PostImpression>()), Times.Never);
service.ModifyPostImpressionAsync(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.VerifyNoOtherCalls();
this.loggingBrokerMock.VerifyNoOtherCalls();
}

[Theory]
[MemberData(nameof(DependencyExceptions))]
public async Task ShouldThrowDependencyExceptionOnUpsertIfDependencyErrorOccursAndLogItAsync(
private async Task ShouldThrowDependencyExceptionOnUpsertIfDependencyErrorOccursAndLogItAsync(
Xeption dependencyException)
{
//given
// given
var somePostImpression = CreateRandomPostImpression();

var expectedPostImpressionProcessingDependencyException =
new PostImpressionProcessingDependencyException(
dependencyException.InnerException as Xeption);
message: "Post Impression dependency error occurred, please contact support",
innerException: dependencyException.InnerException as Xeption);

this.postImpressionServiceMock.Setup(service =>
service.RetrieveAllPostImpressions()).Throws(dependencyException);

//when
// when
ValueTask<PostImpression> upsertPostImpressionTask =
this.postImpressionProcessingService.UpsertPostImpressionAsync(somePostImpression);
this.postImpressionProcessingService.UpsertPostImpressionAsync(
somePostImpression);

PostImpressionProcessingDependencyException actualPostImpressionProcessingDependencyException =
await Assert.ThrowsAsync<PostImpressionProcessingDependencyException>(upsertPostImpressionTask.AsTask);
PostImpressionProcessingDependencyException
actualPostImpressionProcessingDependencyException =
await Assert.ThrowsAsync<PostImpressionProcessingDependencyException>(
upsertPostImpressionTask.AsTask);

//then
// then
actualPostImpressionProcessingDependencyException.Should().BeEquivalentTo(
expectedPostImpressionProcessingDependencyException);

this.postImpressionServiceMock.Verify(service =>
service.RetrieveAllPostImpressions(), Times.Once);
service.RetrieveAllPostImpressions(),
Times.Once);

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

this.postImpressionServiceMock.Verify(service =>
service.AddPostImpressions(It.IsAny<PostImpression>()), Times.Never);
service.AddPostImpressions(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.Verify(service =>
service.ModifyPostImpressionAsync(It.IsAny<PostImpression>()), Times.Never);
service.ModifyPostImpressionAsync(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.VerifyNoOtherCalls();
this.loggingBrokerMock.VerifyNoOtherCalls();
}

[Fact]
public async Task ShouldThrowServiceExceptionOnUpsertIfServiceErrorOccursAndLogItAsync()
private async Task ShouldThrowServiceExceptionOnUpsertIfServiceErrorOccursAndLogItAsync()
{
//given
// given
var somePostImpression = CreateRandomPostImpression();
var serviceException = new Exception();

var failedPostImpressionProcessingServiceException =
new FailedPostImpressionProcessingServiceException(serviceException);
new FailedPostImpressionProcessingServiceException(
message: "Failed Post Impression service occurred, please contact support",
innerException: serviceException);

var expectedPostImpressionProcessingServiceException =
new PostImpressionProcessingServiceException(failedPostImpressionProcessingServiceException);
new PostImpressionProcessingServiceException(
message: "Failed Post Impression external service occurred, please contact support",
innerException: failedPostImpressionProcessingServiceException);

this.postImpressionServiceMock.Setup(service =>
service.RetrieveAllPostImpressions()).Throws(serviceException);

//when
// when
ValueTask<PostImpression> upsertPostImpressionTask =
this.postImpressionProcessingService.UpsertPostImpressionAsync(somePostImpression);
this.postImpressionProcessingService.UpsertPostImpressionAsync(
somePostImpression);

PostImpressionProcessingServiceException actualPostImpressionProcessingServiceException =
PostImpressionProcessingServiceException
actualPostImpressionProcessingServiceException =
await Assert.ThrowsAsync<PostImpressionProcessingServiceException>(
upsertPostImpressionTask.AsTask);

//then
// then
actualPostImpressionProcessingServiceException.Should().BeEquivalentTo(
expectedPostImpressionProcessingServiceException);

Expand All @@ -137,16 +160,21 @@ await Assert.ThrowsAsync<PostImpressionProcessingServiceException>(

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

this.postImpressionServiceMock.Verify(service =>
service.AddPostImpressions(It.IsAny<PostImpression>()), Times.Never);
service.AddPostImpressions(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.Verify(service =>
service.ModifyPostImpressionAsync(It.IsAny<PostImpression>()), Times.Never);
service.ModifyPostImpressionAsync(
It.IsAny<PostImpression>()),
Times.Never);

this.postImpressionServiceMock.VerifyNoOtherCalls();
this.loggingBrokerMock.VerifyNoOtherCalls();
}
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,77 +16,86 @@ public partial class PostImpressionProcessingServiceTests
{
[Theory]
[MemberData(nameof(DependencyExceptions))]
public void ShouldThrowDependencyExceptionOnRetrieveAllIfDependencyErrorOccursAndLogItAsync(
private void ShouldThrowDependencyExceptionOnRetrieveAllIfDependencyErrorOccursAndLogItAsync(
Xeption dependencyException)
{
//given
// given
var somePostImpressions = CreateRandomPostImpressions();

var expectedPostImpressionProcessingDependencyException =
new PostImpressionProcessingDependencyException(
dependencyException.InnerException as Xeption);
message: "Post Impression dependency error occurred, please contact support",
innerException: dependencyException.InnerException as Xeption);

this.postImpressionServiceMock.Setup(service =>
service.RetrieveAllPostImpressions()).Throws(dependencyException);

//when
// when
Action retrieveAllPostImpressionAction = () =>
this.postImpressionProcessingService.RetrieveAllPostImpressions();

PostImpressionProcessingDependencyException actualPostImpressionProcessingDependencyException =
Assert.Throws<PostImpressionProcessingDependencyException>(retrieveAllPostImpressionAction);

//then
// then
actualPostImpressionProcessingDependencyException.Should().BeEquivalentTo(
expectedPostImpressionProcessingDependencyException);

this.postImpressionServiceMock.Verify(service =>
service.RetrieveAllPostImpressions(), Times.Once);
service.RetrieveAllPostImpressions(),
Times.Once);

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

this.postImpressionServiceMock.VerifyNoOtherCalls();
this.loggingBrokerMock.VerifyNoOtherCalls();
}

[Fact]
public void ShouldThrowServiceExceptionOnRetrieveAllIfServiceErrorOccursAndLogItAsync()
private void ShouldThrowServiceExceptionOnRetrieveAllIfServiceErrorOccursAndLogItAsync()
{
//given
// given
var somePostImpression = CreateRandomPostImpressions();
var serviceException = new Exception();

var failedPostImpressionProcessingServiceException =
new FailedPostImpressionProcessingServiceException(serviceException);
new FailedPostImpressionProcessingServiceException(
message: "Failed Post Impression service occurred, please contact support",
innerException: serviceException);

var expectedPostImpressionProcessingServiceException =
new PostImpressionProcessingServiceException(failedPostImpressionProcessingServiceException);
new PostImpressionProcessingServiceException(
message: "Failed Post Impression external service occurred, please contact support",
innerException: failedPostImpressionProcessingServiceException);

this.postImpressionServiceMock.Setup(service =>
service.RetrieveAllPostImpressions()).Throws(serviceException);

//when
// when
Action retrieveAllPostImpressionAction = () =>
this.postImpressionProcessingService.RetrieveAllPostImpressions();

PostImpressionProcessingServiceException actualPostImpressionProcessingDependencyException =
Assert.Throws<PostImpressionProcessingServiceException>(retrieveAllPostImpressionAction);

//then
// then
actualPostImpressionProcessingDependencyException.Should().BeEquivalentTo(
expectedPostImpressionProcessingServiceException);

this.postImpressionServiceMock.Verify(service =>
service.RetrieveAllPostImpressions(), Times.Once);
service.RetrieveAllPostImpressions(),
Times.Once);

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

this.postImpressionServiceMock.VerifyNoOtherCalls();
this.loggingBrokerMock.VerifyNoOtherCalls();
}
}
}
}
Loading

0 comments on commit c8b1940

Please sign in to comment.