Files
clj-ui-framework/test/ui/accordion_test.clj
Florian Schroedl 0dd8a9c8bf fix(card): reduce internal spacing and bump footer button size
Refactor card to use flex column with gap-based spacing instead of
per-section padding, tightening the space between header, body, and
footer from size-6 to size-3. Add .card-footer .btn override to
render buttons at font-base size.
2026-03-03 17:08:29 +01:00

40 lines
1.7 KiB
Clojure

(ns ui.accordion-test
(:require [clojure.test :refer [deftest is testing]]
[ui.accordion :as accordion]))
(deftest accordion-class-list-test
(testing "always returns base class"
(is (= ["accordion"] (accordion/accordion-class-list {})))
(is (= ["accordion"] (accordion/accordion-class-list {:open true})))))
(deftest accordion-classes-test
(testing "space-joined output"
(is (= "accordion" (accordion/accordion-classes {})))
(is (= "accordion" (accordion/accordion-classes {:open true})))))
(deftest accordion-component-test
(testing "closed accordion uses details/summary"
(let [result (accordion/accordion {:title "Question?"} "Answer.")]
(is (= :details (first result)))
(is (= "accordion" (get-in result [1 :class])))
(is (nil? (get-in result [1 :open])))
;; summary trigger is present
(is (= :summary (get-in result [2 0])))
(is (= "accordion-trigger" (get-in result [2 1 :class])))
;; content div is always present
(is (some #(and (vector? %) (= "accordion-content" (get-in % [1 :class])))
(rest (rest result))))))
(testing "open accordion has open attribute"
(let [result (accordion/accordion {:title "Q?" :open true} "A.")]
(is (= :details (first result)))
(is (true? (get-in result [1 :open])))))
(testing "children are inside content div"
(let [result (accordion/accordion {:title "T"} "Child1" "Child2")]
;; find the content div
(let [content-div (first (filter #(and (vector? %)
(= "accordion-content" (get-in % [1 :class])))
(rest (rest result))))]
(is (some? content-div))))))