diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs index 8da983153a..bc80bb4687 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/ArticleRepositoryTests.cs @@ -1,5 +1,7 @@ +using MockAsynchronousMethods.Repository.DbModels; using MockAsynchronousMethods.Repository.Tests.Mock; using MockAsynchronousMethods.Tests.Mock; +using Moq; using System.Linq; using System.Threading.Tasks; using Xunit; @@ -45,5 +47,17 @@ public async Task GivenAMockedDatabase_WhenRequestingAListOfArticleAsynchronousl Assert.NotNull(result); Assert.True(result.Any()); } + + [Fact] + public async Task GivenAMockedDatabase_WhenSavingAnArticleAsynchronously_ThenTheSaveMethodIsInvokedOnce() + { + var mockArticleRepository = new FakeDbArticleMock() + .SaveAsync(); + + var articleRepository = new ArticleRepository(mockArticleRepository.Object); + await articleRepository.SaveArticleAsync(FakeDb.Articles.First()); + + mockArticleRepository.Verify(x => x.SaveAsync(It.IsAny()), 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..4a7985cc66 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods.Tests/Mock/FakeDbArticleMock.cs @@ -31,5 +31,13 @@ public FakeDbArticleMock GetAllAsync() return this; } + + public FakeDbArticleMock SaveAsync() + { + Setup(x => x.SaveAsync(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..2c5651b002 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 SaveArticleAsync(ArticleDbModel article) + { + await _fakeDbArticle.SaveAsync(article); + } } } \ 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..271a415421 100644 --- a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs +++ b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/FakeDatabase/FakeDbArticles.cs @@ -43,5 +43,11 @@ public async Task> GetAsync() { return await Task.FromResult(_articles.FirstOrDefault(x => x.Id == id)); } + + public async Task SaveAsync(ArticleDbModel article) + { + _articles.Add(article); + await Task.CompletedTask; + } } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IArticleRepository.cs index ee8082e7a2..d7b56d2d15 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 SaveArticleAsync(ArticleDbModel article); } } diff --git a/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs b/dotnet-testing/MockAsynchronousMethods/MockAsynchronousMethods/Interfaces/IFakeDbArticles.cs index e6a42ec499..48038a0dea 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 SaveAsync(ArticleDbModel article); } } 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