jrnl/tests/bdd/features/write.feature
Jonathan Wren 1fbb788528
Unskip some tests (#1399)
* remove skip_editor test and tag

* remove useless test

* unskip blank input test

* formatting

* rename test so it doesn't overwrite other test

* unskip some dayone tests that now work
2022-01-15 14:45:00 -08:00

300 lines
12 KiB
Gherkin

Feature: Writing new entries.
Scenario Outline: Multiline entry with punctuation should keep title punctuation
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
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"
Examples: configs
| config_file |
| simple.yaml |
| empty_folder.yaml |
| dayone.yaml |
| encrypted.yaml |
Scenario Outline: Single line entry with period should be split at period
Given we use the config "<config_file>"
And we use the password "test" if prompted
When we run "jrnl This is. the title"
And we run "jrnl -1"
Then the output should contain "| the title"
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
| basic_dayone.yaml |
Scenario Outline: CJK entry should be split at fullwidth period without following space.
Given we use the config "<config_file>"
And we use the password "test" if prompted
When we run "jrnl "
And we run "jrnl -1"
Then the output should contain "| "
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
| basic_dayone.yaml |
Scenario Outline: Writing an entry from command line should store the entry
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa."
Then the output should contain "Entry added"
When we run "jrnl -n 1"
Then the output should contain "2013-07-23 09:00 A cold and stormy day."
Examples: configs
| config_file |
| simple.yaml |
| empty_folder.yaml |
| dayone.yaml |
| encrypted.yaml |
Scenario Outline: Writing a partial entry from command line with edit flag should go to the editor
Given we use the config "<config_file>"
And we use the password "test" if prompted
When we run "jrnl this is a partial --edit"
Then the output should contain "Entry added"
Then the editor should have been called
And the editor file content should be
this is a partial
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_dayone.yaml |
| basic_folder.yaml |
Scenario Outline: Writing an empty entry from the editor should yield "Nothing saved to file" message
Given we use the config "<config_file>"
And we write nothing to the editor if opened
And we use the password "test" if prompted
When we run "jrnl --edit"
Then the error output should contain "[Nothing saved to file]"
And the editor should have been called
Examples: configs
| config_file |
| editor.yaml |
| editor_empty_folder.yaml |
| dayone.yaml |
| basic_encrypted.yaml |
| basic_onefile.yaml |
Scenario Outline: Writing an empty entry from the command line with no editor should yield nothing
Given we use the config "<config_file>"
And we use the password "test" if prompted
When we run "jrnl --config-override editor ''" and enter ""
Then the stdin prompt should have been called
And the output should be empty
And the error output should contain "Writing Entry; on a blank line"
And the editor should not have been called
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
| basic_dayone.yaml |
Scenario Outline: Writing an entry does not print the entire journal
# https://github.com/jrnl-org/jrnl/issues/87
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
When we run "jrnl 23 july 2013: A cold and stormy day. I ate crisps on the sofa."
Then the output should contain "Entry added"
When we run "jrnl -n 1"
Then the output should not contain "Life is good"
Examples: configs
| config_file |
| editor.yaml |
| editor_empty_folder.yaml |
| dayone.yaml |
| encrypted.yaml |
Scenario Outline: Embedded period stays in title
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
When we run "jrnl 04-24-2014: Created a new website - empty.com. Hope to get a lot of traffic."
Then the output should contain "Entry added"
When we run "jrnl -1"
Then the output should be
2014-04-24 09:00 Created a new website - empty.com.
| Hope to get a lot of traffic.
Examples: configs
| config_file |
| simple.yaml |
| empty_folder.yaml |
| dayone.yaml |
| encrypted.yaml |
Scenario Outline: Write and read emoji support
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
When we run "jrnl 23 july 2013: 🌞 sunny day. Saw an 🐘"
Then the output should contain "Entry added"
When we run "jrnl -n 1"
Then the output should contain "🌞"
And the output should contain "🐘"
Examples: configs
| config_file |
| simple.yaml |
| empty_folder.yaml |
| dayone.yaml |
| encrypted.yaml |
Scenario Outline: Writing an entry at the prompt (no editor) should store the entry
Given we use the config "<config_file>"
And we use the password "bad doggie no biscuit" if prompted
When we run "jrnl" and enter "25 jul 2013: I saw Elvis. He's alive."
Then we should get no error
When we run "jrnl -on '2013-07-25'"
Then the output should contain "2013-07-25 09:00 I saw Elvis."
And the output should contain "| He's alive."
Examples: configs
| config_file |
| simple.yaml |
| empty_folder.yaml |
| encrypted.yaml |
@todo
Scenario: Writing an entry at the prompt (no editor) in DayOne journal
# Need to test DayOne w/out an editor
Scenario: Writing into Dayone
Given we use the config "dayone.yaml"
When we run "jrnl 01 may 1979: Being born hurts."
And we run "jrnl -until 1980"
Then the output should be "1979-05-01 09:00 Being born hurts."
Scenario: Writing into Dayone adds extended metadata
Given we use the config "dayone.yaml"
When we run "jrnl 01 may 1979: Being born hurts."
And we run "jrnl --export json"
Then we should get no error
And the output should be valid JSON
Given we parse the output as JSON
Then "entries" in the parsed output should have 5 elements
And "entries.0.creator" in the parsed output should be
software_agent
os_agent
host_name
generation_date
device_agent
And "entries.0.creator.software_agent" in the parsed output should contain
jrnl
Scenario: Title with an embedded period on DayOne journal
Given we use the config "dayone.yaml"
When we run "jrnl 04-24-2014: Ran 6.2 miles today in 1:02:03. I am feeling sore because I forgot to stretch."
Then the output should contain "Entry added"
When we run "jrnl -1"
Then the output should be
2014-04-24 09:00 Ran 6.2 miles today in 1:02:03.
| I am feeling sore because I forgot to stretch.
Scenario: Opening an folder that's not a DayOne folder should treat as folder journal
Given we use the config "empty_folder.yaml"
When we run "jrnl 23 july 2013: Testing folder journal."
Then the output should contain "Entry added"
When we run "jrnl -1"
Then the output should be "2013-07-23 09:00 Testing folder journal."
Scenario Outline: Count when adding a single entry via --edit
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we append to the editor if opened
[2021-11-13] worked on jrnl tests
When we run "jrnl --edit"
Then the output should contain
[1 entry added]
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
#| basic_dayone.yaml | @todo
Scenario Outline: Correctly count when adding multiple entries via --edit
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we append to the editor if opened
[2021-11-11] worked on jrnl tests
[2021-11-12] worked on jrnl tests again
[2021-11-13] worked on jrnl tests a little bit more
When we run "jrnl --edit"
Then the output should contain
[3 entries added]
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
#| basic_dayone.yaml | @todo
Scenario Outline: Correctly count when removing entries via --edit
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we write to the editor if opened
[2021-11-13] I am replacing my whole journal with this entry
When we run "jrnl --edit"
Then the output should contain
[2 entries deleted, 1 entry modified]
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
#| basic_dayone.yaml | @todo
Scenario Outline: Correctly count modification when running --edit to replace a single entry
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we write to the editor if opened
[2021-11-13] I am replacing the last entry with this entry
When we run "jrnl --edit -1"
Then the output should contain
[1 entry modified]
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
#| basic_dayone.yaml | @todo
Scenario Outline: Count modifications when editing whole journal and adding to last entry
Given we use the config "<config_file>"
And we use the password "test" if prompted
And we append to the editor if opened
This is a small addendum to my latest entry.
When we run "jrnl --edit"
Then the output should contain
[1 entry modified]
Examples: configs
| config_file |
| basic_onefile.yaml |
| basic_encrypted.yaml |
| basic_folder.yaml |
| basic_dayone.yaml |