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