public async Task Reset_publish_date_after_unpublishing() { var draft = new Draft(1, "JS", null, Language.English, "learn js", "js", "<p>text</p>"); _dateProvider.Now.Returns(new DateTime(2010, 1, 1)); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Post.PublishDate.Should().BeSameDateAs(new DateTime(2010, 1, 1)); _dateProvider.Now.Returns(new DateTime(2011, 1, 1)); draft.Unpublish(); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Post.PublishDate.Should().BeSameDateAs(new DateTime(2011, 1, 1)); }
public async Task Dont_publish_when_there_is_no_summary() { var draft = new Draft(0, "JS", null, Language.English, "", "js", "Learning JS"); var result = await draft.Publish(_dateProvider, _htmlProcesssor); result.Errors.Should().ContainEquivalentOf("'Summary' is required"); }
public async Task Slugify_change_some_characters(string title, string result) { var draft = new Draft(0, title, null, Language.English, "learn js", "js", "<p>text</p>"); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Post.Url.Should().Be(result); }
public async Task Use_english_url_for_english_posts_if_available() { var draft = new Draft(0, "the post", "the-url", Language.English, "learn js", "js", "<p>text</p>"); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Post.Url.Should().Be("the-url"); }
public async Task Throw_if_english_url_is_not_available_for_farsi_posts() { var draft = new Draft(0, "the post", null, Language.Farsi, "learn js", "js", "<p>text</p>"); var result = await draft.Publish(_dateProvider, _htmlProcesssor); result.Errors.Should().ContainEquivalentOf("EnglishUrl is required for Farsi posts"); }
public async Task Farsi_posts_should_be_slugified_to_english_url() { var draft = new Draft(0, "the post", "the-url", Language.Farsi, "learn js", "js", "<p>text</p>"); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Post.Url.Should().Be("the-url"); }
public async Task Remove_post_after_unpublishing() { var draft = new Draft(1, "JS", null, Language.English, "learn js", "js", "<p>text</p>"); await draft.Publish(_dateProvider, _htmlProcesssor); draft.Unpublish(); draft.Post.Should().BeNull(); }
public async Task Set_now_as_post_date_when_publishing_for_the_first_time() { var dateProvider = _dateProvider; dateProvider.Now.Returns(new DateTime(2019, 8, 27)); var htmlProcessor = _htmlProcesssor; htmlProcessor.ProcessAsync(Arg.Any <string>()).Returns("<p>TEXT</p>"); var draft = new Draft(0, "title", null, Language.English, "summary", "tags", "<p>TEXT</p>"); await draft.Publish(dateProvider, htmlProcessor); draft.Post.PublishDate.Should().BeSameDateAs(new DateTime(2019, 8, 27)); dateProvider.Now.Returns(new DateTime(2001, 1, 1)); await draft.Publish(dateProvider, htmlProcessor); draft.Post.PublishDate.Should().BeSameDateAs(new DateTime(2019, 8, 27)); }
public async Task Publish_if_code_block_is_empty() { var draft = new Draft(); var command = new DraftUpdateCommand { Title = "JS", Summary = "Learn JS", Tags = "js", Language = Language.English, Content = "<p>text</p><pre class=\"code\"> </code>" }; draft.Update(command); var result = await draft.Publish(_dateProvider, _htmlProcesssor); result.Failed.Should().BeFalse(); }
public async Task Dont_publish_if_language_of_code_block_is_not_specified() { var draft = new Draft(); var command = new DraftUpdateCommand { Title = "JS", Summary = "Learn JS", Tags = "js", Language = Language.English, Content = "<pre class=\"code\">some code</code>" }; draft.Update(command); var result = await draft.Publish(_dateProvider, _htmlProcesssor); result.Failed.Should().BeTrue(); result.Errors.Should().ContainEquivalentOf("Language is not specified for the code block #1"); }
public async Task <Result> Handle(DraftPreviewQuery request, CancellationToken cancellationToken) { var draft = new Draft(); var updateInfo = _mapper.Map <DraftUpdateCommand>(request); updateInfo.Summary = "Not Important"; var updateResult = draft.Update(updateInfo); if (updateResult.Failed) { return(Result.MakeFailure(updateResult)); } var publishResult = await draft.Publish(_dateProvider, _htmlProcessor); if (publishResult.Failed) { return(Result.MakeFailure(publishResult)); } return(Result.MakeSuccess(_mapper.Map <PostViewModel>(draft.Post))); }
public async Task Dont_publish_if_code_block_language_is_invalid() { var draft = new Draft(); var command = new DraftUpdateCommand { Title = "JS", Summary = "Learn JS", Tags = "js", Language = Language.English, Content = "<pre class=\"code\">\nclojure\nsome code</code>" }; draft.Update(command); var result = await draft.Publish(_dateProvider, _htmlProcesssor); result.Failed.Should().BeTrue(); result.Errors .First() .Should() .StartWith("Specified language in code block #1 is not valid"); }