43 lines
1.2 KiB
Text
43 lines
1.2 KiB
Text
|
|
(ns datalog.parser.pull-test
|
||
|
|
(:require [datalog.parser.pull :as dpp]
|
||
|
|
#?(:cljs [cljs.test :as t :refer-macros [is are deftest testing]]
|
||
|
|
:clj [clojure.test :as t :refer [is are deftest testing]])))
|
||
|
|
|
||
|
|
#?(:cljs
|
||
|
|
(def Throwable js/Error))
|
||
|
|
|
||
|
|
(deftest test-parse-pattern
|
||
|
|
(are [pattern expected] (= expected (dpp/parse-pull pattern))
|
||
|
|
'[:db/id :foo/bar]
|
||
|
|
(dpp/->PullSpec false {:db/id {:attr :db/id}
|
||
|
|
:foo/bar {:attr :foo/bar}})
|
||
|
|
|
||
|
|
'[(limit :foo 1)]
|
||
|
|
(dpp/->PullSpec false {:foo {:attr :foo :limit 1}})
|
||
|
|
|
||
|
|
'[* (default :foo "bar")]
|
||
|
|
(dpp/->PullSpec true {:foo {:attr :foo :default "bar"}})
|
||
|
|
|
||
|
|
'[{:foo ...}]
|
||
|
|
(dpp/->PullSpec false {:foo {:attr :foo :recursion nil}})
|
||
|
|
|
||
|
|
'[{(limit :foo 2) [:bar :me]}]
|
||
|
|
(dpp/->PullSpec
|
||
|
|
false
|
||
|
|
{:foo {:attr :foo
|
||
|
|
:limit 2
|
||
|
|
:subpattern (dpp/->PullSpec
|
||
|
|
false
|
||
|
|
{:bar {:attr :bar}
|
||
|
|
:me {:attr :me}})}})))
|
||
|
|
|
||
|
|
(deftest test-parse-bad-limit
|
||
|
|
(is
|
||
|
|
(thrown? Throwable (dpp/parse-pull '[(limit :foo :bar)]))))
|
||
|
|
|
||
|
|
(deftest test-parse-bad-default
|
||
|
|
(is
|
||
|
|
(thrown? Throwable (dpp/parse-pull '[(default 1 :bar)]))))
|
||
|
|
|
||
|
|
#_(t/test-ns 'datahike.test.pull-parser)
|