aboutsummaryrefslogtreecommitdiff
path: root/.ai/scripts/tests/flashcard-sync.bats
blob: 608a280240b7f991892bc6f646e91fbb069c47b1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
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" ]
}