public void TestEquality2()
        {
            var articleMetaData1 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug",
                PublishDate = new System.DateTime(2019, 6, 1),
                Description = "some description"
            };

            var articleMetaData2 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug",
                PublishDate = new System.DateTime(2019, 6, 1),
                Description = "some description"
            };

            Assert.AreEqual(articleMetaData1, articleMetaData2);
            Assert.IsTrue(articleMetaData1.Equals(articleMetaData2));
            Assert.IsTrue(articleMetaData1 == articleMetaData2);
            Assert.IsFalse(articleMetaData1 != articleMetaData2);
            Assert.IsTrue(articleMetaData1 <= articleMetaData2);
            Assert.IsTrue(articleMetaData1 >= articleMetaData2);

            Assert.AreEqual(articleMetaData1.GetHashCode(), articleMetaData2.GetHashCode());
        }
        public async Task <ActionResult> AddAsync(string name, DateTime date, string content)
        {
            var filename = string.Format(
                CultureInfo.InvariantCulture,
                "{0}.{1:yyyyMMdd}.md",
                name,
                date);

            using (var client = this.currentUser.GetAuthenticatedClient())
            {
                if (client == null)
                {
                    return(RedirectToAction("Profile", "Home"));
                }

                using (var mem = new MemoryStream(Encoding.UTF8.GetBytes(content)))
                {
                    var upload = await client.Files.UploadAsync("/" + filename, body : mem);

                    var metadata = ArticleMetadata.Parse(upload.Name, upload.Rev);

                    return(Redirect(string.Format(
                                        CultureInfo.InvariantCulture,
                                        "/Blogs/{0}/{1}",
                                        this.currentUser.BlogName,
                                        metadata.DisplayName)));
                }
            }
        }
        public void Comparison()
        {
            var articleMetaData1 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug",
                PublishDate = new System.DateTime(2019, 6, 1)
            };

            var articleMetaData2 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug",
                PublishDate = new System.DateTime(2019, 6, 2)
            };

            Assert.IsTrue(articleMetaData1 < articleMetaData2);
            Assert.IsTrue(articleMetaData2 > articleMetaData1);
            Assert.IsFalse(articleMetaData1 > articleMetaData2);
            Assert.IsFalse(articleMetaData2 < articleMetaData1);
            Assert.IsTrue(articleMetaData1 <= articleMetaData2);
            Assert.IsTrue(articleMetaData2 >= articleMetaData1);
            Assert.IsFalse(articleMetaData1 >= articleMetaData2);
            Assert.IsFalse(articleMetaData2 <= articleMetaData1);
        }
        public void WriteToStreamWithDescription()
        {
            var title           = "Some Title";
            var slug            = "Some-Slug";
            var publishDate     = System.DateTime.UtcNow;
            var description     = "Some kind of description";
            var articleMetadata = new ArticleMetadata()
            {
                Slug        = slug,
                Title       = title,
                PublishDate = publishDate,
                Description = description
            };

            var memoryStream = new MemoryStream();

            articleMetadata.WriteTo(memoryStream, true);
            memoryStream.Seek(0, SeekOrigin.Begin);
            var streamString = new StreamReader(memoryStream).ReadToEnd();

            var compareString = $@"---
title: {title}
slug: {slug}
publish-date: {publishDate:O}
description: {description}
...
";

            Assert.AreEqual(compareString, streamString);
        }
Exemplo n.º 5
0
        /// <summary>
        /// コンストラクタ
        /// </summary>
        /// <param name="markdownFileInfo"></param>
        public ArticleContent(FileInfo markdownFileInfo, bool isDraft, bool isShowMarkdownFilePath)
        {
            IsShowMarkdownFilePath = isShowMarkdownFilePath;

            _markdownText = IOUtil.ReadAllText(markdownFileInfo.FullName, MarkdownFileEncoding, StringUtil.Lf);
            _metadata     = YamlConvert.DeserializeFirst <ArticleMetadata>(_markdownText);

#if DEBUG
            // 記事IDの指定がなかった場合に内部で一時的な値を割り当てる
            if (string.IsNullOrEmpty(_metadata.Id))
            {
                _metadata.Id = GuidUtil.NewNormalGuidString();
            }
#endif

            MarkdownFilePath       = markdownFileInfo.FullName;
            MarkdownFileUpdateTime = markdownFileInfo.LastWriteTime;

            Permalink = string.Format(PermalinkFormat, _metadata.Id);

            var titlePre = isDraft ? "(draft) " : string.Empty;
            var fileName = Path.GetFileNameWithoutExtension(markdownFileInfo.Name);

            var date  = fileName.Substring(0, 10);
            var title = fileName.Substring(11);

            Title = titlePre + title;
            Date  = date;

            if (string.IsNullOrEmpty(Id))
            {
                throw new Exception($"記事IDが指定されていません:{markdownFileInfo.FullName}");
            }
        }
