Skip to content

Instantly share code, notes, and snippets.

@souenzzo

souenzzo/why.clj Secret

Created February 14, 2018 22:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save souenzzo/6db3917911884d44e7da768958c7f242 to your computer and use it in GitHub Desktop.
Save souenzzo/6db3917911884d44e7da768958c7f242 to your computer and use it in GitHub Desktop.
(ns backend.service-test
(:require [om.next :as om :refer [defui]]
[midje.sweet :refer :all]
[clojure.test :refer [deftest]]))
(defmulti om-read om/dispatch)
(defmethod om-read :default
[_ k _]
(throw (ex-info (str "read: " k) {:k k})))
(defmethod om-read :db/id
[{:keys [target]} k _]
{:value (get target k)})
(defmethod om-read :user/name
[{:keys [target]} k _]
{:value (get target k)})
(defmethod om-read :user/id
[{:keys [target]} k _]
{:value (get target k)})
(defmethod om-read :me
[{:keys [state query parser] :as env} k v]
;; Why parser returns '[]'
{:value (parser env query (get @state k))})
(def parser
(om/parser
{:read om-read}))
(deftest recursive-read
(let [state (atom {:me {:db/id 1 :user/name "abc" :user/id "1"}})
env {:state state}]
(fact
"why it fail?"
(parser env [{:me [:db/id :user/name]}])
;; actual => {:me []}
=> {:me {:db/id 1 :user/name "abc"}})))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment