joy
joy copied to clipboard
validator params does not act as documented
If I set up a params object (naming it validate-account
to not shadow the params function, which I think is a bad example)
(def validate-account
(params :accounts
(validates [:name :real-name] :required true)
(permit [:name :real-name])))
The documented behavior is not met, in fact both the error case and the successful case do not work as described.
repl:39:> (rescue (validate-account {:name "hello"}))
(@{:name "name is required" :real-name "real-name is required"} nil)
repl:40:> (rescue (validate-account {:name "hello" :real-name "real"}))
(@{:name "name is required" :real-name "real-name is required"} nil)
Instead the true behavior is found when it is wrapped in {:body {...}}
repl:41:> (rescue (validate-account {:body {:name "hello"}}))
(@{:real-name "real-name is required"} nil)
repl:42:> (rescue (validate-account {:body {:name "hello" :real-name "real"}}))
(nil @{:db/table :accounts :name "hello" :real-name "real"})
Hmm maybe there should be a validate-body and validate for requests and for regular dictionaries