mirror of
https://github.com/status-im/pluto.git
synced 2025-02-24 08:28:15 +00:00
Fixed incorrect errors acc when reference resolving
This commit is contained in:
parent
e4ce762bd6
commit
80f6d2e806
@ -73,17 +73,21 @@
|
||||
{} type)
|
||||
{:errors [(errors/error ::errors/invalid-assoc-type {:type type :value value})]}))
|
||||
|
||||
(defmethod resolve :event [ctx ext type [event-name event-properties :as value]]
|
||||
(defn- resolve-reference [ctx ext type [name _ :as value] f error]
|
||||
(let [{:keys [data errors]} (reference/resolve ctx ext type value)]
|
||||
(errors/merge-errors {:data #(re-frame/dispatch (if event-properties [data event-properties] [data]))}
|
||||
(when errors
|
||||
{:errors (apply conj errors [(errors/error ::errors/unknown-event {:type type :value name})])}))))
|
||||
(merge (when data {:data (f data)})
|
||||
(when errors
|
||||
{:errors (apply conj [(errors/error error name)] errors)}))))
|
||||
|
||||
(defmethod resolve :query [ctx ext type [properties name :as value]]
|
||||
(let [{:keys [data errors]} (reference/resolve ctx ext type value)]
|
||||
(errors/merge-errors {:data #(re-frame/subscribe (if properties [data properties] [data]))}
|
||||
(when errors
|
||||
{:errors (apply conj errors [(errors/error ::errors/unknown-query {:type type :value name})])}))))
|
||||
(defmethod resolve :event [ctx ext type [_ properties :as value]]
|
||||
(resolve-reference ctx ext type value
|
||||
(fn [data] #(re-frame/dispatch (if properties [data properties] [data])))
|
||||
::errors/unknown-event))
|
||||
|
||||
(defmethod resolve :query [ctx ext type [name properties :as value]]
|
||||
(resolve-reference ctx ext type value
|
||||
(fn [data] #(re-frame/subscribe (if properties [data properties] [data])))
|
||||
::errors/unknown-query))
|
||||
|
||||
(defmethod resolve :default [_ _ type value]
|
||||
{:errors [(errors/error ::errors/invalid-type (merge {:type type} (when value {:value value})))]})
|
||||
|
@ -110,6 +110,7 @@
|
||||
(defn parse [ctx ext o]
|
||||
(if (list? o) ;; TODO introduce a block? fn
|
||||
(let [{:keys [data errors] :as m} (blocks/parse ctx ext o)]
|
||||
;; TODO handle nil data case
|
||||
(errors/merge-errors (parse ctx ext data) errors))
|
||||
(parse-hiccup-element ctx ext o)))
|
||||
|
||||
|
@ -101,3 +101,13 @@
|
||||
:name "hello"
|
||||
:children [{:name "name" :scopes [{:scope :one}]}
|
||||
{:name "name" :scopes [{:scope :two}]}]}))))
|
||||
|
||||
(deftest resolve-reference
|
||||
(is (= {:errors [{::errors/type ::errors/unknown-event
|
||||
::errors/value 'event}
|
||||
{::errors/type ::errors/unknown-reference
|
||||
::errors/value {:value 'event}}]}
|
||||
(types/resolve {} {} :event ['event])))
|
||||
(let [{:keys [data errors]} (types/resolve {:capacities {:events {'event {:value :event}}}} {} :event ['event])]
|
||||
(is (not errors))
|
||||
(is data)))
|
||||
|
Loading…
x
Reference in New Issue
Block a user