25 lines
1.1 KiB
Common Lisp
25 lines
1.1 KiB
Common Lisp
(defpackage :org-skill-persistence-tests
|
|
(:use :cl :fiveam :org-skill-object-store-persistence))
|
|
|
|
(in-package :org-skill-persistence-tests)
|
|
|
|
(def-suite persistence-suite
|
|
:description "Tests for Object Store serialization fidelity.")
|
|
|
|
(in-suite persistence-suite)
|
|
|
|
(test serialize-org-object
|
|
"Ensure a complex org-object struct can be dumped and re-read exactly."
|
|
(let ((obj (org-agent:make-org-object
|
|
:id "test-uuid"
|
|
:type :HEADLINE
|
|
:attributes '(:TITLE "Test Note" :TODO-STATE "TODO")
|
|
:children '("child-1" "child-2"))))
|
|
(let ((serialized (prin1-to-string `(setf (gethash "test-uuid" org-agent:*object-store*) ,obj))))
|
|
;; Read back the form
|
|
(let ((recovered-form (read-from-string serialized)))
|
|
(let ((recovered-obj (nth 2 (nth 2 recovered-form))))
|
|
(is (equal (org-agent:org-object-id recovered-obj) "test-uuid"))
|
|
(is (eq (org-agent:org-object-type recovered-obj) :HEADLINE))
|
|
(is (equal (getf (org-agent:org-object-attributes recovered-obj) :TITLE) "Test Note")))))))
|