public async Task Test_SiteManager_CreateArticle_TestLoggingExtensionMethod() { // Arange var loggerMock = new LoggerMock <SiteManager>() .SetupLogLevel(Microsoft.Extensions.Logging.LogLevel.Information); var authorAccessMock = new AuthorAccessMock(new List <Author> { new Author { Id = 666, DisplayName = "Max", Verfied = false } }); var articleAccessMock = new ArticleAccessMock(); ISiteManager sut = new SiteManager(articleAccessMock.Object, authorAccessMock.Object, loggerMock.Object); // Act var request = new Kaylumah.AdventuresWithMock.Manager.Site.Interface.CreateArticleRequest { Title = "Pretty Title", Content = "# AdventuresWithMock ..." }; await sut.CreateArticle(request); // Assert authorAccessMock.Verify(x => x.FilterAuthors(It.IsAny <FilterAuthorCriteria>()), Times.Once); articleAccessMock.Verify(x => x.CreateArticles(It.IsAny <CreateArticlesRequest>()), Times.Never); loggerMock.VerifyLogging("Author with Id 666 is not verfied!", Microsoft.Extensions.Logging.LogLevel.Information); loggerMock.VerifyEventIdWasCalled(new Microsoft.Extensions.Logging.EventId(100, "AuthorNotVerfied")); }
public async Task Test_ArticleAccessMock_StatefullDemo1() { // Arange var articleAccessMock = new ArticleAccessMock() .SetupFilterArticles(new List <Article> { }); var sut = articleAccessMock.Object; // Act var initialResponse = await sut.FilterArticles(); var createResponse = await sut.CreateArticles(new CreateArticlesRequest { CreateArticleRequests = new CreateArticleRequest[] { new CreateArticleRequest { AuthorId = 666, Description = "1", Title = "1" }, new CreateArticleRequest { AuthorId = 666, Description = "2", Title = "2" } } }); var afterAddResponse = await sut.FilterArticles(); await sut.DeleteArticles(new DeleteArticlesRequest { DeleteArticleRequests = new DeleteArticleRequest[] { new DeleteArticleRequest { ArticleId = createResponse.Articles.First().Id } } }); var afterRemoveResponse = await sut.FilterArticles(); // Assert initialResponse.Should().NotBeNull(); initialResponse.Articles.Count().Should().Be(0, "No articles initially"); afterAddResponse.Should().NotBeNull(); afterAddResponse.Articles.Count().Should().Be(2, "We created two articles"); afterRemoveResponse.Should().NotBeNull(); afterRemoveResponse.Articles.Count().Should().Be(1, "There is only one article left"); // Verify result with predicate logic instead if Mock.Verify() articleAccessMock.VerifyArticles(articles => articles.Count(x => x.Removed) == 1).Should().BeTrue(); }
public async Task Test_SiteManager_CreateArticle_TestLogging() { // Arange var loggerMock = new LoggerMock <SiteManager>(); var authorAccessMock = new AuthorAccessMock(new List <Author> { }); var articleAccessMock = new ArticleAccessMock(); ISiteManager sut = new SiteManager(articleAccessMock.Object, authorAccessMock.Object, loggerMock.Object); // Act var request = new Kaylumah.AdventuresWithMock.Manager.Site.Interface.CreateArticleRequest { Title = "Pretty Title", Content = "# AdventuresWithMock ..." }; await sut.CreateArticle(request); // Assert authorAccessMock.Verify(x => x.FilterAuthors(It.IsAny <FilterAuthorCriteria>()), Times.Once); articleAccessMock.Verify(x => x.CreateArticles(It.IsAny <CreateArticlesRequest>()), Times.Never); loggerMock.VerifyLogging("No author found for 666", Microsoft.Extensions.Logging.LogLevel.Warning); }
public async Task Test_SiteManager_CreateArticle_RepoMocksDemo1() { // Arange var loggerMock = new LoggerMock <SiteManager>(); var authorAccessMock = new AuthorAccessMock(new List <Author> { new Author { Id = 666, DisplayName = "Max", Verfied = false } }); var articleAccessMock = new ArticleAccessMock(); ISiteManager sut = new SiteManager(articleAccessMock.Object, authorAccessMock.Object, loggerMock.Object); // Act var request = new Kaylumah.AdventuresWithMock.Manager.Site.Interface.CreateArticleRequest { Title = "Pretty Title", Content = "# AdventuresWithMock ..." }; await sut.CreateArticle(request); // Assert authorAccessMock.Verify(x => x.FilterAuthors(It.IsAny <FilterAuthorCriteria>()), Times.Once); articleAccessMock.Verify(x => x.CreateArticles(It.IsAny <CreateArticlesRequest>()), Times.Never); }