summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJonathan Wren <jonathan@nowandwren.com>2020-10-17 15:17:38 -0700
committerGitHub <noreply@github.com>2020-10-17 15:17:38 -0700
commit99f708ca0b244db0d9dc5ed19e1c80d16872fb0d (patch)
treefea797f123c98d8a42ed40967709562af5fa96ce
parent1a561a72d9d943c4c9f9780544fbc9545befe9a3 (diff)
[WIP] Lots of test refactoring (#1042)
* make behave slightly less verbose for use with behave --format progress2 * standardize behave tests * move tests around to be more behavior driven * clean up txt file after tests * add more tests, add more functionality to behave for calling mock editor * move around behave tests, get rid of regression files * clean up some code around keyrings * add more placeholder test scenarios (marked with @todo) You can run just these tests with `behave --no-skipped --tags=todo` * fix "missing_directory" test This test was missing the config file it was trying to use. So, it was really a very useless, broken test that we absolutely should not have approved the PR (#963) for. * add write tests for each journal type * update version tests, add new regex match behave step * add config test outlines * add journal types to some search tests * change "basic" config reference to "simple" * update configs * add more journal types in search * fix basic folder journal reference * add flush output steps to behave, update delete flag tests * fix failing test with a flush * update more delete flag tests to include other journal types * fix file cleanup after failed test with no debug on * fix password test * fix DayOne tag sample data, move search/format tag tests, and run them on multiple jrnl types * added ability to auto-prompt for password for encrypted journals Only uses password when prompted, and doesn't get in the way of other input prompts. This allows us to run the same scenarios on both encrypted journals and other journal types. * fold encrypted scenarios into the rest of the scenarios where possible * remove apostrophe that is breaking tests on CI * add more journal type tests to import feature * standardize whitespace in behave tests, take out duplicate test * update handling of cache directories in test suite (easier syntax) * skip failing YAML exporter emoji test on Windows * added @todo tags for things that need follow-up Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
-rw-r--r--features/build.feature8
-rw-r--r--features/contains.feature29
-rw-r--r--features/core.feature200
-rw-r--r--features/custom_dates.feature35
-rw-r--r--features/data/configs/basic_dayone.yaml17
-rw-r--r--features/data/configs/basic_encrypted.yaml17
-rw-r--r--features/data/configs/basic_folder.yaml17
-rw-r--r--features/data/configs/basic_onefile.yaml17
-rw-r--r--features/data/configs/dayone_empty.yaml17
-rw-r--r--features/data/configs/editor_empty_folder.yaml12
-rw-r--r--features/data/configs/editor_encrypted.yaml17
-rw-r--r--features/data/configs/missing_directory.yaml17
-rw-r--r--features/data/configs/missing_journal.yaml17
-rw-r--r--features/data/configs/simple.yaml (renamed from features/data/configs/basic.yaml)0
-rw-r--r--features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry53
-rw-r--r--features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry55
-rw-r--r--features/data/journals/basic_dayone.dayone/entries/FD8ABC8EFED711EABC35FAFFC2100C3D.doentry44
-rw-r--r--features/data/journals/basic_encrypted.journal1
-rw-r--r--features/data/journals/basic_folder/2020/08/29.txt19
-rw-r--r--features/data/journals/basic_folder/2020/08/31.txt23
-rw-r--r--features/data/journals/basic_folder/2020/09/24.txt11
-rw-r--r--features/data/journals/basic_onefile.journal58
-rw-r--r--features/data/journals/dayone_empty.dayone/entries/empty.txt1
-rw-r--r--features/data/journals/little_endian_dates.journal2
-rw-r--r--features/datetime.feature155
-rw-r--r--features/dayone.feature95
-rw-r--r--features/dayone_regressions.feature25
-rw-r--r--features/delete.feature272
-rw-r--r--features/encrypt.feature35
-rw-r--r--features/encryption.feature81
-rw-r--r--features/environment.py33
-rw-r--r--features/exporting.feature147
-rw-r--r--features/file_storage.feature46
-rw-r--r--features/folder.feature42
-rw-r--r--features/format.feature514
-rw-r--r--features/import.feature93
-rw-r--r--features/multiple_journals.feature12
-rw-r--r--features/password.feature87
-rw-r--r--features/regression.feature175
-rw-r--r--features/search.feature228
-rw-r--r--features/star.feature35
-rw-r--r--features/starring.feature20
-rw-r--r--features/steps/core.py299
-rw-r--r--features/steps/export_steps.py31
-rw-r--r--features/tag.feature53
-rw-r--r--features/tagging.feature121
-rw-r--r--features/upgrade.feature66
-rw-r--r--features/write.feature182
48 files changed, 2367 insertions, 1167 deletions
diff --git a/features/build.feature b/features/build.feature
new file mode 100644
index 00000000..4725ea85
--- /dev/null
+++ b/features/build.feature
@@ -0,0 +1,8 @@
+Feature: Build process
+
+ @deployment_tests
+ Scenario: Version numbers should stay in sync
+ Given we use the config "simple.yaml"
+ When we run "jrnl --version"
+ Then we should get no error
+ And the output should contain pyproject.toml version
diff --git a/features/contains.feature b/features/contains.feature
deleted file mode 100644
index eac3a464..00000000
--- a/features/contains.feature
+++ /dev/null
@@ -1,29 +0,0 @@
-Feature: Contains
-
- Scenario: Searching for a string
- Given we use the config "basic.yaml"
- When we run "jrnl -contains life"
- Then we should get no error
- and the output should be
- """
- 2013-06-10 15:40 Life is good.
- | But I'm better.
- """
-
- Scenario: Searching for a string within tag results
- Given we use the config "tags.yaml"
- When we run "jrnl @idea -contains software"
- Then we should get no error
- And the output should contain "software"
-
- Scenario: Searching for a string within AND tag results
- Given we use the config "tags.yaml"
- When we run "jrnl -and @journal @idea -contains software"
- Then we should get no error
- and the output should contain "software"
-
- Scenario: Searching for a string within NOT tag results
- Given we use the config "tags.yaml"
- When we run "jrnl -not @dan -contains software"
- Then we should get no error
- and the output should contain "software"
diff --git a/features/core.feature b/features/core.feature
index b8a987ec..dc78a7a3 100644
--- a/features/core.feature
+++ b/features/core.feature
@@ -1,201 +1,21 @@
-Feature: Basic reading and writing to a journal
+Feature: Functionality of jrnl outside of actually handling journals
- Scenario: Loading a sample journal
- Given we use the config "basic.yaml"
- When we run "jrnl -n 2"
- Then we should get no error
- and the output should be
- """
- 2013-06-09 15:39 My first entry.
- | Everything is alright
-
- 2013-06-10 15:40 Life is good.
- | But I'm better.
- """
-
- Scenario: Printing a journal that has multiline entries
- Given we use the config "multiline.yaml"
- When we run "jrnl -n 1"
- Then we should get no error
- and the output should be
- """
- 2013-06-09 15:39 Multiple line entry.
- | This is the first line.
- | This line doesn't have any ending punctuation
- |
- | There is a blank line above this.
- """
-
- Scenario: Multiline entry with punctuation
- Given we use the config "basic.yaml"
- When we run "jrnl This is. the title\\n This is the second line"
- and we run "jrnl -n 1"
- Then the output should contain "This is. the title"
-
- Scenario: Single line entry with punctuation
- Given we use the config "basic.yaml"
- When we run "jrnl This is. the title"
- and we run "jrnl -n 1"
- Then the output should contain "| the title"
-
- Scenario: Writing an entry from command line
- Given we use the config "basic.yaml"
- When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa."
- Then we should see the message "Entry added"
- When we run "jrnl -n 1"
- Then the output should contain "2013-07-23 09:00 A cold and stormy day."
-
- Scenario: Writing an empty entry from the editor
- Given we use the config "editor.yaml"
- When we open the editor and enter nothing
- Then we should see the message "[Nothing saved to file]"
-
- Scenario: Sending an argument with spaces to the editor should work
- Given we use the config "editor-args.yaml"
- When we open the editor and enter "lorem ipsum"
- Then the editor should have been called with 5 arguments
- And one editor argument should be "vim"
- And one editor argument should be "-f"
- And one editor argument should be "-c"
- And one editor argument should match "'?setf markdown'?"
-
- Scenario: Writing an empty entry from the command line
- Given we use the config "basic.yaml"
- When we run "jrnl" and enter nothing
- Then the output should be
- """
-
- """
-
- Scenario: Filtering for dates
- Given we use the config "basic.yaml"
- When we run "jrnl -on 2013-06-10 --short"
- Then the output should be "2013-06-10 15:40 Life is good."
- When we run "jrnl -on 'june 6 2013' --short"
- Then the output should be "2013-06-10 15:40 Life is good."
-
- Scenario: Emoji support
- Given we use the config "basic.yaml"
- When we run "jrnl 23 july 2013: 🌞 sunny day. Saw an 🐘"
- Then we should see the message "Entry added"
- When we run "jrnl -n 1"
- Then the output should contain "🌞"
- and the output should contain "🐘"
-
- Scenario: Writing an entry at the prompt
- Given we use the config "basic.yaml"
- When we run "jrnl" and enter "25 jul 2013: I saw Elvis. He's alive."
+ Scenario: Displaying the version number
+ Given we use the config "simple.yaml"
+ When we run "jrnl --version"
Then we should get no error
- and the journal should contain "[2013-07-25 09:00] I saw Elvis."
- and the journal should contain "He's alive."
+ Then the output should match "^jrnl version v\d+\.\d+\.\d+(-(alpha|beta))?$"
Scenario: Displaying the version number
- Given we use the config "basic.yaml"
+ Given we use the config "simple.yaml"
When we run "jrnl -v"
Then we should get no error
- Then the output should contain "version"
-
- Scenario: --short displays the short version of entries (only the title)
- Given we use the config "basic.yaml"
- When we run "jrnl -on 2013-06-10 --short"
- Then the output should be "2013-06-10 15:40 Life is good."
-
- Scenario: -s displays the short version of entries (only the title)
- Given we use the config "basic.yaml"
- When we run "jrnl -on 2013-06-10 -s"
- Then the output should be "2013-06-10 15:40 Life is good."
-
- Scenario: Invalid color configuration
- Given we use the config "invalid_color.yaml"
- When we run "jrnl -on 2013-06-10 -s"
- Then the output should be
- """
- 2013-06-10 15:40 Life is good.
- """
- And we should get no error
-
- Scenario: Journal directory does not exist
- Given we use the config "missing_directory.yaml"
- When we run "jrnl Life is good"
- and we run "jrnl -n 1"
- Then the output should contain "Life is good"
-
- Scenario: Installation with relative journal and referencing from another folder
- Given we use the config "missingconfig"
- When we run "jrnl hello world" and enter
- """
- test.txt
- n
- """
- and we change directory to "features"
- and we run "jrnl -n 1"
- Then the output should contain "hello world"
+ Then the output should match "^jrnl version v\d+\.\d+\.\d+(-(alpha|beta))?$"
- Scenario: --diagnostic runs without exceptions
+ Scenario: Running the diagnostic command
When we run "jrnl --diagnostic"
Then the output should contain "jrnl"
And the output should contain "Python"
- Scenario: --import allows new entry from stdin
- Given we use the config "basic.yaml"
- When we run "jrnl --import" and pipe "[2020-07-05 15:00] Observe and import."
- And we run "jrnl -1"
- Then the journal should contain "[2020-07-05 15:00] Observe and import."
- And the output should contain "Observe and import"
-
- Scenario: --import allows new large entry from stdin
- Given we use the config "basic.yaml"
- When we run "jrnl --import" and pipe
- """
- [2020-07-05 15:00] Observe and import.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada quis
- est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque augue
- et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu consequat.
- Aenean ante ex, elementum ut interdum et, mattis eget lacus. In commodo nulla nec
- tellus placerat, sed ultricies metus bibendum. Duis eget venenatis erat. In at
- dolor dui end of entry.
- """
- And we run "jrnl -1"
- Then the journal should contain "[2020-07-05 15:00] Observe and import."
- And the output should contain "Observe and import"
- And the output should contain "Lorem ipsum"
- And the output should contain "end of entry."
-
- Scenario: --import allows multiple new entries from stdin
- Given we use the config "basic.yaml"
- When we run "jrnl --import" and pipe
- """
- [2020-07-05 15:00] Observe and import.
- Lorem ipsum dolor sit amet, consectetur adipiscing elit.
-
- [2020-07-05 15:01] Twice as nice.
- Sed dignissim sed nisl eu consequat.
- """
- Then the journal should contain "[2020-07-05 15:00] Observe and import."
- Then the journal should contain "[2020-07-05 15:01] Twice as nice."
-
- Scenario: --import allows import new entries from file
- Given we use the config "basic.yaml"
- Then the journal should contain "My first entry."
- And the journal should contain "Life is good."
- But the journal should not contain "I have an @idea"
- And the journal should not contain "I met with"
- When we run "jrnl --import --file features/journals/tags.journal"
- Then the journal should contain "My first entry."
- And the journal should contain "Life is good."
- And the journal should contain "PROFIT!"
-
- Scenario: --import doesn't get confused with piping and file
- Given we use the config "basic.yaml"
- Then the journal should contain "My first entry."
- And the journal should contain "Life is good."
- But the journal should not contain "I have an @idea"
- And the journal should not contain "I met with"
- When we run "jrnl --import --file features/journals/tags.journal" and pipe
- """
- [2020-07-05 15:00] I should not exist!
- """
- Then the journal should contain "My first entry."
- And the journal should contain "PROFIT!"
- But the journal should not contain "I should not exist!"
-
+ @todo
+ Scenario: Listing available journals
diff --git a/features/custom_dates.feature b/features/custom_dates.feature
deleted file mode 100644
index d3489648..00000000
--- a/features/custom_dates.feature
+++ /dev/null
@@ -1,35 +0,0 @@
-Feature: Reading and writing to journal with custom date formats
-
- Scenario: Loading a sample journal
- Given we use the config "little_endian_dates.yaml"
- When we run "jrnl -n 2"
- Then we should get no error
- And the output should be
- """
- 09.06.2013 15:39 My first entry.
- | Everything is alright
-
- 10.06.2013 15:40 Life is good.
- | But I'm better.
- """
-
- Scenario: Writing an entry from command line
- Given we use the config "little_endian_dates.yaml"
- When we run "jrnl 2013-07-12: A cold and stormy day. I ate crisps on the sofa."
- Then we should see the message "Entry added"
- When we run "jrnl -n 1"
- Then the output should contain "12.07.2013 09:00 A cold and stormy day."
-
- Scenario: Filtering for dates
- Given we use the config "little_endian_dates.yaml"
- When we run "jrnl -on 2013-06-10 --short"
- Then the output should be "10.06.2013 15:40 Life is good."
- When we run "jrnl -on 'june 6 2013' --short"
- Then the output should be "10.06.2013 15:40 Life is good."
-
- Scenario: Writing an entry at the prompt
- Given we use the config "little_endian_dates.yaml"
- When we run "jrnl" and enter "2013-05-10: I saw Elvis. He's alive."
- Then we should get no error
- And the journal should contain "[10.05.2013 09:00] I saw Elvis."
- And the journal should contain "He's alive." \ No newline at end of file
diff --git a/features/data/configs/basic_dayone.yaml b/features/data/configs/basic_dayone.yaml
new file mode 100644
index 00000000..0209f2f7
--- /dev/null
+++ b/features/data/configs/basic_dayone.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_dayone.dayone
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/features/data/configs/basic_encrypted.yaml b/features/data/configs/basic_encrypted.yaml
new file mode 100644
index 00000000..77f4e48d
--- /dev/null
+++ b/features/data/configs/basic_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: true
+highlight: true
+journals:
+ default: features/journals/basic_encrypted.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/features/data/configs/basic_folder.yaml b/features/data/configs/basic_folder.yaml
new file mode 100644
index 00000000..ba0de638
--- /dev/null
+++ b/features/data/configs/basic_folder.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_folder
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/features/data/configs/basic_onefile.yaml b/features/data/configs/basic_onefile.yaml
new file mode 100644
index 00000000..fb48c6f8
--- /dev/null
+++ b/features/data/configs/basic_onefile.yaml
@@ -0,0 +1,17 @@
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
+default_hour: 9
+default_minute: 0
+editor: noop
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/basic_onefile.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
diff --git a/features/data/configs/dayone_empty.yaml b/features/data/configs/dayone_empty.yaml
new file mode 100644
index 00000000..7750d389
--- /dev/null
+++ b/features/data/configs/dayone_empty.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: noop
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/dayone_empty.dayone
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/features/data/configs/editor_empty_folder.yaml b/features/data/configs/editor_empty_folder.yaml
new file mode 100644
index 00000000..1724bbfb
--- /dev/null
+++ b/features/data/configs/editor_empty_folder.yaml
@@ -0,0 +1,12 @@
+default_hour: 9
+default_minute: 0
+editor: 'vim'
+template: false
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/empty_folder
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/features/data/configs/editor_encrypted.yaml b/features/data/configs/editor_encrypted.yaml
new file mode 100644
index 00000000..75273c96
--- /dev/null
+++ b/features/data/configs/editor_encrypted.yaml
@@ -0,0 +1,17 @@
+colors:
+ body: green
+ date: blue
+ tags: none
+ title: yellow
+default_hour: 9
+default_minute: 0
+editor: "vim"
+encrypt: true
+template: false
+highlight: true
+journals:
+ default: features/journals/encrypted.journal
+linewrap: 80
+tagsymbols: '@'
+timeformat: '%Y-%m-%d %H:%M'
+indent_character: "|"
diff --git a/features/data/configs/missing_directory.yaml b/features/data/configs/missing_directory.yaml
new file mode 100644
index 00000000..d600404c
--- /dev/null
+++ b/features/data/configs/missing_directory.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing_directory/simple.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/features/data/configs/missing_journal.yaml b/features/data/configs/missing_journal.yaml
new file mode 100644
index 00000000..a1f6f8cf
--- /dev/null
+++ b/features/data/configs/missing_journal.yaml
@@ -0,0 +1,17 @@
+default_hour: 9
+default_minute: 0
+editor: ""
+encrypt: false
+highlight: true
+journals:
+ default: features/journals/missing.journal
+linewrap: 80
+tagsymbols: "@"
+template: false
+timeformat: "%Y-%m-%d %H:%M"
+indent_character: "|"
+colors:
+ date: none
+ title: none
+ body: none
+ tags: none
diff --git a/features/data/configs/basic.yaml b/features/data/configs/simple.yaml
index 020bab18..020bab18 100644
--- a/features/data/configs/basic.yaml
+++ b/features/data/configs/simple.yaml
diff --git a/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
new file mode 100644
index 00000000..9721dd55
--- /dev/null
+++ b/features/data/journals/basic_dayone.dayone/entries/D04D335AFED711EABA18FAFFC2100C3D.doentry
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Creation Date</key>
+ <date>2020-08-29T18:11:00Z</date>
+ <key>Starred</key>
+ <false/>
+ <key>Entry Text</key>
+ <string>Entry the first.
+Lorem @ipsum dolor sit amet, consectetur adipiscing elit. Praesent malesuada
+quis est ac dignissim. Aliquam dignissim rutrum pretium. Phasellus pellentesque
+augue et venenatis facilisis. Suspendisse potenti. Sed dignissim sed nisl eu
+consequat. Aenean ante ex, elementum ut interdum et, mattis eget lacus. In
+commodo nulla nec tellus placerat, sed ultricies metus bibendum. Duis eget
+venenatis erat. In at dolor dui. @tagone and maybe also @tagtwo.
+
+Curabitur accumsan nunc ac neque tristique, eleifend faucibus justo
+ullamcorper. Suspendisse at mattis nunc. Nullam eget lacinia urna. Suspendisse
+potenti. Ut urna est, venenatis sed ante in, ultrices congue mi. Maecenas eget
+molestie metus. Mauris porttitor dui ornare gravida porta. Quisque sed lectus
+hendrerit, lacinia ante eget, vulputate ante. Aliquam vitae erat non felis
+feugiat sagittis. Phasellus quis arcu fringilla, mattis ligula id, vestibulum
+urna. Vivamus facilisis leo a mi tincidunt condimentum. Donec eu euismod enim.
+Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam eu ligula eget
+velit scelerisque fringilla. Phasellus pharetra justo et nulla fringilla, ac
+porta sapien accumsan. Class aptent taciti sociosqu ad litora torquent per
+conubia nostra, per inceptos himenaeos.</string>
+ <key>Time Zone</key>
+ <string>America/Los_Angeles</string>
+ <key>UUID</key>
+ <string>D04D335AFED711EABA18FAFFC2100C3D</string>
+ <key>Tags</key>
+ <array>
+ <string>ipsum</string>
+ <string>tagone</string>
+ <string>tagtwo</string>
+ </array>
+ <key>Creator</key>
+ <dict>
+ <key>Device Agent</key>
+ <string></string>
+ <key>Generation Date</key>
+ <date>2020-09-25T02:35:45Z</date>
+ <key>Host Name</key>
+ <string>iris.lan</string>
+ <key>OS Agent</key>
+ <string>Darwin/19.3.0</string>
+ <key>Software Agent</key>
+ <string>jrnl/v2.4.5</string>
+ </dict>
+</dict>
+</plist>
diff --git a/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
new file mode 100644
index 00000000..8c2f3c52
--- /dev/null
+++ b/features/data/journals/basic_dayone.dayone/entries/FC8A86CAFED711EA8892FAFFC2100C3D.doentry
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Creation Date</key>
+ <date>2020-08-31T21:32:00Z</date>
+ <key>Starred</key>
+ <false/>
+ <key>Entry Text</key>
+ <string>A second entry in what I hope to be a long series.
+Sed sit amet metus et sapien feugiat elementum. Aliquam bibendum lobortis leo
+vitae tempus. Donec eleifend nec mi non volutpat. Lorem ipsum dolor sit amet,
+consectetur adipiscing elit. Praesent ut sodales libero. Maecenas nisl lorem,
+vestibulum in tempus sit amet, fermentum ut arcu. Donec vel vestibulum lectus,
+eget pretium enim. Maecenas diam nunc, imperdiet vitae pharetra sed, pretium id
+lectus. Donec eu metus et turpis tempor tristique ac non ex. In tellus arcu,
+egestas at efficitur et, ultrices vel est. Sed commodo