private GraphQLClient BuildTestClient(string schemaSubset)
        {
            var partialSchemaProvider = new PartialSchemaProvider();

            partialSchemaProvider.WithSchema(schemaSubset);

            var schemaValidator = new SchemaValidator(new FieldValidator(new TypeValidator(new [] { "GraphQL.Client.tests.TestTypes" })));

            return(new GraphQLClient(
                       Substitute.For <IGraphQLRequestExecutor>(),
                       Substitute.For <IRequestBuilder>(),
                       Substitute.For <IResultBuilder>(),
                       partialSchemaProvider,
                       schemaValidator));
        }
        private static IServiceCollection AddBaseGraphQLClientServices(
            this IServiceCollection services,
            string schema,
            IEnumerable <string> modelNamespaces = null)
        {
            services.AddTransient <IFieldValidator, FieldValidator>();
            services.AddTransient <ISchemaValidator, SchemaValidator>();

            var typeValidator = new TypeValidator(modelNamespaces ?? new List <string>());

            services.AddSingleton <ITypeValidator>(typeValidator);

            services.AddTransient <IRequestBuilder, RequestBuilder>();
            services.AddTransient <IResultBuilder, ResultBuilder>();

            var schemaPrivider = new PartialSchemaProvider();

            schemaPrivider.WithSchema(schema);
            services.AddSingleton <IPartialSchemaProvider>(schemaPrivider);

            return(services);
        }