aboutsummaryrefslogtreecommitdiff
path: root/tests/test-integration-card-types-integration-test.el
blob: 7d40f893195f858943a5627a3b2f8df7aae9ae37 (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
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
;;; test-integration-card-types-integration-test.el --- Integration test for card types

;;; Commentary:
;; Integration test verifying that the card type system works correctly.

;;; Code:

(require 'ert)
(require 'assess)
(require 'org-drill)

;;; Integration Tests - Card Type System

(ert-deftest test-integration-card-types-integration-card-type-system-complete ()
  "Test that card type system handles all expected types.
Verifies all card types are registered in org-drill-card-type-alist."
  ;; "translate_number" is intentionally absent: issue #43 removed it from
  ;; org-drill-card-type-alist because its presenter never existed (see
  ;; test-org-drill-translate-number-regression.el).  Listing it here would
  ;; re-assert a registration the project deliberately dropped.
  (let ((expected-types '(nil "simple" "simpletyped" "twosided" "multisided"
                          "hide1cloze" "hide2cloze" "show1cloze" "show2cloze"
                          "multicloze" "hidefirst" "hidelast"
                          "hide1_firstmore" "show1_lastmore" "show1_firstless"
                          "conjugate" "decline_noun" "spanish_verb")))
    (dolist (type expected-types)
      (let ((entry (assoc type org-drill-card-type-alist)))
        (should entry)
        (should (cadr entry))))))

(ert-deftest test-integration-card-types-integration-simple-vs-twosided ()
  "Test that simple and twosided cards use different presentation functions."
  (let ((simple-fn (cadr (assoc "simple" org-drill-card-type-alist)))
        (twosided-fn (cadr (assoc "twosided" org-drill-card-type-alist))))
    (should simple-fn)
    (should twosided-fn)
    (should-not (eq simple-fn twosided-fn))))

(ert-deftest test-integration-card-types-integration-hide-vs-show-cloze ()
  "Test that hide and show cloze variants use different functions."
  (let ((hide1-fn (cadr (assoc "hide1cloze" org-drill-card-type-alist)))
        (show1-fn (cadr (assoc "show1cloze" org-drill-card-type-alist)))
        (hide2-fn (cadr (assoc "hide2cloze" org-drill-card-type-alist)))
        (show2-fn (cadr (assoc "show2cloze" org-drill-card-type-alist))))
    (should hide1-fn)
    (should show1-fn)
    (should hide2-fn)
    (should show2-fn)
    ;; All different
    (should-not (eq hide1-fn show1-fn))
    (should-not (eq hide1-fn hide2-fn))
    (should-not (eq show1-fn show2-fn))))

(ert-deftest test-integration-card-types-integration-default-equals-simple ()
  "Test that default (nil) card type maps to same function as simple."
  (let ((default-fn (cadr (assoc nil org-drill-card-type-alist)))
        (simple-fn (cadr (assoc "simple" org-drill-card-type-alist))))
    (should default-fn)
    (should simple-fn)
    (should (eq default-fn simple-fn))
    (should (eq default-fn 'org-drill-present-simple-card))))

(ert-deftest test-integration-card-types-integration-presentation-functions-exist ()
  "Test that all presentation functions are defined."
  (let ((all-types '("simple" "twosided" "hide1cloze" "show1cloze" "multicloze")))
    (dolist (type all-types)
      (let* ((entry (assoc type org-drill-card-type-alist))
             (fn (cadr entry)))
        (should fn)
        (should (fboundp fn))))))

(provide 'test-integration-card-types-integration-test)
;;; test-integration-card-types-integration-test.el ends here