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()));
        }
Example #3
0
        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);
        }
Example #4
0
        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));
        }