Sha256: 80140473520226d85fbdf8f522a8c8fcd05f28c14a71c5d1bca04b3961984ca8

Contents?: true

Size: 1.75 KB

Versions: 34

Compression:

Stored size: 1.75 KB

Contents

require 'spec_helper'

describe Github::Utils::Url do

  def eq_query_to(query)
    parts = query.split('&')
    lambda { |other| (parts & other.split('&')) == parts }
  end

  it 'escapes correctly' do
    described_class.escape('<html>').should eql '%3Chtml%3E'
    described_class.escape('a space').should eql 'a+space'
    described_class.escape('\\/?}!@#$%^&*()').should eql '%5C%2F%3F%7D%21%40%23%24%25%5E%26%2A%28%29'
  end

  it 'unescapes correctly' do
    described_class.unescape('%3Chtml%3E').should eql '<html>'
    described_class.unescape('a+space').should eql 'a space'
    described_class.unescape('%5C%2F%3F%7D%21%40%23%24%25%5E%26%2A%28%29').should eql '\\/?}!@#$%^&*()'
  end

  context 'parses query strings correctly' do
    it { described_class.parse_query("a=b").should eq 'a' => 'b' }
    it { described_class.parse_query("a=b&a=c").should eq 'a' => ['b','c'] }
    it { described_class.parse_query("a=b&c=d").should eq 'a' => 'b', 'c' => 'd' }
    it { described_class.parse_query("a+b=%28c%29").should eq 'a b' => '(c)' }
  end

  context 'builds query strings correctly' do
    it { described_class.build_query("a" => "b").should eq "a=b" }
    it { described_class.build_query("a" => ["b", "c"]).should eq "a=b&a=c" }
    it { described_class.build_query("a" => ["b", "c"]).should eq "a=b&a=c" }
    it { described_class.build_query("a" => 1, "b" => 2).should eq "a=1&b=2"}
  end

  context 'parse_query_for_param' do
    it 'returns nil if cannot find parameter' do
      described_class.parse_query_for_param("param1=a;param2=b", 'param3').
        should be_nil
    end

    it 'returns value for given parameter name' do
      described_class.parse_query_for_param("param1=a;param2=b", 'param1').
        should eq 'a'
    end
  end

end # Github::Utils::Url

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
github_api-0.10.1 spec/github/utils/url_spec.rb
github_api-0.10.0 spec/github/utils/url_spec.rb
github_api-0.9.7 spec/github/utils/url_spec.rb
github_api-0.9.6 spec/github/utils/url_spec.rb
github_api-0.9.5 spec/github/utils/url_spec.rb
github_api-0.9.4 spec/github/utils/url_spec.rb
github_api-0.9.3 spec/github/utils/url_spec.rb
github_api-0.9.2 spec/github/utils/url_spec.rb
github_api-0.9.1 spec/github/utils/url_spec.rb
github_api-0.9.0 spec/github/utils/url_spec.rb
github_api-0.8.11 spec/github/utils/url_spec.rb
github_api-0.8.10 spec/github/utils/url_spec.rb
github_api-0.8.9 spec/github/utils/url_spec.rb
github_api-0.8.8 spec/github/utils/url_spec.rb
github_api-0.8.7 spec/github/utils/url_spec.rb
github_api-0.8.6 spec/github/utils/url_spec.rb
github_api-0.8.5 spec/github/utils/url_spec.rb
github_api-0.8.4 spec/github/utils/url_spec.rb
github_api-0.8.3 spec/github/utils/url_spec.rb
github_api-0.8.2 spec/github/utils/url_spec.rb