Exemple #1
0
        public async Task OnPost_CreateNewNonExistingArticle_ShouldCreateArticleAndRedirect()
        {
            var topic    = "test topic";
            var content  = "test content";
            var authorId = Guid.NewGuid().ToString();

            this.mockArticleService
            .Setup(x => x.IsArticleExist(topic));

            this.mockMediator
            .Setup(m => m.Send(It.IsAny <CreateNewArticleCommand>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult(default(CommandResult)));

            var createModel = new CreateModel(this.mockMediator.Object, this.mockLogger.Object)
            {
                Article = new CreateArticleDto
                {
                    Topic   = topic,
                    Content = content
                }
            };

            createModel.AddPageContext("username", authorId);
            var result = await createModel.OnPostAsync();

            Assert.IsType <RedirectResult>(result);
            Assert.Equal("./Index", ((RedirectResult)result).Url);

            this.mockLogger.Verify(x => x.Log(LogLevel.Information, 0, It.IsAny <FormattedLogValues>(), It.IsAny <Exception>(), It.IsAny <Func <object, Exception, string> >()));
        }
Exemple #2
0
        public async Task ShouldCreateNewNonExistingArticleAndRedirect_GivenUserIsAuthenticated()
        {
            var expectedCommand = new CreateNewArticleCommand
            {
                Topic      = _topic,
                AuthorId   = userId,
                Content    = _content,
                AuthorName = username
            };

            _mediator.Setup(mediator => mediator.Send(It.IsAny <CreateNewArticleCommand>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult(new CommandResult {
                Successful = true, ObjectId = _expectedSlug
            }));

            _mediator.Setup(mediator => mediator.Send(It.IsAny <GetIsTopicAvailableQuery>(), It.IsAny <CancellationToken>()))
            .Returns(() => Task.FromResult(false));

            _mediator.Setup(mediator => mediator.Send(It.IsAny <GetArticlesToCreateFromArticleQuery>(), It.IsAny <CancellationToken>()))
            .Returns(Task.FromResult((_expectedSlug, new string[] { })));

            _sut = new CreateModel(_mediator.Object, _mapper, new NullLoggerFactory())
            {
                Article = new ArticleCreate
                {
                    Topic   = _topic,
                    Content = _content
                }
            };

            //we depend on a valid ClaimsPrinciple!! No check on User yet before sending the command
            _sut.AddPageContext(username, userId);
            var result = await _sut.OnPostAsync();

            Assert.IsType <RedirectToPageResult>(result);
            Assert.Equal(_expectedSlug, ((RedirectToPageResult)result).RouteValues["slug"]);
            _mediator.Verify(m => m.Send(
                                 It.Is <GetIsTopicAvailableQuery>(request =>
                                                                  request.ArticleId.Equals(0) &&
                                                                  request.Topic.Equals(_topic)),
                                 It.Is <CancellationToken>(token => token.Equals(CancellationToken.None))), Times.Once
                             );
            _mediator.Verify(m => m.Send(
                                 It.Is <CreateNewArticleCommand>(request =>
                                                                 request.Topic.Equals(expectedCommand.Topic) &&
                                                                 request.AuthorName.Equals(expectedCommand.AuthorName) &&
                                                                 request.Content.Equals(expectedCommand.Content) &&
                                                                 request.AuthorId.Equals(userId)),
                                 It.Is <CancellationToken>(token => token.Equals(CancellationToken.None))), Times.Once);
        }