Convert tests to Midje
This commit is contained in:
parent
d7708e1382
commit
15b9ec8927
2 changed files with 76 additions and 92 deletions
|
@ -19,7 +19,8 @@
|
||||||
[sablono "0.2.17"]
|
[sablono "0.2.17"]
|
||||||
[cljs-uuid "0.0.4"]
|
[cljs-uuid "0.0.4"]
|
||||||
[net.polyc0l0r/hasch "0.2.3"]]
|
[net.polyc0l0r/hasch "0.2.3"]]
|
||||||
:profiles {:uberjar {:aot :all}}
|
:profiles {:uberjar {:aot :all}
|
||||||
|
:dev {:dependencies [[midje "1.6.3"]]}}
|
||||||
:min-lein-version "2.1.2"
|
:min-lein-version "2.1.2"
|
||||||
:plugins [[lein-cljsbuild "1.0.3"]
|
:plugins [[lein-cljsbuild "1.0.3"]
|
||||||
[lein-ring "0.8.6"]
|
[lein-ring "0.8.6"]
|
||||||
|
@ -42,7 +43,7 @@
|
||||||
:output-path "target/generated/cljs"
|
:output-path "target/generated/cljs"
|
||||||
:rules :cljs}]}
|
:rules :cljs}]}
|
||||||
:source-paths ["src/clj" "src/test"]
|
:source-paths ["src/clj" "src/test"]
|
||||||
:test-paths ["spec/clj"]
|
:test-paths ["src/test"]
|
||||||
:ring {:handler grub.core/app}
|
:ring {:handler grub.core/app}
|
||||||
:uberjar-name "grub-standalone.jar"
|
:uberjar-name "grub-standalone.jar"
|
||||||
:main grub.core)
|
:main grub.core)
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
(ns grub.test.unit.state
|
(ns grub.test.unit.state
|
||||||
(:require [grub.shared-state :as state]
|
(:require [grub.shared-state :as state]
|
||||||
[clojure.test :refer :all]
|
[clojure.test :refer :all]
|
||||||
|
[midje.sweet :refer :all]
|
||||||
[hasch.core :as hasch]
|
[hasch.core :as hasch]
|
||||||
[clojure.core.async :as a :refer [<!! >!! chan go]]))
|
[clojure.core.async :as a :refer [<!! >!! chan go]]))
|
||||||
|
|
||||||
|
@ -10,9 +11,7 @@
|
||||||
:state s}))
|
:state s}))
|
||||||
(into [])))
|
(into [])))
|
||||||
|
|
||||||
(deftest diff-no-server-changes
|
(fact "Applies diff and returns empty diff when no server changes"
|
||||||
;; Returns empty ACK diff with hash of current state
|
|
||||||
;; when no server changes
|
|
||||||
(let [states (hashed-states
|
(let [states (hashed-states
|
||||||
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}})
|
{:grubs {"1" {:text "2 apples" :completed false}} :recipes {}})
|
||||||
states* (atom states)
|
states* (atom states)
|
||||||
|
@ -23,20 +22,16 @@
|
||||||
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 [diff-response (<!! out)]
|
(let [response (<!! out)]
|
||||||
(is (= (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 {}})
|
||||||
@states*))
|
response => {:type :diff
|
||||||
(is (= {:type :diff
|
|
||||||
:diff {:grubs {:deleted #{}, :updated nil}
|
:diff {:grubs {:deleted #{}, :updated nil}
|
||||||
:recipes {:deleted #{}, :updated nil}}
|
:recipes {:deleted #{}, :updated nil}}
|
||||||
:hash (:hash (last @states*))}
|
:hash (:hash (last @states*))})))
|
||||||
diff-response)))))
|
|
||||||
|
|
||||||
(deftest diff-server-changes
|
(fact "Applies diff and returns changes when server has changed"
|
||||||
;; Returns diff with changes when server has changed
|
|
||||||
;; Client state fetched from history
|
|
||||||
(let [states (hashed-states
|
(let [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}
|
||||||
|
@ -50,8 +45,8 @@
|
||||||
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 [diff-response (<!! out)]
|
(let [response (<!! out)]
|
||||||
(is (= (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}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
|
@ -59,18 +54,14 @@
|
||||||
{:grubs {"1" {:text "2 apples" :completed true}
|
{:grubs {"1" {:text "2 apples" :completed true}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
:recipes {}})
|
:recipes {}})
|
||||||
@states*))
|
response => {:type :diff
|
||||||
(is (= {:type :diff
|
|
||||||
:diff {:grubs {:deleted #{}
|
:diff {:grubs {:deleted #{}
|
||||||
:updated {"2" {:completed false, :text "3 onions"}}}
|
:updated {"2" {:completed false, :text "3 onions"}}}
|
||||||
:recipes {:deleted #{}, :updated nil}}
|
:recipes {:deleted #{}, :updated nil}}
|
||||||
:hash (hasch/uuid {:grubs {"1" {:text "2 apples" :completed true}}
|
:hash (hasch/uuid {:grubs {"1" {:text "2 apples" :completed true}}
|
||||||
:recipes {}})}
|
:recipes {}})})))
|
||||||
diff-response)))))
|
|
||||||
|
|
||||||
(deftest diff-client-out-of-sync
|
(fact "Force full sync if client is out of sync"
|
||||||
;; Returns full sync if client state not found
|
|
||||||
;; in history
|
|
||||||
(let [states (hashed-states
|
(let [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}
|
||||||
|
@ -85,21 +76,18 @@
|
||||||
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 [diff-response (<!! out)]
|
(let [response (<!! out)]
|
||||||
(is (= (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}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
:recipes {}})
|
:recipes {}})
|
||||||
@states*))
|
response => {:type :full-sync
|
||||||
(is (= {:type :full-sync
|
|
||||||
:state {:grubs {"1" {:text "2 apples" :completed false}
|
:state {:grubs {"1" {:text "2 apples" :completed false}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
:recipes {}}}
|
:recipes {}}})))
|
||||||
diff-response)))))
|
|
||||||
|
|
||||||
(deftest full-sync-request
|
(fact "Full sync if client requests it"
|
||||||
;; Returns full sync if client requests it
|
|
||||||
(let [states (hashed-states
|
(let [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}
|
||||||
|
@ -111,21 +99,18 @@
|
||||||
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 [diff-response (<!! out)]
|
(let [response (<!! out)]
|
||||||
(is (= (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}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
:recipes {}})
|
:recipes {}})
|
||||||
@states*))
|
response => {:type :full-sync
|
||||||
(is (= {:type :full-sync
|
|
||||||
:state {:grubs {"1" {:text "2 apples" :completed false}
|
:state {:grubs {"1" {:text "2 apples" :completed false}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
:recipes {}}}
|
:recipes {}}})))
|
||||||
diff-response)))))
|
|
||||||
|
|
||||||
(deftest new-state
|
(fact "Passes diffs of new states to client"
|
||||||
;; Passes diff with new state to client
|
|
||||||
(let [states (hashed-states
|
(let [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}
|
||||||
|
@ -143,8 +128,8 @@
|
||||||
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 [diff-response (<!! out)]
|
(let [response (<!! out)]
|
||||||
(is (= (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}
|
||||||
"2" {:text "3 onions" :completed false}}
|
"2" {:text "3 onions" :completed false}}
|
||||||
|
@ -153,11 +138,9 @@
|
||||||
"2" {:text "3 onions" :completed false}
|
"2" {:text "3 onions" :completed false}
|
||||||
"3" {:text "milk" :completed false}}
|
"3" {:text "milk" :completed false}}
|
||||||
:recipes {}})
|
:recipes {}})
|
||||||
@states*))
|
response => {:type :diff
|
||||||
(is (= {:type :diff
|
|
||||||
:diff {:grubs {:deleted #{}
|
:diff {:grubs {:deleted #{}
|
||||||
:updated {"2" {:text "3 onions" :completed false}
|
:updated {"2" {:text "3 onions" :completed false}
|
||||||
"3" {:text "milk" :completed false}}}
|
"3" {:text "milk" :completed false}}}
|
||||||
:recipes {:deleted #{}, :updated nil}}
|
:recipes {:deleted #{}, :updated nil}}
|
||||||
:hash (hasch/uuid client-state)}
|
:hash (hasch/uuid client-state)})))
|
||||||
diff-response)))))
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue