Sha256: d9e485f31e7848dbff48ae67ad28b7d7e8c56de4df3218e3498960e256ab6281

Contents?: true

Size: 1.55 KB

Versions: 2

Compression:

Stored size: 1.55 KB

Contents

require 'active_support/core_ext/module/attribute_accessors'

describe "#{GraphQL::Client} Callbacks" do
  Client = Class.new(Artemis::Client) do
    def self.name
      'Github'
    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.repository(owner: "yuki24", name: "artemis", context: { user_id: 'yuki24' })

      document, operation_name, variables, context = Client.before_callback

      expect(document).to eq(Client::Repository.document)
      expect(operation_name).to eq('Client__Repository')
      expect(variables).to eq("name" => "artemis", "owner" => "yuki24")
      expect(context).to eq(user_id: 'yuki24')
    end
  end

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

      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

2 entries across 2 versions & 1 rubygems

Version Path
artemis-1.0.0 spec/callbacks_spec.rb
artemis-0.9.0 spec/callbacks_spec.rb