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> >())); }
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); }