public void TestCreateArticleCommand_AuthorNotFound() { var authorId = Guid.NewGuid(); var articleId = Guid.NewGuid(); var heading = ""; var text = "text"; uint year = 2020; Author author = null; var mediator = new Mock <IMediator>(); var articleRepo = new Mock <IArticleRepo>(); var authorRepo = new Mock <IAuthorRepo>(); authorRepo.Setup(x => x.GetById(It.IsAny <Guid>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(author)); var createCommand = new CreateArticleCommand() { AuthorId = authorId, Heading = heading, Text = text, Year = year }; var handler = new CreateArticleCommand.Handler(articleRepo.Object, authorRepo.Object, mediator.Object); Assert.ThrowsAsync <NotFoundException>(() => handler.Handle(createCommand, new CancellationToken())); }
public void TestCreateArticleCommand() { var authorId = Guid.NewGuid(); var articleId = Guid.NewGuid(); var heading = "heading"; var text = "text"; uint year = 2020; var author = new Author() { Id = authorId, FirstName = "Firstname", LastName = "Lastname" }; var mediator = new Mock <IMediator>(); var articleRepo = new Mock <IArticleRepo>(); articleRepo.Setup(x => x.Save(It.IsAny <Article>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(new Article(author) { Id = articleId, Heading = heading, Text = text, Year = year, CreatedDate = DateTime.Now })); var authorRepo = new Mock <IAuthorRepo>(); authorRepo.Setup(x => x.GetById(It.IsAny <Guid>(), It.IsAny <CancellationToken>())).Returns(Task.FromResult(author)); var createCommand = new CreateArticleCommand() { AuthorId = authorId, Heading = heading, Text = text, Year = year }; var handler = new CreateArticleCommand.Handler(articleRepo.Object, authorRepo.Object, mediator.Object); Assert.DoesNotThrowAsync(() => handler.Handle(createCommand, new CancellationToken())); }
public async Task TestHandle_WithoutTags_ShouldCreateEntityWithCorrectProperties(string title, string description, string body) { // Arrange var author = new UserProfile(Guid.NewGuid().ToString(), "email", "username"); Context.UserProfiles.Add(author); await Context.SaveChangesAsync(); var command = new CreateArticleCommand { Title = title, Description = description, Body = body }; var currentUser = Mock.Of <ICurrentUserService>(s => s.UserId == author.Id); var sut = new CreateArticleCommand.Handler(currentUser, Context); // Act await sut.Handle(command, CancellationToken.None); var article = await Context.Articles .Include(a => a.Tags) .Include(a => a.Author) .SingleOrDefaultAsync(); // Assert article.Should().NotBeNull(); article.Body.Should().Be(body); article.Description.Should().Be(description); article.Title.Should().Be(title); article.Tags.Should().BeEmpty(); article.Author.Should().BeEquivalentTo(author); }
public async Task TestHandle_WithTags_ShouldCreateCorrectTags(string title, string description, string body) { // Arrange var existingTag = new Tag("existingTag"); var newTagValue = "newTagValue"; var author = new UserProfile(Guid.NewGuid().ToString(), "email", "username"); Context.UserProfiles.Add(author); Context.Tags.Add(existingTag); await Context.SaveChangesAsync(); var command = new CreateArticleCommand { Title = title, Description = description, Body = body, TagList = new List <string> { newTagValue, existingTag.Value } }; var expectedTags = new List <Tag> { new Tag(newTagValue), existingTag }; var currentUser = Mock.Of <ICurrentUserService>(s => s.UserId == author.Id); var sut = new CreateArticleCommand.Handler(currentUser, Context); // Act await sut.Handle(command, CancellationToken.None); var article = await Context.Articles .Include(a => a.Tags) .SingleOrDefaultAsync(); var tags = article.Tags.Select(t => t.Tag); // Assert article.Should().NotBeNull(); tags.Should().BeEquivalentTo(expectedTags, opts => opts.Excluding(t => t.Id)); }