Add timeout to make tests work even if channel pull blocks
This commit is contained in:
parent
8850552838
commit
821ba079e0
1 changed files with 12 additions and 8 deletions
|
@ -14,7 +14,11 @@
|
||||||
(defn states-atom [& states]
|
(defn states-atom [& states]
|
||||||
(atom (apply hashed-states states)))
|
(atom (apply hashed-states states)))
|
||||||
|
|
||||||
(fact "Applies diff and returns empty diff when no server changes"
|
(defn <!!? [c]
|
||||||
|
(let [[v p] (a/alts!! [c (a/timeout 100)])]
|
||||||
|
v))
|
||||||
|
|
||||||
|
(fact "Applies diff an returns empty diff when no server changes"
|
||||||
(let [states (states-atom
|
(let [states (states-atom
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}})
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}})
|
||||||
msg {:type :diff
|
msg {:type :diff
|
||||||
|
@ -24,7 +28,7 @@
|
||||||
out (chan 1)]
|
out (chan 1)]
|
||||||
(state/make-server-agent in out states)
|
(state/make-server-agent in out states)
|
||||||
(>!! in msg)
|
(>!! in msg)
|
||||||
(let [response (<!! out)]
|
(let [response (<!!? out)]
|
||||||
@states => (hashed-states
|
@states => (hashed-states
|
||||||
{:grubs {"1" {:completed false, :text "2 apples"}}, :recipes {}}
|
{:grubs {"1" {:completed false, :text "2 apples"}}, :recipes {}}
|
||||||
{:grubs {"1" {:completed true, :text "2 apples"}}, :recipes {}})
|
{:grubs {"1" {:completed true, :text "2 apples"}}, :recipes {}})
|
||||||
|
@ -46,7 +50,7 @@
|
||||||
out (chan 1)]
|
out (chan 1)]
|
||||||
(state/make-server-agent in out states)
|
(state/make-server-agent in out states)
|
||||||
(>!! in msg)
|
(>!! in msg)
|
||||||
(let [response (<!! out)]
|
(let [response (<!!? out)]
|
||||||
@states => (hashed-states
|
@states => (hashed-states
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}
|
{:grubs {"1" {:text "2 apples" :completed false}
|
||||||
|
@ -76,7 +80,7 @@
|
||||||
out (chan 1)]
|
out (chan 1)]
|
||||||
(state/make-server-agent in out states)
|
(state/make-server-agent in out states)
|
||||||
(>!! in msg)
|
(>!! in msg)
|
||||||
(let [response (<!! out)]
|
(let [response (<!!? out)]
|
||||||
@states => (hashed-states
|
@states => (hashed-states
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}
|
{:grubs {"1" {:text "2 apples" :completed false}
|
||||||
|
@ -98,7 +102,7 @@
|
||||||
out (chan 1)]
|
out (chan 1)]
|
||||||
(state/make-server-agent in out states)
|
(state/make-server-agent in out states)
|
||||||
(>!! in msg)
|
(>!! in msg)
|
||||||
(let [response (<!! out)]
|
(let [response (<!!? out)]
|
||||||
@states => (hashed-states
|
@states => (hashed-states
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}
|
{:grubs {"1" {:text "2 apples" :completed false}
|
||||||
|
@ -126,7 +130,7 @@
|
||||||
out (chan 1)]
|
out (chan 1)]
|
||||||
(state/make-server-agent in out states client-state)
|
(state/make-server-agent in out states client-state)
|
||||||
(>!! in msg)
|
(>!! in msg)
|
||||||
(let [response (<!! out)]
|
(let [response (<!!? out)]
|
||||||
@states => (hashed-states
|
@states => (hashed-states
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}}
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}
|
{:grubs {"1" {:text "2 apples" :completed false}
|
||||||
|
@ -163,7 +167,7 @@
|
||||||
(state/make-server-agent server-in server-out server-states client-shadow)
|
(state/make-server-agent server-in server-out server-states client-shadow)
|
||||||
(add-watch client-states :test (fn [_ _ _ new-states] (a/put! client-state-changes new-states)))
|
(add-watch client-states :test (fn [_ _ _ new-states] (a/put! client-state-changes new-states)))
|
||||||
(>!! client-in msg)
|
(>!! client-in msg)
|
||||||
(<!! client-state-changes)
|
(<!!? client-state-changes)
|
||||||
(:state (last @client-states)) => {:grubs {"1" {:completed true, :text "2 apples"}}
|
(:state (last @client-states)) => {:grubs {"1" {:completed true, :text "2 apples"}}
|
||||||
:recipes {}}
|
:recipes {}}
|
||||||
(:state (last @server-states)) => {:grubs {"1" {:completed true, :text "2 apples"}}
|
(:state (last @server-states)) => {:grubs {"1" {:completed true, :text "2 apples"}}
|
||||||
|
@ -191,7 +195,7 @@
|
||||||
(state/make-server-agent server-in server-out server-states client-shadow)
|
(state/make-server-agent server-in server-out server-states client-shadow)
|
||||||
(add-watch client-states :test (fn [_ _ _ new-states] (a/put! client-state-changes new-states)))
|
(add-watch client-states :test (fn [_ _ _ new-states] (a/put! client-state-changes new-states)))
|
||||||
(>!! client-in msg)
|
(>!! client-in msg)
|
||||||
(<!! client-state-changes)
|
(<!!? client-state-changes)
|
||||||
@client-states => (hashed-states
|
@client-states => (hashed-states
|
||||||
{:grubs {"1" {:completed false, :text "2 apples"}}, :recipes {}}
|
{:grubs {"1" {:completed false, :text "2 apples"}}, :recipes {}}
|
||||||
{:grubs {"1" {:completed true, :text "2 apples"}}, :recipes {}}
|
{:grubs {"1" {:completed true, :text "2 apples"}}, :recipes {}}
|
||||||
|
|
Loading…
Reference in a new issue