diff --git a/app/controllers/graphql_controller.rb b/app/controllers/graphql_controller.rb index 98ceb3111..ddc143e62 100644 --- a/app/controllers/graphql_controller.rb +++ b/app/controllers/graphql_controller.rb @@ -20,8 +20,8 @@ class GraphqlController < ApplicationController private def consul_schema - api_types = GraphQL::ApiTypesCreator.new(API_TYPE_DEFINITIONS).create - query_type = GraphQL::QueryTypeCreator.new(api_types).create + api_types = GraphQL::ApiTypesCreator.new(API_TYPE_DEFINITIONS).create + query_type = GraphQL::QueryTypeCreator.create(api_types) GraphQL::Schema.define do query query_type diff --git a/lib/graph_ql/query_type_creator.rb b/lib/graph_ql/query_type_creator.rb index 79020950e..36e6626b9 100644 --- a/lib/graph_ql/query_type_creator.rb +++ b/lib/graph_ql/query_type_creator.rb @@ -3,20 +3,12 @@ require 'graphql' module GraphQL class QueryTypeCreator - attr_accessor :created_api_types - - def initialize(created_api_types) - @created_api_types = created_api_types - end - - def create - query_type_creator = self - + def self.create(api_types) GraphQL::ObjectType.define do name 'QueryType' description 'The root query for the schema' - query_type_creator.created_api_types.each do |model, created_type| + api_types.each do |model, created_type| if created_type.fields['id'] field model.graphql_field_name do type created_type diff --git a/spec/lib/graph_ql/query_type_creator_spec.rb b/spec/lib/graph_ql/query_type_creator_spec.rb index 9669de0c1..7412ae0da 100644 --- a/spec/lib/graph_ql/query_type_creator_spec.rb +++ b/spec/lib/graph_ql/query_type_creator_spec.rb @@ -7,19 +7,16 @@ describe GraphQL::QueryTypeCreator do Proposal => { fields: { id: :integer, title: :string } } } end - let(:api_types_creator) { GraphQL::ApiTypesCreator.new(api_type_definitions) } - let(:created_api_types) { api_types_creator.create } - let(:query_type_creator) { GraphQL::QueryTypeCreator.new(created_api_types) } + let(:api_types) { GraphQL::ApiTypesCreator.new(api_type_definitions).create } describe "::create" do - let(:query_type) { query_type_creator.create } + let(:query_type) { GraphQL::QueryTypeCreator.create(api_types) } it 'creates a QueryType with fields to retrieve single objects whose model fields included an ID' do field = query_type.fields['proposal'] - proposal_type = query_type_creator.created_api_types[Proposal] expect(field).to be_a(GraphQL::Field) - expect(field.type).to eq(proposal_type) + expect(field.type).to eq(api_types[Proposal]) expect(field.name).to eq('proposal') end @@ -29,10 +26,9 @@ describe GraphQL::QueryTypeCreator do it "creates a QueryType with connections to retrieve collections of objects" do connection = query_type.fields['proposals'] - proposal_type = query_type_creator.created_api_types[Proposal] expect(connection).to be_a(GraphQL::Field) - expect(connection.type).to eq(proposal_type.connection_type) + expect(connection.type).to eq(api_types[Proposal].connection_type) expect(connection.name).to eq('proposals') end end diff --git a/spec/lib/graphql_spec.rb b/spec/lib/graphql_spec.rb index bc491f6ba..2d976a608 100644 --- a/spec/lib/graphql_spec.rb +++ b/spec/lib/graphql_spec.rb @@ -1,8 +1,7 @@ require 'rails_helper' -api_types = GraphQL::ApiTypesCreator.new(API_TYPE_DEFINITIONS).create -query_type = GraphQL::QueryTypeCreator.new(api_types).create - +api_types = GraphQL::ApiTypesCreator.new(API_TYPE_DEFINITIONS).create +query_type = GraphQL::QueryTypeCreator.create(api_types) ConsulSchema = GraphQL::Schema.define do query query_type max_depth 12