; lib/blogimport/tests/import.sx — genesis import + idempotency (st-bootstrap-classes!) (content-bootstrap-blocks!) (content-bootstrap-doc!) (content-bootstrap-callout!) (content-bootstrap-media!) (define p1 {:id "post-1" :slug "hello" :title "Hello" :status "published" :visibility "public" :tags (list "news") :authors (list "u1") :lexical {:root {:children (list {:type "heading" :tag "h1" :children (list {:type "text" :text "Hello"})} {:type "paragraph" :children (list {:type "text" :text "world"})})}}}) (define p2 {:id "post-2" :slug "two" :title "Two" :status "published" :lexical {:children (list {:type "paragraph" :children (list {:type "text" :text "second"})})}}) ; ---- genesis-ops ordering ---- (define ops1 (blogimport/genesis-ops (blogimport/lex-blocks (get p1 :lexical)))) (bi-test "genesis op kinds" (map (fn (o) (get o :op)) ops1) (list "insert" "insert")) (bi-test "genesis first after nil" (get (nth ops1 0) :after) nil) (bi-test "genesis second after first id" (get (nth ops1 1) :after) "b0") ; ---- import one ---- (define B (persist/open)) (define r1 (blogimport/import-post! B p1 10)) (bi-test "import imported flag" (get r1 :imported) true) (bi-test "import block count" (get r1 :blocks) 2) (bi-test "stream version-count" (content/version-count B "post-1") 2) (bi-test "head ids" (doc-ids (content/head B "post-1")) (list "b0" "b1")) (bi-test "head body text" (str (blk-send (doc-find (content/head B "post-1") "b1") "text")) "world") (bi-test "head heading level" (blk-send (doc-find (content/head B "post-1") "b0") "level") 1) ; ---- metadata round-trip ---- (bi-test "meta round-trip" (blogimport/load-meta B "post-1") (blogimport/post-meta p1)) (bi-test "meta title" (get (blogimport/load-meta B "post-1") :title) "Hello") (bi-test "meta tags" (get (blogimport/load-meta B "post-1") :tags) (list "news")) ; ---- idempotent re-import (skip-if-exists, no duplication) ---- (define r1b (blogimport/import-post! B p1 99)) (bi-test "reimport skipped" (get r1b :imported) false) (bi-test "reimport reason" (get r1b :reason) "exists") (bi-test "version-count unchanged after reimport" (content/version-count B "post-1") 2) (bi-test "head ids unchanged after reimport" (doc-ids (content/head B "post-1")) (list "b0" "b1")) ; ---- import-all! coverage scoreboard ---- (define B2 (persist/open)) (define cov1 (blogimport/import-all! B2 (list p1 p2) 5)) (bi-test "import-all total" (get cov1 :total) 2) (bi-test "import-all imported" (get cov1 :imported) 2) (bi-test "import-all skipped" (get cov1 :skipped) 0) ; re-run is fully idempotent (define cov2 (blogimport/import-all! B2 (list p1 p2) 6)) (bi-test "import-all rerun imported" (get cov2 :imported) 0) (bi-test "import-all rerun skipped" (get cov2 :skipped) 2)