public void ToString_ShouldInsertDefaultTags_IfNoneArePresent()
        {
            var frontMatter = new JournalFrontMatter(string.Empty, Today.Date());
            var yaml        = frontMatter.ToString(true);

            yaml.Should().Contain("- (untagged)");

            var text = frontMatter.ToString();

            text.Should().Contain("- (untagged)");
        }
Пример #2
0
        public void RenameTag(IJournalReader journalReader, string oldTag, string newTag)
        {
            if (string.IsNullOrWhiteSpace(oldTag) || string.IsNullOrWhiteSpace(newTag))
            {
                throw new ArgumentNullException($"'{nameof(oldTag)}' cannot be null, empty, or whitespace.", nameof(oldTag));
            }

            if (string.IsNullOrWhiteSpace(newTag))
            {
                throw new ArgumentNullException($"'{nameof(newTag)}' cannot be null, empty, or whitespace.", nameof(newTag));
            }

            if (!journalReader.FrontMatter.HasTags())
            {
                throw new InvalidOperationException("No tags exist in this journal.");
            }

            var currentTags  = journalReader.FrontMatter.Tags.ToList();
            var oldItemIndex = currentTags.IndexOf(oldTag);

            if (oldItemIndex < 0)
            {
                throw new InvalidOperationException($"The tag '{oldTag}' does not exist.");
            }

            currentTags[oldItemIndex] = newTag;

            var readmeExpression = new ReadmeParser(journalReader.FrontMatter.Readme).ToExpression(journalReader.EntryDate);
            var frontMatter      = new JournalFrontMatter(currentTags, readmeExpression);
            var newEntry         = frontMatter.ToString(asFrontMatter: true) + journalReader.RawBody;

            _fileSystem.File.WriteAllText(journalReader.FilePath, newEntry);
        }
        public void ToString_ReturnsValidFrontMatter_Always(string input, string expectedResult)
        {
            var journalDate = new LocalDate(2019, 9, 8);
            var frontMatter = new JournalFrontMatter(input, journalDate);
            var text        = frontMatter.ToString(true);

            text.Should().Be(expectedResult);
        }
        public void This_RemovesDuplicateTags_WhenPresent(string duplicateTags, string expectedYaml, int expectedCount)
        {
            var journalDate = new LocalDate(2019, 9, 8);
            var frontMatter = new JournalFrontMatter(duplicateTags, journalDate);

            frontMatter.Tags.Count.Should().Be(expectedCount);
            frontMatter.ToString().Should().Be(expectedYaml);
        }
        public void Constructor_CanAcceptYamlBlockIndicators(string input, string toString, string expectedReadmeString, IEnumerable <string> expectedTags)
        {
            var journalDate = new LocalDate(2019, 9, 8);
            var frontMatter = new JournalFrontMatter(input, journalDate);

            frontMatter.ToString().Should().Be(toString);
            frontMatter.Readme.Should().Be(expectedReadmeString);
            frontMatter.Tags.Should().BeEquivalentTo(expectedTags);
        }
        public void ToString_IgnoresNullValues_Always()
        {
            const string yaml        = "Tags:\r\n  - one\r\n  - two";
            var          journalDate = new LocalDate(2019, 9, 8);
            var          frontMatter = new JournalFrontMatter(yaml, journalDate);
            var          text        = frontMatter.ToString();

            // Should include nothing but the originally supplied tags.
            text.Should().Be(yaml.ToLowerInvariant());
        }