AtlatestRepositoryminder

minder / tree / testtest-config.sgl

1(import (sigil test)
2 (sigil string)
3 (sigil dict)
4 (sigil yaml)
5 (sigil fs)
6 (sigil path)
7 (sigil io)
8 (minder config))
9
10;; ============================================================
11;; Config struct defaults
12;; ============================================================
14(test-group "config defaults"
15 (test "minder-config has sensible defaults"
16 (let ((cfg (minder-config)))
17 (assert-equal '() (minder-config-schedules cfg))))
19 (test "schedule-config holds name, cron, prompt"
20 (let ((s (schedule-config name: "test" cron: "*/5 * * * *"
21 prompt: "Test task")))
22 (assert-equal "test" (schedule-config-name s))
23 (assert-equal "*/5 * * * *" (schedule-config-cron s))
24 (assert-equal "Test task" (schedule-config-prompt s)))))
26;; ============================================================
27;; load-minder-config
28;; ============================================================
30(test-group "load-minder-config"
31 (test "loads from minder.yaml"
32 (let* ((tmp (make-temp-directory))
33 (yaml-content (string-append
34 "schedules:\n"
35 " check-services:\n"
36 " cron: \"*/30 * * * *\"\n"
37 " prompt: Check service health\n"
38 " daily-review:\n"
39 " cron: \"0 9 * * *\"\n"
40 " prompt: Daily task review\n"))
41 (config-file (path-join tmp "minder.yaml"))
42 (prev-dir (current-directory)))
43 (write-file-string config-file yaml-content)
44 (set-current-directory! tmp)
45 (let ((cfg (load-minder-config)))
46 (set-current-directory! prev-dir)
47 (assert-equal 2 (length (minder-config-schedules cfg)))
48 (let ((sched (find (lambda (s) (string=? "check-services"
49 (schedule-config-name s)))
50 (minder-config-schedules cfg))))
51 (assert-true (schedule-config? sched))
52 (assert-equal "*/30 * * * *" (schedule-config-cron sched))
53 (assert-equal "Check service health" (schedule-config-prompt sched))))
54 (delete-file config-file)
55 (delete-directory tmp)))
57 (test "works without minder.yaml"
58 (let* ((tmp (make-temp-directory))
59 (prev-dir (current-directory)))
60 (set-current-directory! tmp)
61 (let ((cfg (load-minder-config)))
62 (set-current-directory! prev-dir)
63 (assert-equal '() (minder-config-schedules cfg)))
64 (delete-directory tmp))))
66(run-tests)