content: plain-text render + excerpt (text.sx) + 20 tests (385/385)
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
Some checks failed
Test, Build, and Deploy / test-build-deploy (push) Failing after 36s
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
72
lib/content/tests/text.sx
Normal file
72
lib/content/tests/text.sx
Normal file
@@ -0,0 +1,72 @@
|
||||
;; Extension — plain-text render mode + excerpts.
|
||||
|
||||
(st-bootstrap-classes!)
|
||||
(content/bootstrap!)
|
||||
(content-bootstrap-text!)
|
||||
|
||||
;; ── per-block ──
|
||||
(content-test
|
||||
"heading text"
|
||||
(asText (mk-heading "h" 2 "Title"))
|
||||
"Title")
|
||||
(content-test "paragraph text" (asText (mk-text "p" "Body")) "Body")
|
||||
(content-test "code text" (asText (mk-code "c" "sx" "(+ 1 2)")) "(+ 1 2)")
|
||||
(content-test "quote text" (asText (mk-quote "q" "Ada" "to err")) "to err")
|
||||
(content-test
|
||||
"image -> alt"
|
||||
(asText (mk-image "i" "/c.png" "a cat"))
|
||||
"a cat")
|
||||
(content-test
|
||||
"embed -> empty"
|
||||
(asText (mk-embed "e" "https://v" "vimeo"))
|
||||
"")
|
||||
(content-test "divider -> empty" (asText (mk-divider "d")) "")
|
||||
(content-test
|
||||
"list -> joined"
|
||||
(asText (mk-list "l" false (list "a" "b" "c")))
|
||||
"a, b, c")
|
||||
(content-test "empty list -> empty" (asText (mk-list "l" false (list))) "")
|
||||
|
||||
;; ── document joins non-empty child texts with a space ──
|
||||
(define
|
||||
d
|
||||
(doc-append
|
||||
(doc-append
|
||||
(doc-append
|
||||
(doc-append (doc-empty "d") (mk-heading "h" 1 "Title"))
|
||||
(mk-text "p" "Hello world"))
|
||||
(mk-divider "dv"))
|
||||
(mk-list "l" true (list "x" "y"))))
|
||||
(content-test "doc text skips empties" (asText d) "Title Hello world x, y")
|
||||
(content-test "empty doc text" (asText (doc-empty "e")) "")
|
||||
|
||||
;; ── via facade ──
|
||||
(content-test "render text" (content/render d "text") (asText d))
|
||||
(content-test "render text keyword" (content/render d :text) (asText d))
|
||||
(content-test "content/text alias" (content/text d) (asText d))
|
||||
(content-test "block-text alias" (block-text (mk-text "p" "x")) "x")
|
||||
|
||||
;; ── excerpt ──
|
||||
(content-test
|
||||
"excerpt under limit"
|
||||
(content/excerpt d 100)
|
||||
"Title Hello world x, y")
|
||||
(content-test "excerpt truncates" (content/excerpt d 5) "Title…")
|
||||
(content-test
|
||||
"excerpt exact length"
|
||||
(content/excerpt
|
||||
(doc-append (doc-empty "e") (mk-text "p" "12345"))
|
||||
5)
|
||||
"12345")
|
||||
(content-test
|
||||
"excerpt one over"
|
||||
(content/excerpt
|
||||
(doc-append (doc-empty "e") (mk-text "p" "123456"))
|
||||
5)
|
||||
"12345…")
|
||||
|
||||
;; ── reflects edits ──
|
||||
(content-test
|
||||
"text after update"
|
||||
(asText (doc-update d "p" "text" "Changed"))
|
||||
"Title Changed x, y")
|
||||
Reference in New Issue
Block a user