diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs index 8da983153a..21f52d069c 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs @@ -1,5 +1,6 @@ using MockAsynchronousMethods.Repository.Tests.Mock; using MockAsynchronousMethods.Tests.Mock; +using Moq; using System.Linq; using System.Threading.Tasks; using Xunit; @@ -45,5 +46,17 @@ public async Task GivenAMockedDatabase_WhenRequestingAListOfArticleAsynchronousl Assert.NotNull(result); Assert.True(result.Any()); } + + [Fact] + public async Task GivenAMockedDatabase_WhenDeletingAnArticleAsynchronously_ThenTheDeleteIsCalledOnce() + { + var mockArticleRepository = new FakeDbArticleMock() + .DeleteAsync(); + + var articleRepository = new ArticleRepository(mockArticleRepository.Object); + await articleRepository.DeleteArticleAsync(1); + + mockArticleRepository.Verify(x => x.DeleteAsync(1), Times.Once); + } } } \ No newline at end of file diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs index e028655211..2892a6029d 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs @@ -3,6 +3,7 @@ using MockAsynchronousMethods.Tests.Mock; using Moq; using System.Linq; +using System.Threading.Tasks; namespace MockAsynchronousMethods.Repository.Tests.Mock { @@ -31,5 +32,13 @@ public FakeDbArticleMock GetAllAsync() return this; } + + public FakeDbArticleMock DeleteAsync() + { + Setup(x => x.DeleteAsync(It.IsAny())) + .Returns(Task.CompletedTask); + + return this; + } } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/MockAsynchronousMethods.Tests.csproj b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/MockAsynchronousMethods.Tests.csproj index f2aa4eabf1..92c7b28309 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/MockAsynchronousMethods.Tests.csproj +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/MockAsynchronousMethods.Tests.csproj @@ -1,21 +1,23 @@  - net6.0 + net10.0 + enable enable false + true - - - - + + + + runtime; build; native; contentfiles; analyzers; buildtransitive all - + runtime; build; native; contentfiles; analyzers; buildtransitive all diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/ArticleRepository.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/ArticleRepository.cs index e422c81dd4..54648cdf3a 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/ArticleRepository.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/ArticleRepository.cs @@ -21,5 +21,10 @@ public async Task> GetAllArticlesAsync() { return await _fakeDbArticle.GetAsync(); } + + public async Task DeleteArticleAsync(int id) + { + await _fakeDbArticle.DeleteAsync(id); + } } } \ No newline at end of file diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs index 8e43a207eb..f5fb91c9e0 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs @@ -43,5 +43,10 @@ public async Task> GetAsync() { return await Task.FromResult(_articles.FirstOrDefault(x => x.Id == id)); } + + public Task DeleteAsync(int id) + { + return Task.CompletedTask; + } } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs index ee8082e7a2..5da5ac5286 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs @@ -6,5 +6,6 @@ public interface IArticleRepository { Task GetArticleAsync(int id); Task> GetAllArticlesAsync(); + Task DeleteArticleAsync(int id); } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs index e6a42ec499..4ffb0be586 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs @@ -6,5 +6,6 @@ public interface IFakeDbArticles { Task> GetAsync(); Task GetByIdAsync(int id); + Task DeleteAsync(int id); } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/MockAsynchronousMethods.Repository.csproj b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/MockAsynchronousMethods.Repository.csproj index 132c02c59c..9ed914b5ba 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/MockAsynchronousMethods.Repository.csproj +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/MockAsynchronousMethods.Repository.csproj @@ -1,7 +1,7 @@ - net6.0 + net10.0 enable enable