diff --git a/tests/test__zk_rm.sh b/tests/test__zk_rm.sh new file mode 100644 index 0000000..8cb0f94 --- /dev/null +++ b/tests/test__zk_rm.sh @@ -0,0 +1,44 @@ +#!/bin/bash +TMP_ZETTELKASTEN="" + +setup() { + source ../zk + + TMP_ZETTELKASTEN="$(mktemp -d)" +} + +teardown() { + rm -rf "$TMP_ZETTELKASTEN" +} + +test__zk_rm_gives_error_when_no_zettel_id_given() { + # shellcheck disable=SC2016 + #fake rm 'echo' + + assert_status_code 1 '_zk_rm' +} + +test__zk_rm_gives_error_when_nonexistent_zettel_id_given() { + export ZKDIR="$TMP_ZETTELKASTEN" + zettel_id="11111111111111" + + assert_status_code 2 '_zk_rm $zettel_id' +} + +test__zk_rm_succeeds_when_existent_zettel_id_given() { + export ZKDIR="$TMP_ZETTELKASTEN" + zettel_id="11111111111111" + touch "$ZKDIR/$zettel_id" + + assert_status_code 0 '_zk_rm 11111111111111' +} + +test__zk_rm_removes_file_when_existent_zettel_id_given() { + export ZKDIR="$TMP_ZETTELKASTEN" + zettel_id="11111111111111" + echo testing >> "$ZKDIR/$zettel_id" + + _zk_rm "$zettel_id" + + assert_fails 'test -f "$ZKDIR/$zettel_id"' +} diff --git a/tests/test_get_command.sh b/tests/test_get_command.sh index 1086ed4..0dca56c 100644 --- a/tests/test_get_command.sh +++ b/tests/test_get_command.sh @@ -52,6 +52,15 @@ test_get_command_returns_edit_for_substring() { done } +test_get_command_returns_edit_for_substring() { + expected="rm" + + for arg in r rm; do + result="$(get_command "$ZKCOMMANDS" "$arg")" + assert_equals "$expected" "$result" + done +} + test_get_command_does_not_return_match_unless_at_start_of_command_string() { commands="delete" expected="" diff --git a/tests/test_main.sh b/tests/test_main.sh index 387a774..89958c0 100644 --- a/tests/test_main.sh +++ b/tests/test_main.sh @@ -48,6 +48,18 @@ test_main_calls_edit_when_edit_command_passed() { assert_equals "$expected" "$result" } +test_main_calls_rm_when_rm_command_passed() { + fake check_zkdir test + expected="_zk_rm" + fake get_command 'echo rm' + fake _zk_rm "echo $expected" + + result="$(main)" + + assert_equals "$expected" "$result" +} + + test_main_errors_if_unrecognized_command_given() { fake check_zkdir test fake get_command echo "" diff --git a/zk b/zk index ba72737..c6905b5 100755 --- a/zk +++ b/zk @@ -3,7 +3,7 @@ set -e ZKDIR="$HOME/.local/share/zk/" -ZKCOMMANDS='list search new edit' +ZKCOMMANDS='list search new edit rm' check_zkdir() { if ! test -d "$ZKDIR"; then