Exemplo n.º 6
0
 public IViewComponentResult Invoke(ArticleMetadata articleMetadata, bool displayCompact)
 {
     if (displayCompact)
     {
         return(View("compact", articleMetadata));
     }
     else
     {
         return(View(articleMetadata));
     }
 }
        public void SettingPropertyToNullForcesEmpty()
        {
            var articleMetadata = new ArticleMetadata()
            {
                Slug        = null,
                Title       = null,
                Description = null
            };

            Assert.AreEqual(string.Empty, articleMetadata.Title);
            Assert.AreEqual(string.Empty, articleMetadata.Slug);
            Assert.AreEqual(string.Empty, articleMetadata.Description);
        }
        public async Task <ActionResult> IndexAsync(
            string filename,
            string content,
            string rev)
        {
            using (var client = this.currentUser.GetAuthenticatedClient())
            {
                if (client == null)
                {
                    return(RedirectToAction("Profile", "Home"));
                }

                using (var mem = new MemoryStream(Encoding.UTF8.GetBytes(content)))
                {
                    try
                    {
                        var updated = await client.Files.UploadAsync(
                            "/" + filename,
                            WriteMode.Overwrite.Instance,
                            body : mem);

                        rev = updated.Rev;
                    }
                    catch (ApiException <UploadError> e)
                    {
                        var uploadError = e.ErrorResponse.AsPath;
                        if (uploadError != null)
                        {
                            var reason = uploadError.Value.Reason;
                            var id     = filename.Split('.')[0];

                            var message = string.Format("Unable to update {0}. Reason: {1}", id, reason);

                            this.Flash(message, FlashLevel.Warning);
                            return(RedirectToAction("Index", new { id = id }));
                        }
                    }
                }

                var metadata = ArticleMetadata.Parse(filename, rev);

                await client.GetArticle(this.currentUser.BlogName, metadata, bypassCache : true);

                this.Flash(string.Format(
                               "Updated '{0}'.", metadata.Name));
                return(Redirect(string.Format(
                                    "/Blogs/{0}/{1}",
                                    this.currentUser.BlogName,
                                    metadata.DisplayName)));
            }
        }
        public void TestEqualityBothEmpty()
        {
            var articleMetaData1 = new ArticleMetadata();
            var articleMetaData2 = new ArticleMetadata();

            Assert.AreEqual(articleMetaData1, articleMetaData2);
            Assert.IsTrue(articleMetaData1.Equals(articleMetaData2));
            Assert.IsTrue(articleMetaData1 == articleMetaData2);
            Assert.IsFalse(articleMetaData1 != articleMetaData2);
            Assert.IsTrue(articleMetaData1 <= articleMetaData2);
            Assert.IsTrue(articleMetaData1 >= articleMetaData2);

            Assert.AreEqual(articleMetaData1.GetHashCode(), articleMetaData2.GetHashCode());
        }
        public void CreateFromString()
        {
            var title       = "Some Title";
            var slug        = "Some-Slug";
            var publishDate = System.DateTime.UtcNow;

            var theString = $@"---
title: {title}
slug: {slug}
publish-date: {publishDate:O}
...
";

            var articleMetadata = ArticleMetadata.ReadFrom(theString);

            Assert.AreEqual(title, articleMetadata.Title);
            Assert.AreEqual(slug, articleMetadata.Slug);
            Assert.AreEqual(publishDate, articleMetadata.PublishDate);
        }
