Sha256: 62eb8ea62cd8b8c67b16e61143aabd906826c6da9f33a85fce271270fd683c80

Contents?: true

Size: 1.52 KB

Versions: 5

Compression:

Stored size: 1.52 KB

Contents

require 'active_support/core_ext/module/attribute_accessors'

describe "#{GraphQL::Client} Callbacks" do
  Client = Class.new(Artemis::Client) do
    def self.name
      'Metaphysics'
    end

    mattr_accessor :before_callback, :after_callback
    self.before_callback = nil
    self.after_callback = nil

    before_execute do |document, operation_name, variables, context|
      self.before_callback = document, operation_name, variables, context
    end

    after_execute do |data, errors, extensions|
      self.after_callback = data, errors, extensions
    end
  end

  Spotify = Class.new(Artemis::Client) do
    def self.name
      'Spotify'
    end

    before_execute do
      raise "this callback should not get invoked"
    end

    after_execute do
      raise "this callback should not get invoked"
    end
  end

  describe ".before_execute" do
    it "gets invoked before executing" do
      Client.artist(id: 'yayoi-kusama', context: { user_id: 'yuki24' })

      document, operation_name, variables, context = Client.before_callback

      expect(document).to eq(Client::Artist.document)
      expect(operation_name).to eq('Client__Artist')
      expect(variables).to eq('id' => 'yayoi-kusama')
      expect(context).to eq(user_id: 'yuki24')
    end
  end

  describe ".after_execute" do
    it "gets invoked after executing" do
      Client.artwork

      data, errors, extensions = Client.after_callback

      expect(data).to eq("test" => "data")
      expect(errors).to eq([])
      expect(extensions).to eq({})
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
artemis-0.8.0 spec/callbacks_spec.rb
artemis-0.7.0 spec/callbacks_spec.rb
artemis-0.6.0 spec/callbacks_spec.rb
artemis-0.5.2 spec/callbacks_spec.rb
artemis-0.5.1 spec/callbacks_spec.rb