Skip to content

Commit 4b7b34c

Browse files
committed
add formal complexity tests.
1 parent 47a4f99 commit 4b7b34c

File tree

1 file changed

+34
-6
lines changed

1 file changed

+34
-6
lines changed

spec/graphql/analysis/ast/query_complexity_spec.rb

Lines changed: 34 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@
2121

2222
describe "simple queries" do
2323
let(:query_string) {%|
24-
query cheeses($isSkipped: Boolean = false){
24+
query cheeses {
2525
# complexity of 3
2626
cheese1: cheese(id: 1) {
2727
id
2828
flavor
2929
}
3030
3131
# complexity of 4
32-
cheese2: cheese(id: 2) @skip(if: $isSkipped) {
32+
cheese2: cheese(id: 2) {
3333
similarCheese(source: SHEEP) {
3434
... on Cheese {
3535
similarCheese(source: SHEEP) {
@@ -45,12 +45,40 @@
4545
complexities = reduce_result.first
4646
assert_equal 7, complexities
4747
end
48+
end
49+
50+
describe "with skip/include" do
51+
let(:query_string) {%|
52+
query cheeses($skip: Boolean = false, $include: Boolean = true) {
53+
fields: cheese(id: 1) {
54+
flavor
55+
origin @skip(if: $skip)
56+
source @include(if: $include)
57+
}
58+
inlineFragments: cheese(id: 1) {
59+
...on Cheese { flavor }
60+
...on Cheese @skip(if: $skip) { origin }
61+
...on Cheese @include(if: $include) { source }
62+
}
63+
fragmentSpreads: cheese(id: 1) {
64+
...Flavorful
65+
...Original @skip(if: $skip)
66+
...Sourced @include(if: $include)
67+
}
68+
}
69+
fragment Flavorful on Cheese { flavor }
70+
fragment Original on Cheese { origin }
71+
fragment Sourced on Cheese { source }
72+
|}
73+
74+
it "sums up all included complexities" do
75+
assert_equal 12, reduce_result.first
76+
end
4877

4978
describe "when skipped by directives" do
50-
let(:variables) { { "isSkipped" => true } }
51-
it "doesn't include skipped fields" do
52-
complexity = reduce_result.first
53-
assert_equal 3, complexity
79+
let(:variables) { { "skip" => true, "include" => false } }
80+
it "doesn't include skipped fields and fragments" do
81+
assert_equal 6, reduce_result.first
5482
end
5583
end
5684
end

0 commit comments

Comments
 (0)