Sha256: f44382bef3849a46ab34b8b27823a852824f207dedce73a2d890dd4c36251768

Contents?: true

Size: 1.86 KB

Versions: 16

Compression:

Stored size: 1.86 KB

Contents

require File.expand_path(File.dirname(__FILE__) + "/../spec_helper")

describe Braintree::GraphQLClient do
  before :each do
      @config = Braintree::Configuration.instantiate
  end

  describe "initialize" do
    it "assigns overriding graphql headers" do
      expect(@config.graphql_client.instance_variable_get("@graphql_headers")).to be_kind_of(Hash)
    end
  end

  describe "query" do
    it "makes valid GraphQL queries when given a definition" do
      definition = <<-GRAPHQL
      query {
        ping
      }
      GRAPHQL

      response = Braintree::GraphQLClient.new(@config).query(definition)

      expect(response[:data]).to eq({:ping=>"pong"})
    end

    it "makes valid GraphQL requests when given a definitiona and variable" do
      definition = <<-GRAPHQL
mutation CreateClientToken($input: CreateClientTokenInput!) {
  createClientToken(input: $input) {
    clientToken
  }
}
      GRAPHQL

      variables = {
        input: {
          clientToken: {
            merchantAccountId: "ABC123"
          }
        }
      }

      response = Braintree::GraphQLClient.new(@config).query(definition, variables)

      expect(response[:data][:createClientToken][:clientToken]).to be_a(String)
    end

    it "returns results parsable into validation errors" do
      definition = <<-GRAPHQL
query TransactionLevelFeeReport($date: Date!, $merchantAccountId: ID) {
  report {
    transactionLevelFees(date: $date, merchantAccountId: $merchantAccountId) {
      url
    }
  }
}
      GRAPHQL

      variables = {
        date: "2018-01-01",
        merchantAccountId: "some_merchant"
      }

      response = Braintree::GraphQLClient.new(@config).query(definition, variables)
      errors = Braintree::ValidationErrorCollection.new(response)

      expect(errors.size).to eq(1)
      expect(errors.first.message).to eq("Invalid merchant account id: some_merchant")
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
braintree-4.23.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.22.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.21.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.20.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.19.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.18.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.17.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.16.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.15.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.14.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.13.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.12.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.11.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.10.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.9.0 spec/integration/braintree/graphql_client_spec.rb
braintree-4.8.0 spec/integration/braintree/graphql_client_spec.rb