示例#1
0
        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));
        }
示例#2
0
        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");
        }
示例#3
0
        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);
        }
示例#4
0
        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");
        }
示例#5
0
        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");
        }
示例#6
0
        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");
        }
示例#7
0
        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();
        }
示例#8
0
        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));
        }
示例#9
0
        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();
        }
示例#10
0
        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");
        }
示例#11
0
        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)));
        }
示例#12
0
        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");
        }