Exemplo n.º 11
0
        private static Document FromArticleMetadata(ArticleMetadata articleMetadata)
        {
            var d = new Document
            {
                [SLUG]      = articleMetadata.Slug,
                [TIMESTAMP] = articleMetadata.PublishDate.ToString("O"),
                [TITLE]     = articleMetadata.Title
            };

            if (!String.IsNullOrWhiteSpace(articleMetadata.Description))
            {
                d[DESCRIPTION] = articleMetadata.Description;
            }
            if (articleMetadata.LockedForComments)
            {
                d[STATUS] = STATUS_LOCKED;
            }
            return(d);
        }
        public void CanSetProperties()
        {
            var title       = "Some Title";
            var slug        = "Some-Slug";
            var publishDate = System.DateTime.UtcNow;
            var description = "Some Description";

            var articleMetadata = new ArticleMetadata()
            {
                Slug        = slug,
                Title       = title,
                PublishDate = publishDate,
                Description = description
            };

            Assert.AreEqual(title, articleMetadata.Title);
            Assert.AreEqual(slug, articleMetadata.Slug);
            Assert.AreEqual(publishDate, articleMetadata.PublishDate);
            Assert.AreEqual(description, articleMetadata.Description);
        }
        public void ReadFromStream()
        {
            var title       = "Some Title";
            var slug        = "Some-Slug";
            var publishDate = System.DateTime.UtcNow;

            var streamString = $@"---
title: {title}
slug: {slug}
publish-date: {publishDate:O}
...
";

            var memoryStream    = new MemoryStream(Encoding.UTF8.GetBytes(streamString));
            var articleMetadata = ArticleMetadata.ReadFrom(memoryStream);

            Assert.AreEqual(title, articleMetadata.Title);
            Assert.AreEqual(slug, articleMetadata.Slug);
            Assert.AreEqual(publishDate, articleMetadata.PublishDate);
            Assert.AreEqual(string.Empty, articleMetadata.Description);
        }
        public void TestInequality()
        {
            var articleMetaData1 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug",
                PublishDate = new System.DateTime(2019, 6, 1)
            };

            var articleMetaData2 = new ArticleMetadata()
            {
                Title       = "Some Title",
                Slug        = "some-slug2",
                PublishDate = new System.DateTime(2019, 6, 1)
            };

            Assert.AreNotEqual(articleMetaData1, articleMetaData2);
            Assert.IsFalse(articleMetaData1.Equals(articleMetaData2));
            Assert.IsFalse(articleMetaData1 == articleMetaData2);
            Assert.IsTrue(articleMetaData1 != articleMetaData2);
        }
        public void TestToString()
        {
            var title           = "Some Title";
            var slug            = "Some-Slug";
            var publishDate     = System.DateTime.UtcNow;
            var articleMetadata = new ArticleMetadata()
            {
                Slug        = slug,
                Title       = title,
                PublishDate = publishDate
            };

            var compareString = $@"---
title: {title}
slug: {slug}
publish-date: {publishDate:O}
...
";

            Assert.AreEqual(compareString, articleMetadata.ToString());
        }
        public void Sort()
        {
            ArticleMetadata metadata0 = null;
            var             metadata1 = new ArticleMetadata()
            {
                Title       = "xyz",
                Slug        = "xyz",
                PublishDate = new System.DateTime(2000, 1, 1)
            };
            var metadata2 = new ArticleMetadata()
            {
                Title       = "abc",
                Slug        = "abc",
                PublishDate = new System.DateTime(2000, 1, 2)
            };
            var metadata3 = new ArticleMetadata()
            {
                Title       = "abc",
                Slug        = "abc",
                PublishDate = new System.DateTime(2000, 1, 3)
            };
            var metadata4 = new ArticleMetadata()
            {
                Title       = "abd",
                Slug        = "abc",
                PublishDate = new System.DateTime(2000, 1, 3)
            };
            var metadata5 = new ArticleMetadata()
            {
                Title       = "abc",
                Slug        = "abc",
                PublishDate = new System.DateTime(2000, 1, 4)
            };
            var metadata6 = new ArticleMetadata()
            {
                Title       = "abd",
                Slug        = "abc",
                PublishDate = new System.DateTime(2000, 1, 4)
            };


            var arr = new ArticleMetadata[]
            {
                metadata4,
                metadata3,
                metadata1,
                metadata0,
                metadata6,
                metadata5,
                metadata2
            };

            System.Array.Sort(arr);

            Assert.AreEqual(metadata0, arr[0]);
            Assert.AreEqual(metadata1, arr[1]);
            Assert.AreEqual(metadata2, arr[2]);
            Assert.AreEqual(metadata3, arr[3]);
            Assert.AreEqual(metadata4, arr[4]);
            Assert.AreEqual(metadata5, arr[5]);
            Assert.AreEqual(metadata6, arr[6]);
        }