Sha256: 29e062318ad217849825643536ec4f674a787e925b62d38d566bdb3e9e112b6c

Contents?: true

Size: 1.74 KB

Versions: 2

Compression:

Stored size: 1.74 KB

Contents

require 'spec_helper'

describe Praxis::ApiGeneralInfo do

  subject(:info){ Praxis::ApiGeneralInfo.new }

  before do
    allow(Praxis::Application.instance).to receive(:versioning_scheme=).with([:header, :params])
  end


  let(:info_block) do
    Proc.new do
      name "Name"
      title "Title"
      description "Description"
      endpoint 'api.example.com'
      base_path "/base"
      base_params do
        attribute :name, String
      end
    end
  end

  context 'setting' do
    it 'accepts the appropriate DSLs' do
      expect{
        info.instance_exec &info_block
      }.to_not raise_error
    end
  end

  context 'getting values' do
    before do
      info.instance_exec &info_block
    end

    its(:name) { should eq 'Name' }

  end
  context '.describe' do
    before do
      info.instance_exec &info_block
    end

    subject(:output){ info.describe }
    its([:schema_version]) {should eq '1.0' }
    its([:name]) {should eq 'Name' }
    its([:title]) {should eq 'Title' }
    its([:description]) {should eq 'Description' }
    its([:base_path]) {should eq '/base' }
    its([:base_params]) { should have_key :name }
    its([:base_params, :name, :type, :name]) { should eq 'String' }
    its([:version_with]) { should eq([:header, :params]) }
    its([:endpoint]) { should eq 'api.example.com' }
  end

  context 'base_path with versioning' do
    let(:global_info){ Praxis::ApiGeneralInfo.new }
    subject(:info){ Praxis::ApiGeneralInfo.new(global_info, version: '1.0') }

    before do
      global_info

      expect(Praxis::Application.instance).to receive(:versioning_scheme=).with(:path)

      global_info.version_with :path
      global_info.base_path '/api/v:api_version'
    end
    

    its(:base_path) { should eq '/api/v1.0'}
  end

end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
praxis-0.17.1 spec/praxis/api_general_info_spec.rb
praxis-0.17.0 spec/praxis/api_general_info_spec.rb