mirror of
https://github.com/jrnl-org/jrnl.git
synced 2025-05-10 08:38:32 +02:00
* fix missed statement from last PR * replace print statement for adding an entry to a journal * clean up linting and format * change print statement over to new print_msg function * make print_msg always print to stderr * change print statement over to new print_msg function * update importer to use new message function * update yaml format to use new message function * code cleanup * update yaml format to use new message function * update yaml format to use new exception handling * update Journal class to use new message function * update install module to use new message function * update config module to use new message function * update upgrade module to properly use new message and exception handling * fix typo * update upgrade module to use new message handling * update welcome message to use new handling * update upgrade module to use new message handling * update upgrade module journal summaries to use new message handling * take out old code * update upgrade module to use new message handling * update upgrade module to use new message handling * update more modules to use new message handling * take out old comment * update deprecated_cmd to use new message handling * update text_exporter with new message handling, get rid of old color constants * get rid of hardcoded text * whitespace changes * rework MsgType into MsgStyle so messages can have different styles * add comment * Move around code to separate concerns of each function a bit more * update create_password and yesno prompt functions for new messaging * fix missing newline for keyboard interrupts * fix misc linting * fix bug with panel titles always showing 'error' after one error * fix missing import * update debug output after uncaught exception * update exception for new exception handling * rewrite yesno function to use new centralized messages * reduce the debug output slightly * clean up print_msgs function * clean up create_password function * clean up misc linting * rename screen_input to hide_input to be more clear * update encrypted journal prompt to use new messaging functionality * fix typo in message key * move rich console into function so we can mock properly * update password mock to use rich console instead of getpass * add more helpful output to then step * fix test by updating expected output * update message to use new functionality * rework mocks in test suite for new messaging functionality * fix linting issue * fix more tests * fix more tests * fix more tests * fix more tests * fix merge bug * update prompt_action_entries to use new messaging functionality * Add new input_method "type" This does the same thing as input_method "pipe" but is more clear what it's doing (typing text into the builtin composer) * get rid of old commented code * get rid of unused code * move some files around Co-authored-by: Micah Jerome Ellison <micah.jerome.ellison@gmail.com>
312 lines
12 KiB
Gherkin
312 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 "No entry to save" 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 "No entry to save, because no text was received"
|
|
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 should yield "No entry to save" message
|
|
Given we use the config "<config_file>"
|
|
And we use the password "test" if prompted
|
|
When we run "jrnl" and enter "\x04"
|
|
Then the error output should contain "No entry to save, because no text was received"
|
|
When we run "jrnl" and enter " \t \n \x04"
|
|
Then the error output should contain "No entry to save, because no text was received"
|
|
|
|
Examples: configs
|
|
| config_file |
|
|
| basic_onefile.yaml |
|
|
| basic_encrypted.yaml |
|
|
| basic_folder.yaml |
|
|
| basic_dayone.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 "To finish writing, press"
|
|
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 type "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 error 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"
|
|
Then the output should contain "3 entries 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 |
|