aboutsummaryrefslogtreecommitdiff
path: root/.ai/scripts/tests
diff options
context:
space:
mode:
Diffstat (limited to '.ai/scripts/tests')
-rw-r--r--.ai/scripts/tests/task-review-staleness.bats64
1 files changed, 64 insertions, 0 deletions
diff --git a/.ai/scripts/tests/task-review-staleness.bats b/.ai/scripts/tests/task-review-staleness.bats
index abb7585..488b023 100644
--- a/.ai/scripts/tests/task-review-staleness.bats
+++ b/.ai/scripts/tests/task-review-staleness.bats
@@ -147,3 +147,67 @@ task_unreviewed() {
run bash "$SCRIPT" "$TEST_DIR/does-not-exist.org" 30
[ "$status" -ne 0 ]
}
+
+# ---- --list mode -----------------------------------------------------
+
+@test "staleness --list: orders oldest-reviewed first, unreviewed before dated" {
+ task_reviewed TODO A "Reviewed recently" "$D5"
+ task_reviewed TODO B "Reviewed long ago" "$D40"
+ task_unreviewed DOING A "Never reviewed"
+ run bash "$SCRIPT" --list "$TODO" 10
+ [ "$status" -eq 0 ]
+ [[ "${lines[0]}" == *"Never reviewed"* ]]
+ [[ "${lines[1]}" == *"Reviewed long ago"* ]]
+ [[ "${lines[2]}" == *"Reviewed recently"* ]]
+}
+
+@test "staleness --list: takes only the requested count" {
+ task_unreviewed TODO A "First"
+ task_reviewed TODO B "Second" "$D40"
+ task_reviewed TODO C "Third" "$D30"
+ run bash "$SCRIPT" --list "$TODO" 2
+ [ "$status" -eq 0 ]
+ [ "${#lines[@]}" -eq 2 ]
+}
+
+@test "staleness --list: count larger than available returns all candidates" {
+ task_unreviewed TODO A "Only one"
+ run bash "$SCRIPT" --list "$TODO" 10
+ [ "$status" -eq 0 ]
+ [ "${#lines[@]}" -eq 1 ]
+}
+
+@test "staleness --list: excludes DONE, deeper headings, and cookie-less headings" {
+ task_reviewed DONE A "Shipped" "$D40"
+ printf '*** TODO [#A] Child task\n\n' >> "$TODO"
+ printf '** TODO Cookie-less\n\n' >> "$TODO"
+ task_unreviewed TODO B "Real one"
+ run bash "$SCRIPT" --list "$TODO" 10
+ [ "$status" -eq 0 ]
+ [ "${#lines[@]}" -eq 1 ]
+ [[ "${lines[0]}" == *"Real one"* ]]
+}
+
+@test "staleness --list: emits line, review value, and heading tab-separated" {
+ task_unreviewed TODO A "Never reviewed"
+ run bash "$SCRIPT" --list "$TODO" 10
+ [ "$status" -eq 0 ]
+ line_no=$(printf '%s' "${lines[0]}" | cut -f1)
+ value=$(printf '%s' "${lines[0]}" | cut -f2)
+ heading=$(printf '%s' "${lines[0]}" | cut -f3)
+ [ "$line_no" = "1" ]
+ [ "$value" = "NONE" ]
+ [ "$heading" = "** TODO [#A] Never reviewed" ]
+}
+
+@test "staleness --list: empty file produces no output" {
+ : > "$TODO"
+ run bash "$SCRIPT" --list "$TODO" 10
+ [ "$status" -eq 0 ]
+ [ -z "$output" ]
+}
+
+@test "staleness --list: missing file exits non-zero" {
+ run bash "$SCRIPT" --list "$TEST_DIR/nope.org" 10
+ [ "$status" -ne 0 ]
+}