aboutsummaryrefslogtreecommitdiff
path: root/.ai/scripts/tests/flashcard-sync.bats
diff options
context:
space:
mode:
Diffstat (limited to '.ai/scripts/tests/flashcard-sync.bats')
-rw-r--r--.ai/scripts/tests/flashcard-sync.bats38
1 files changed, 38 insertions, 0 deletions
diff --git a/.ai/scripts/tests/flashcard-sync.bats b/.ai/scripts/tests/flashcard-sync.bats
new file mode 100644
index 0000000..608a280
--- /dev/null
+++ b/.ai/scripts/tests/flashcard-sync.bats
@@ -0,0 +1,38 @@
+#!/usr/bin/env bats
+# Tests for the flashcard-sync wrapper: argument handling + the stats gate.
+# The clean end-to-end path runs flashcard-to-anki.py (uv-resolved genanki) and is
+# not exercised here; these cover the guard paths that stop before that step.
+
+setup() {
+ SCRIPT_DIR="$(cd "$(dirname "$BATS_TEST_FILENAME")/.." && pwd)"
+ SYNC="$SCRIPT_DIR/flashcard-sync"
+ TMP="$(mktemp -d)"
+}
+
+teardown() {
+ rm -rf "$TMP"
+}
+
+@test "flashcard-sync: no args exits 2" {
+ run "$SYNC"
+ [ "$status" -eq 2 ]
+}
+
+@test "flashcard-sync: missing source file exits 2" {
+ run "$SYNC" "$TMP/nope.org"
+ [ "$status" -eq 2 ]
+}
+
+@test "flashcard-sync: stats gate failure exits 1 and writes no apkg" {
+ cat > "$TMP/dirty.org" <<'EOF'
+#+TITLE: DeepSat Org-Drill Flashcards
+
+* Section
+** DeepSat :drill:
+*** Answer
+A satellite company.
+EOF
+ run "$SYNC" "$TMP/dirty.org"
+ [ "$status" -eq 1 ]
+ [ ! -f "$HOME/sync/phone/anki/dirty.apkg" ]
+}