public void AddOrAppendToDefaultHeader_AppendsHeader_WhenExists()
        {
            var rawBody = TestBodies.MultipleHeadersIncludingDefaultH1;

            var body          = new JournalEntryBody(rawBody);
            var originalCount = body.Count();

            body.Count(x => DateTime.TryParse(x.header.Replace("#", "").Trim(), out _)).Should().Be(1);
            var          defaultHeader = body.First().header;
            var          originalIndex = body.ToList().FindIndex(x => x.header == defaultHeader);
            const string appended      = "- Today I did the thing\r\n- Then I did another thing.";

            body.AddOrAppendToDefaultHeader(Today.Date(), new[] { appended });

            var currentIndex = body.ToList().FindIndex(x => x.header == defaultHeader);

            currentIndex.Should().Be(originalIndex);

            var currentCount = body.Count();

            currentCount.Should().Be(originalCount);

            var output = body.ToString();

            output.Length.Should().Be(rawBody.Trim().Length + appended.Length + 4); // 2 line breaks X 2 chars each
        }
        public void AddOrAppendToCustomHeader_ThrowsException_WhenLinesAreNullOrEmpty(ICollection <string> lines)
        {
            var rawBody = TestBodies.AllTextHasExactlyOneHeader;

            var body = new JournalEntryBody(rawBody);

            Assert.Throws <ArgumentException>(() => body.AddOrAppendToDefaultHeader(Today.Date(), lines));
        }
        public void AddOrAppendToDefaultHeader_AddsHeader_WhenNotExists()
        {
            var rawBody = TestBodies.AllTextHasExactlyOneHeader;

            var body = new JournalEntryBody(rawBody);

            body.Count().Should().Be(5);
            const string appended = "- Today I did the thing\r\n- Then I did another thing.";
            var          date     = new LocalDate(2020, 2, 9);

            body.AddOrAppendToDefaultHeader(date, new[] { appended });

            body.ToList().FindIndex(x => DateTime.TryParse(x.header.Replace("#", "").Trim(), out _)).Should().Be(0);
            body.Count().Should().Be(6);

            var output = body.ToString();

            output.Length.Should().Be(rawBody.Trim().Length + appended.Length + $"# {date.ToString()}".Length + 8); // 2 line breaks X 2 chars each
        }