Sha256: bca7f04a9faaa90cca2e28980d9d4d383b6b171d3a2a2d1958c4182eca015551

Contents?: true

Size: 1.4 KB

Versions: 2

Compression:

Stored size: 1.4 KB

Contents

require 'spec_helper'

describe GrapeApiary::Routes do
  include_context 'configuration'

  before do
    GrapeApiary.config do |config|
      config.host               = host
      config.name               = name
      config.description        = description
      config.resource_exclusion = [:admin]
    end

    GrapeApiary.config.request_headers = [
      { 'Accept-Charset' => 'utf-8' },
      { 'Connection'     => 'keep-alive' }
    ]

    GrapeApiary.config.response_headers = [
      { 'Content-Length' => '21685' },
      { 'Connection'     => 'keep-alive' }
    ]
  end

  subject { GrapeApiary::Routes.new(SampleApi) }

  it 'exposes configuration settings' do
    GrapeApiary::Config::SETTINGS.each do |setting|
      expect(subject.send(setting)).to eq(GrapeApiary.config.send(setting))
    end
  end

  it 'exposes the raw routes of the given api' do
    expect(subject.routes).to eq(SampleApi.routes)
  end

  context '#resources' do
    let(:unique_routes) { subject.routes.map(&:route_name).uniq }

    let(:included_routes) do
      unique_routes.reject do |name|
        GrapeApiary.config.resource_exclusion.include?(name.to_sym)
      end
    end

    it 'aggregates routes into resources' do
      expect(subject.resources.first).to be_a(GrapeApiary::Resource)
    end

    it 'excluded resources based on configuration' do
      expect(subject.resources.map(&:key)).to eq(included_routes)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
grape-apiary-0.0.2 spec/grape-apiary/routes_spec.rb
grape-apiary-0.0.1 spec/grape-apiary/routes_spec.rb