From 0e70a57a6700fbce1cdf445196138921ee8bb57b Mon Sep 17 00:00:00 2001 From: Micah Jerome Ellison Date: Tue, 21 Feb 2023 11:38:46 -0800 Subject: [PATCH] Add tests for counting combinations of action arguments (change-time, edit, delete) and for change-time counts. Some are failing and should be investigated --- .../bdd/features/action-combinations.feature | 113 ++++++++++++++++++ tests/bdd/features/change_time.feature | 49 ++++---- tests/bdd/test_features.py | 1 + 3 files changed, 142 insertions(+), 21 deletions(-) create mode 100644 tests/bdd/features/action-combinations.feature diff --git a/tests/bdd/features/action-combinations.feature b/tests/bdd/features/action-combinations.feature new file mode 100644 index 00000000..413e26e1 --- /dev/null +++ b/tests/bdd/features/action-combinations.feature @@ -0,0 +1,113 @@ +# Copyright © 2012-2023 jrnl contributors +# License: https://www.gnu.org/licenses/gpl-3.0.html + +Feature: Test combinations of edit, change-time, and delete + +# [x] edit + change-time +# [x] edit + delete +# [x] change-time + delete +# [ ] edit + change-time + delete + + Scenario Outline: --change-time with --edit modifies selected entries + Given we use the config "" + And we write nothing to the editor if opened + And we use the password "test" if prompted + When we run "jrnl --change-time '2022-04-23 10:30' --edit" and enter + Y + N + Y + Then the error output should contain "No text received from editor. Were you trying to delete all the entries?" + And the editor should have been called + When we run "jrnl -99 --short" + Then the output should be + 2020-08-31 14:32 A second entry in what I hope to be a long series. + 2022-04-23 10:30 Entry the first. + 2022-04-23 10:30 The third entry finally after weeks without writing. + + Examples: Configs + | config_file | + | basic_onefile.yaml | + | basic_folder.yaml | + # | basic_dayone.yaml | @todo + + Scenario Outline: --delete with --edit deletes selected entries + Given we use the config "" + And we append to the editor if opened + [2023-02-21 10:32] Here is a new entry + And we use the password "test" if prompted + When we run "jrnl --delete --edit" and enter + Y + N + Y + Then the editor should have been called + And the error output should contain "3 entries found" + # 2 deleted minus 1 for the 1 added + And the error output should contain "1 entry deleted" + # Added entry counts as modified because it replaced a deleted entry + And the error output should contain "1 entry modified" + When we run "jrnl -99 --short" + Then the error output should contain "2 entries found" + And the output should be + 2020-08-31 14:32 A second entry in what I hope to be a long series. + 2023-02-21 10:32 Here is a new entry + + Examples: Configs + | config_file | + | basic_onefile.yaml | + | basic_folder.yaml | + # | basic_dayone.yaml | @todo + + Scenario Outline: --change-time with --delete affects appropriate entries + Given we use the config "" + And we use the password "test" if prompted + # --change-time is asked first, then --delete + When we run "jrnl --change-time '2022-04-23 10:30' --delete" and enter + N + N + Y + Y + N + N + Then the error output should contain "3 entries found" + And the error output should contain "1 entry deleted" + And the error output should contain "2 entries modified" + When we run "jrnl -99 --short" + Then the output should be + 2020-08-31 14:32 A second entry in what I hope to be a long series. + 2022-04-23 10:30 The third entry finally after weeks without writing. + + Examples: Configs + | config_file | + | basic_onefile.yaml | + | basic_folder.yaml | + # | basic_dayone.yaml | @todo + + Scenario Outline: Combining --change-time and --delete and --edit affects appropriate entries + Given we use the config "" + And we append to the editor if opened + [2023-02-21 10:32] Here is a new entry + And we use the password "test" if prompted + # --change-time is asked first, then --delete, then --edit + When we run "jrnl --change-time '2022-04-23 10:30' --delete --edit" and enter + N + Y + Y + Y + Y + N + Then the error output should contain "3 entries found" + # deleted = 2 deleted minus 1 added by edit = 1 + # modified = 2 modified by change-time minus 1 of those deleted plus 1 of the deleted replaced by edit = 2 + # added = 1 added minus 2 deleted = none + And the error output should contain "1 entry deleted" + And the error output should contain "2 entries modified" + When we run "jrnl -99 --short" + Then the output should be + 2022-04-23 10:30 The third entry finally after weeks without writing. + 2023-02-21 10:32 Here is a new entry + + Examples: Configs + | config_file | + | basic_onefile.yaml | + | basic_folder.yaml | + # | basic_dayone.yaml | @todo diff --git a/tests/bdd/features/change_time.feature b/tests/bdd/features/change_time.feature index fa458487..9a68e766 100644 --- a/tests/bdd/features/change_time.feature +++ b/tests/bdd/features/change_time.feature @@ -9,6 +9,8 @@ Feature: Change entry times in journal Then the output should contain "2020-09-24 09:14 The third entry finally" When we run "jrnl -1 --change-time '2022-04-23 10:30'" and enter Y + Then the error output should contain "1 entry modified" + And the error output should not contain "deleted" When we run "jrnl -99 --short" Then the output should be 2020-08-29 11:11 Entry the first. @@ -31,6 +33,8 @@ Feature: Change entry times in journal Y N Y + Then the error output should contain "3 entries found" + And the error output should contain "2 entries modified" When we run "jrnl -99 --short" Then the output should be 2020-08-31 14:32 A second entry in what I hope to be a long series. @@ -45,6 +49,28 @@ Feature: Change entry times in journal # | basic_dayone.yaml | @todo + Scenario Outline: Answering "N" to change-time prompt deletes no entries + Given we use the config "" + And we use the password "test" if prompted + When we run "jrnl -1" + Then the output should contain "2020-09-24 09:14 The third entry finally" + When we run "jrnl -1 --change-time '2023-02-21 10:30'" and enter + N + Then the error output should not contain "modified" + And the error output should not contain "deleted" + When we run "jrnl -99 --short" + Then the output should be + 2020-08-29 11:11 Entry the first. + 2020-08-31 14:32 A second entry in what I hope to be a long series. + 2020-09-24 09:14 The third entry finally after weeks without writing. + + Examples: Configs + | config_file | + | basic_onefile.yaml | + | basic_encrypted.yaml | + | basic_folder.yaml | + # | basic_dayone.yaml | @todo + Scenario Outline: Change time flag with nonsense input changes nothing Given we use the config "" When we run "jrnl --change-time now asdfasdf" @@ -68,6 +94,8 @@ Feature: Change entry times in journal Given we use the config "" When we run "jrnl --change-time '2022-04-23 10:30' @ipsum" and enter Y + Then the error output should contain "1 entry found" + And the error output should contain "1 entry modified" When we run "jrnl -99 --short" Then the output should be 2020-08-31 14:32 A second entry in what I hope to be a long series. @@ -223,24 +251,3 @@ Feature: Change entry times in journal | basic_dayone.yaml | - Scenario Outline: --change-time with --edit modifies selected entries - Given we use the config "" - And we write nothing to the editor if opened - And we use the password "test" if prompted - When we run "jrnl --change-time '2022-04-23 10:30' --edit" and enter - Y - N - Y - Then the error output should contain "No text received from editor. Were you trying to delete all the entries?" - And the editor should have been called - When we run "jrnl -99 --short" - Then the output should be - 2020-08-31 14:32 A second entry in what I hope to be a long series. - 2022-04-23 10:30 Entry the first. - 2022-04-23 10:30 The third entry finally after weeks without writing. - - Examples: Configs - | config_file | - | basic_onefile.yaml | - | basic_folder.yaml | - # | basic_dayone.yaml | @todo diff --git a/tests/bdd/test_features.py b/tests/bdd/test_features.py index 9fce25f5..d4efaef5 100644 --- a/tests/bdd/test_features.py +++ b/tests/bdd/test_features.py @@ -3,6 +3,7 @@ from pytest_bdd import scenarios +scenarios("features/action-combinations.feature") scenarios("features/build.feature") scenarios("features/config_file.feature") scenarios("features/core.feature")