mirror of https://github.com/status-im/reagent.git
Add tests for lifecycle methods
This commit is contained in:
parent
64d1e11966
commit
5fceda2aae
|
@ -614,3 +614,70 @@
|
||||||
(swap! n3 inc))))]
|
(swap! n3 inc))))]
|
||||||
(is (= (rstr [c]) (rstr [:div 1])))
|
(is (= (rstr [c]) (rstr [:div 1])))
|
||||||
(is (= [1 1 1] [@n1 @n2 @n3]))))
|
(is (= [1 1 1] [@n1 @n2 @n3]))))
|
||||||
|
|
||||||
|
(deftest lifecycle
|
||||||
|
(let [n1 (atom 0)
|
||||||
|
t (atom 0)
|
||||||
|
res (atom {})
|
||||||
|
add-args (fn [key args]
|
||||||
|
(swap! res assoc key
|
||||||
|
{:at (swap! n1 inc)
|
||||||
|
:args (vec args)}))
|
||||||
|
render (fn [& args]
|
||||||
|
(add-args :render args)
|
||||||
|
[:div (first args)])
|
||||||
|
ls {:get-initial-state
|
||||||
|
(fn [& args]
|
||||||
|
(reset! t (first args))
|
||||||
|
(add-args :initial-state args)
|
||||||
|
{:foo "bar"})
|
||||||
|
:component-will-mount
|
||||||
|
(fn [& args] (add-args :will-mount args))
|
||||||
|
:component-did-mount
|
||||||
|
(fn [& args] (add-args :did-mount args))
|
||||||
|
:should-component-update
|
||||||
|
(fn [& args] (add-args :should-update args) true)
|
||||||
|
:component-will-update
|
||||||
|
(fn [& args] (add-args :will-update args))
|
||||||
|
:component-did-update
|
||||||
|
(fn [& args] (add-args :did-update args))
|
||||||
|
:component-will-unmount
|
||||||
|
(fn [& args] (add-args :will-unmount args))}
|
||||||
|
c1 (r/create-class
|
||||||
|
(assoc ls :reagent-render render))
|
||||||
|
defarg ["a" "b"]
|
||||||
|
arg (r/atom defarg)
|
||||||
|
comp (atom c1)
|
||||||
|
c2 (fn []
|
||||||
|
(apply vector @comp @arg))
|
||||||
|
check (fn []
|
||||||
|
(is (= (:initial-state @res)
|
||||||
|
{:at 1 :args [@t]}))
|
||||||
|
(is (= (:will-mount @res)
|
||||||
|
{:at 2 :args [@t]}))
|
||||||
|
(is (= (:render @res)
|
||||||
|
{:at 3 :args ["a" "b"]}))
|
||||||
|
(is (= (:did-mount @res)
|
||||||
|
{:at 4 :args [@t]}))
|
||||||
|
|
||||||
|
(reset! arg ["a" "c"])
|
||||||
|
(r/flush)
|
||||||
|
(is (= (:should-update @res)
|
||||||
|
{:at 5 :args [@t [@comp "a" "b"] [@comp "a" "c"]]}))
|
||||||
|
(is (= (:will-update @res)
|
||||||
|
{:at 6 :args [@t [@comp "a" "c"]]}))
|
||||||
|
(is (= (:render @res)
|
||||||
|
{:at 7 :args ["a" "c"]}))
|
||||||
|
(is (= (:did-update @res)
|
||||||
|
{:at 8 :args [@t [@comp "a" "b"]]})))]
|
||||||
|
(when isClient
|
||||||
|
(with-mounted-component [c2] check)
|
||||||
|
(is (= (:will-unmount @res)
|
||||||
|
{:at 9 :args [@t]}))
|
||||||
|
|
||||||
|
(reset! comp (with-meta render ls))
|
||||||
|
(reset! arg defarg)
|
||||||
|
(reset! n1 0)
|
||||||
|
(with-mounted-component [c2] check)
|
||||||
|
(is (= (:will-unmount @res)
|
||||||
|
{:at 9 :args [@t]})))))
|
||||||
|
|
Loading…
Reference in New Issue