@@ -1726,3 +1726,81 @@ function g.test_specifiedByURL_long_scalar()
1726
1726
t .assert_equals (long_type_schema .specifiedByURL , ' https://github.com/tarantool/graphql/wiki/Long' )
1727
1727
t .assert_equals (errors , nil )
1728
1728
end
1729
+
1730
+ function g .test_skip_include_directives ()
1731
+ local function callback (_ , _ )
1732
+ return {
1733
+ uri = ' uri1' ,
1734
+ uris = {
1735
+ uri = ' uri2'
1736
+ }
1737
+ }
1738
+ end
1739
+
1740
+ local query_schema = {
1741
+ [' test' ] = {
1742
+ kind = types .object ({
1743
+ name = ' selection' ,
1744
+ fields = {
1745
+ uri = types .string ,
1746
+ uris = types .object ({
1747
+ name = ' uris' ,
1748
+ fields = {
1749
+ uri = types .string ,
1750
+ }
1751
+ }),
1752
+ }
1753
+ }),
1754
+ resolve = callback ,
1755
+ }
1756
+ }
1757
+
1758
+ -- check request without directives
1759
+ local data , errors = check_request (' {test{uri uris{uri}}}' , query_schema )
1760
+ t .assert_equals (errors , nil )
1761
+ t .assert_items_equals (data , {test = {uri = " uri1" , uris = {uri = " uri2" }}})
1762
+
1763
+ -- check request with directive: skip if == false
1764
+ data , errors = check_request (
1765
+ ' query TEST($skip_field: Boolean){test{uri@skip(if: $skip_field) uris{uri}}}' ,
1766
+ query_schema ,
1767
+ nil ,
1768
+ nil ,
1769
+ { variables = { skip_field = false }}
1770
+ )
1771
+ t .assert_equals (errors , nil )
1772
+ t .assert_items_equals (data , {test = {uri = " uri1" , uris = {uri = " uri2" }}})
1773
+
1774
+ -- check request with directive: skip if == true
1775
+ data , errors = check_request (
1776
+ ' query TEST($skip_field: Boolean){test{uri@skip(if: $skip_field) uris{uri}}}' ,
1777
+ query_schema ,
1778
+ nil ,
1779
+ nil ,
1780
+ { variables = { skip_field = true }}
1781
+ )
1782
+ t .assert_equals (errors , nil )
1783
+ t .assert_items_equals (data , {test = {uris = {uri = " uri2" }}})
1784
+
1785
+ -- check request with directive: include if == false
1786
+ data , errors = check_request (
1787
+ ' query TEST($include_field: Boolean){test{uri@include(if: $include_field) uris{uri}}}' ,
1788
+ query_schema ,
1789
+ nil ,
1790
+ nil ,
1791
+ { variables = { include_field = false }}
1792
+ )
1793
+ t .assert_equals (errors , nil )
1794
+ t .assert_items_equals (data , {test = {uris = {uri = " uri2" }}})
1795
+
1796
+ -- check request with directive: include if == true
1797
+ data , errors = check_request (
1798
+ ' query TEST($include_field: Boolean){test{uri@include(if: $include_field) uris{uri}}}' ,
1799
+ query_schema ,
1800
+ nil ,
1801
+ nil ,
1802
+ { variables = { include_field = true }}
1803
+ )
1804
+ t .assert_equals (errors , nil )
1805
+ t .assert_items_equals (data , {test = {uri = " uri1" , uris = {uri = " uri2" }}})
1806
+ end
0 commit comments