Sha256: a64de4097ddc8085471dba3c05ed0dae9bdeec5cf9b7934f63f4f48311073141

Contents?: true

Size: 1.13 KB

Versions: 3

Compression:

Stored size: 1.13 KB

Contents

require 'spec_helper'

class DummyResourceActions < ResourceSet::Resource
  resources do
    action :dummy, 'GET /dummy' do
      handler(200) { |resp| resp.body.upcase }
    end

    action :headered, 'GET /headered' do
      before_request { |req| req.headers['Added-Header'] = self.value }
    end
  end

  def value
    scope.value
  end
end

RSpec.describe 'Resource Actions' do
  let(:connection) { Faraday.new { |b| b.adapter :test, stubs } }
  let(:scoped) { double('scope', value: 'bunk') }
  let(:stubs) do
    Faraday::Adapter::Test::Stubs.new do |stub|
      stub.get('/dummy') { |env| [200, {}, 'dummies'] }
      stub.get('/headered') { |env| [200, {}, env[:request_headers]['Added-Header']] }
    end
  end

  it 'Retrieving /dummy returns the body as uppercased' do
    resource = DummyResourceActions.new(connection: connection, scope: scoped)
    response = resource.dummy
    expect(response).to eq('DUMMIES')
  end

  it 'adds the header before the request happens' do
    resource = DummyResourceActions.new(connection: connection, scope: scoped)
    response = resource.headered

    expect(response).to eq(scoped.value)
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
resource_set-1.0.2 spec/integration/resource_actions_spec.rb
resource_set-1.0.1 spec/integration/resource_actions_spec.rb
resource_set-1.0.0 spec/integration/resource_actions_spec.rb