Sha256: 3d70266eb78595823d3366a7fc32b45bd91325837d6525865b8f8883d9a4caae

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents

require 'spec_helper'

describe Github::API do
  let(:api) { Github::API.new }
  let(:repos) { Github::Repos }

  it { described_class.included_modules.should include Github::Authorization }
  it { described_class.included_modules.should include Github::MimeType }
  it { described_class.included_modules.should include Github::Connection }
  it { described_class.included_modules.should include Github::Request }

  context 'actions' do
    it { described_class.new.should respond_to :api_methods_in }

    it 'dynamically adds actions inspection to classes inheriting from api' do
      repos.should respond_to :actions
      repos.new.should respond_to :actions
    end

    it 'ensures output contains api methods' do
      methods = [ 'method_a', 'method_b']
      repos.stub(:instance_methods).and_return methods
      output = capture(:stdout) { 
        api.api_methods_in(repos)
      }
      output.should =~ /.*method_a.*/
      output.should =~ /.*method_b.*/
    end
  end

  context '_process_basic_auth' do
    let(:github) { Github.new :basic_auth => 'login:password' }

    after { reset_authentication_for github }

    it 'should parse authentication params' do
      github.login.should eq 'login'
      github.password.should eq 'password'
    end
  end

  context 'normalize!' do
    before do
      @params = { 'a' => { :b => { 'c' => 1 }, 'd' => [ 'a', { :e => 2 }] } }
    end

    it "should stringify all the keys inside nested hash" do
      actual = api.normalize! @params
      expected = { 'a' => { 'b'=> { 'c' => 1 }, 'd' => [ 'a', { 'e'=> 2 }] } }
      actual.should be_eql expected
    end
  end

  context 'filter!' do
    it "should remove non valid param keys" do
      valid = ['a', 'b', 'e']
      hash = {'a' => 1, 'b' => 3, 'c' => 2, 'd'=> 4, 'e' => 5 }
      actual = api.filter! valid, hash
      expected = {'a' => 1, 'b' => 3, 'e' => 5 }
      actual.should be_eql expected
    end
  end

end # Github::API

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
github_api-0.9.0 spec/github/api_spec.rb