Sha256: 983c3bcb396c7089473c4f1fdf88fc513adf5b1d787060a1e80816025d286d64

Contents?: true

Size: 1.59 KB

Versions: 89

Compression:

Stored size: 1.59 KB

Contents

# frozen_string_literal: true
require "spec_helper"

describe GraphQL::Analysis::FieldUsage do
  let(:result) { [] }
  let(:field_usage_analyzer) { GraphQL::Analysis::FieldUsage.new { |query, used_fields, used_deprecated_fields| result << query << used_fields << used_deprecated_fields } }
  let(:reduce_result) { GraphQL::Analysis.analyze_query(query, [field_usage_analyzer]) }
  let(:query) { GraphQL::Query.new(Dummy::Schema, query_string, variables: variables) }
  let(:variables) { {} }

  describe "query with deprecated fields" do
    let(:query_string) {%|
      query {
        cheese(id: 1) {
          id
          fatContent
        }
      }
    |}

    it "returns query in reduced result" do
      reduce_result
      assert_equal query, result[0]
    end

    it "keeps track of used fields" do
      reduce_result
      assert_equal ['Cheese.id', 'Cheese.fatContent', 'Query.cheese'], result[1]
    end

    it "keeps track of deprecated fields" do
      reduce_result
      assert_equal ['Cheese.fatContent'], result[2]
    end
  end

  describe "query with deprecated fields used more than once" do
    let(:query_string) {%|
      query {
        cheese1: cheese(id: 1) {
          id
          fatContent
        }

        cheese2: cheese(id: 2) {
          id
          fatContent
        }
      }
    |}

    it "omits duplicate usage of a field" do
      reduce_result
      assert_equal ['Cheese.id', 'Cheese.fatContent', 'Query.cheese'], result[1]
    end

    it "omits duplicate usage of a deprecated field" do
      reduce_result
      assert_equal ['Cheese.fatContent'], result[2]
    end
  end
end

Version data entries

89 entries across 89 versions & 1 rubygems

Version Path
graphql-1.8.18 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.11 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.10 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.9 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.8 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.7 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.6 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.5 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.4 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.3 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.2 spec/graphql/analysis/field_usage_spec.rb
graphql-1.8.17 spec/graphql/analysis/field_usage_spec.rb
graphql-1.8.16 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.1 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.0 spec/graphql/analysis/field_usage_spec.rb
graphql-1.8.15 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.0.pre4 spec/graphql/analysis/field_usage_spec.rb
graphql-1.8.14 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.0.pre3 spec/graphql/analysis/field_usage_spec.rb
graphql-1.9.0.pre2 spec/graphql/analysis/field_usage_spec.rb