Skip to content

Instantly share code, notes, and snippets.

@Jannis
Created September 9, 2016 16:41
Show Gist options
  • Select an option

  • Save Jannis/2a1dc9ff48401e36c76c43275b6a6c08 to your computer and use it in GitHub Desktop.

Select an option

Save Jannis/2a1dc9ff48401e36c76c43275b6a6c08 to your computer and use it in GitHub Desktop.
(deftest conforming-regular-properties
(are [out in] (= out (q/conform in))
'[[:property [:simple a]]]
'[a]
'[[:property [:simple a]]
[:property [:simple b]]]
'[a b]
'[[:property [:simple a]]
[:property [:simple b]]
[:property [:simple c]]]
'[a b c]))
(deftest conforming-link-properties
(are [out in] (= out (q/conform in))
'[[:property [:link [a _]]]]
'[[a _]]
'[[:property [:link [a _]]]
[:property [:link [b 1]]]]
'[[a _] [b 1]]
'[[:property [:link [a _]]]
[:property [:link [b 1]]]
[:property [:link [c :x]]]]
'[[a _] [b 1] [c :x]]))
(deftest conforming-joins-with-a-simple-property-source
(are [out in] (= out (q/conform in))
'[[:property [:join [:properties {[:simple a]
[[:property [:simple b]]]}]]]]
'[{a [b]}]
'[[:property [:join [:properties {[:simple a]
[[:property [:simple b]]
[:property [:simple c]]]}]]]]
'[{a [b c]}]
'[[:property [:join [:properties {[:simple a]
[[:property [:simple b]]
[:property [:simple c]]]}]]]
[:property [:simple d]]]
'[{a [b c]} d]
'[[:property [:join [:properties {[:simple a]
[[:property [:simple b]]
[:property [:simple c]]]}]]]
[:property [:join [:properties {[:simple d]
[[:property [:simple e]]
[:property [:simple f]]]}]]]]
'[{a [b c]} {d [e f]}]
'[[:property [:join [:recursive {[:simple a]
[:unlimited ...]}]]]]
'[{a ...}]
'[[:property [:join [:recursive {[:simple a]
[:limited 5]}]]]]
'[{a 5}]
'[[:property [:join [:model {[:simple a]
[:model User]}]]]]
'[{a User}]))
(deftest conforming-joins-with-a-link-source
(are [out in] (= out (q/conform in))
'[[:property [:join [:properties {[:link [a _]]
[[:property [:simple b]]]}]]]]
'[{[a _] [b]}]
'[[:property [:join [:properties {[:link [a _]]
[[:property [:simple b]]]}]]]]
'[{[a _] [b]}]
'[[:property [:join [:properties {[:link [a 1]]
[[:property [:simple b]]
[:property [:simple c]]]}]]]]
'[{[a 1] [b c]}]
'[[:property [:join [:properties {[:link [a :x]]
[[:property [:simple b]]
[:property [:simple c]]
[:property [:simple d]]]}]]]]
'[{[a :x] [b c d]}]))
(deftest conforming-prefixed-properties
(are [out in] (= out (q/conform in))
'[[:prefixed-properties {:base a
:children [[:property [:simple b]]]}]]
'[a [b]]
'[[:prefixed-properties {:base a
:children [[:property [:simple b]]
[:property [:simple c]]]}]]
'[a [b c]]
'[[:prefixed-properties {:base a
:children [[:property [:simple b]]
[:property [:simple c]]]}]
[:property [:simple d]]]
'[a [b c] d]
'[[:prefixed-properties {:base a
:children [[:property [:simple b]]
[:property [:simple c]]]}]
[:prefixed-properties {:base d
:children [[:property [:simple e]]
[:property [:simple f]]]}]]
'[a [b c] d [e f]]))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment