From 5d1c13702c6a471fb56cf8a2f104c57a4bc97f70 Mon Sep 17 00:00:00 2001 From: slimahmad6 Date: Thu, 1 May 2025 17:36:10 +0100 Subject: [PATCH 1/2] ShouldThrowValidationExceptionOnModifyIfReferenceErrorOccursAndLogItAsync -> PASS --- ...ntributorServiceTests.Exceptions.Modify.cs | 64 +++++++++++++++++++ 1 file changed, 64 insertions(+) diff --git a/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs b/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs index f7b64c34..1a462fa2 100644 --- a/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs +++ b/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs @@ -4,9 +4,12 @@ using System; using System.Threading.Tasks; +using EFxceptions.Models.Exceptions; using FluentAssertions; using GitFyle.Core.Api.Models.Foundations.Contributors; using GitFyle.Core.Api.Models.Foundations.Contributors.Exceptions; +using GitFyle.Core.Api.Models.Foundations.Contributors; +using GitFyle.Core.Api.Models.Foundations.Contributors.Exceptions; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Moq; @@ -70,6 +73,67 @@ await Assert.ThrowsAsync( this.loggingBrokerMock.VerifyNoOtherCalls(); } + [Fact] + public async Task ShouldThrowValidationExceptionOnModifyIfReferenceErrorOccursAndLogItAsync() + { + // given + Contributor foreignKeyConflictedContributor = CreateRandomContributor(); + string randomMessage = GetRandomString(); + string exceptionMessage = randomMessage; + + var foreignKeyConstraintConflictException = + new ForeignKeyConstraintConflictException(message: exceptionMessage); + + var invalidContributorReferenceException = + new InvalidReferenceContributorException( + message: "Invalid contributor reference error occurred.", + innerException: foreignKeyConstraintConflictException, + data: foreignKeyConstraintConflictException.Data); + + var expectedContributorDependencyValidationException = + new ContributorDependencyValidationException( + message: "Contributor dependency validation error occurred, fix errors and try again.", + innerException: invalidContributorReferenceException, + data: invalidContributorReferenceException.Data); + + this.dateTimeBrokerMock.Setup(broker => + broker.GetCurrentDateTimeOffsetAsync()) + .Throws(foreignKeyConstraintConflictException); + + // when + ValueTask modifyContributorTask = + this.contributorService.ModifyContributorAsync(foreignKeyConflictedContributor); + + ContributorDependencyValidationException actualContributorDependencyValidationException = + await Assert.ThrowsAsync( + modifyContributorTask.AsTask); + + // then + actualContributorDependencyValidationException.Should().BeEquivalentTo( + expectedContributorDependencyValidationException); + + this.dateTimeBrokerMock.Verify(broker => + broker.GetCurrentDateTimeOffsetAsync(), + Times.Once); + + this.storageBrokerMock.Verify(broker => + broker.SelectContributorByIdAsync(foreignKeyConflictedContributor.Id), + Times.Never); + + this.loggingBrokerMock.Verify(broker => + broker.LogErrorAsync(It.Is(SameExceptionAs( + expectedContributorDependencyValidationException))), + Times.Once); + + this.storageBrokerMock.Verify(broker => + broker.UpdateContributorAsync(foreignKeyConflictedContributor), + Times.Never); + + this.dateTimeBrokerMock.VerifyNoOtherCalls(); + this.storageBrokerMock.VerifyNoOtherCalls(); + this.loggingBrokerMock.VerifyNoOtherCalls(); + } + [Fact] public async Task ShouldThrowDependencyExceptionOnModifyIfDatabaseUpdateExceptionOccursAndLogItAsync() { From 2d40125fe02abf84b75f4d5830da38e707d48d7f Mon Sep 17 00:00:00 2001 From: slimahmad6 Date: Thu, 1 May 2025 17:39:38 +0100 Subject: [PATCH 2/2] CODE RUB: Removed extra namspaces --- .../Contributors/ContributorServiceTests.Exceptions.Modify.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs b/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs index 1a462fa2..45de1fed 100644 --- a/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs +++ b/GitFyle.Core.Api.Tests.Unit/Services/Foundations/Contributors/ContributorServiceTests.Exceptions.Modify.cs @@ -8,8 +8,6 @@ using FluentAssertions; using GitFyle.Core.Api.Models.Foundations.Contributors; using GitFyle.Core.Api.Models.Foundations.Contributors.Exceptions; -using GitFyle.Core.Api.Models.Foundations.Contributors; -using GitFyle.Core.Api.Models.Foundations.Contributors.Exceptions; using Microsoft.Data.SqlClient; using Microsoft.EntityFrameworkCore; using Moq;