Skip to content

validator params does not act as documented #90

@LeviSchuck

Description

@LeviSchuck

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"})

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions