Sha256: 14e61d160ba04a766f1bc4a11385ecd432a148942c3baa700aa4e24bb2b488e6

Contents?: true

Size: 1.38 KB

Versions: 10

Compression:

Stored size: 1.38 KB

Contents

require "spec_helper"

describe GraphQL::StaticValidation::FragmentsAreFinite do
  include StaticValidationHelpers

  let(:query_string) {%|
    query getCheese {
      cheese(id: 1) {
        ... idField
        ... sourceField
        similarCheese(source: SHEEP) {
          ... flavorField
        }
      }
    }

    fragment sourceField on Cheese {
      source,
      ... flavorField
      ... idField
    }
    fragment flavorField on Cheese {
      flavor,
      similarCheese(source: SHEEP) {
        ... on Cheese {
          ... sourceField
        }
      }
    }
    fragment idField on Cheese {
      id
    }
  |}

  it "doesnt allow infinite loops" do
    expected = [
      {
        "message"=>"Fragment sourceField contains an infinite loop",
        "locations"=>[{"line"=>12, "column"=>5}],
        "fields"=>["fragment sourceField"],
      },
      {
        "message"=>"Fragment flavorField contains an infinite loop",
        "locations"=>[{"line"=>17, "column"=>5}],
        "fields"=>["fragment flavorField"],
      }
    ]
    assert_equal(expected, errors)
  end

  describe "undefined spreads inside fragments" do
    let(:query_string) {%|
      {
        cheese(id: 1) { ... frag1 }
      }
      fragment frag1 on Cheese { id, ...frag2 }
    |}

    it "doesn't blow up" do
      assert_equal("Fragment frag2 was used, but not defined", errors.first["message"])
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
graphql-1.2.6 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.5 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.4 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.3 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.2 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.1 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.2.0 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.1.0 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-1.0.0 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb
graphql-0.19.4 spec/graphql/static_validation/rules/fragments_are_finite_spec.rb