diff --git a/jrnl/controller.py b/jrnl/controller.py index 7a0a4965..77ba9d15 100644 --- a/jrnl/controller.py +++ b/jrnl/controller.py @@ -150,6 +150,9 @@ def write_mode(args: "Namespace", config: dict, journal: Journal, **kwargs) -> N if not raw or raw.isspace(): logging.error("Write mode: couldn't get raw text or entry was empty") raise JrnlException(Message(MsgText.NoTextReceived, MsgStyle.NORMAL)) + if config["template"] and raw == _get_editor_template(config): + logging.error("Write mode: raw text was the same as the template") + raise JrnlException(Message(MsgText.NoChangesToTemplate, MsgStyle.NORMAL)) logging.debug( 'Write mode: appending raw text to journal "%s": %s', args.journal_name, raw diff --git a/jrnl/messages/MsgText.py b/jrnl/messages/MsgText.py index 4a8b6c61..6438b7e9 100644 --- a/jrnl/messages/MsgText.py +++ b/jrnl/messages/MsgText.py @@ -156,7 +156,9 @@ class MsgText(Enum): NoTextReceived = """ No entry to save, because no text was received """ - + NoChangesToTemplate = """ + No entry to save, because the template was not changed + """ # --- Upgrade --- # JournalFailedUpgrade = """ The following journal{s} failed to upgrade: diff --git a/tests/bdd/features/template.feature b/tests/bdd/features/template.feature index 02e2a3bc..55130b2c 100644 --- a/tests/bdd/features/template.feature +++ b/tests/bdd/features/template.feature @@ -6,9 +6,12 @@ Feature: Using templates Scenario Outline: Template contents should be used in new entry Given we use the config "" And we use the password "test" if prompted + And we append to the editor if opened + This is an addition to a templated entry When we run "jrnl --config-override template features/templates/basic.template" And we run "jrnl -1" Then the output should contain "This text is in the basic template" + Then the output should contain "This is an addition to a templated entry" Examples: configs | config_file | @@ -17,3 +20,15 @@ Feature: Using templates | basic_folder.yaml | | basic_dayone.yaml | + Scenario Outline: Templated entry should not be saved if template is unchanged + Given we use the config "" + And we use the password "test" if prompted + When we run "jrnl --config-override template features/templates/basic.template" + Then the output should contain "No entry to save, because the template was not changed" + + Examples: configs + | config_file | + | basic_onefile.yaml | + | basic_encrypted.yaml | + | basic_folder.yaml | + | basic_dayone.yaml | \ No newline at end of file