forked from piotrmurach/github
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathurl_spec.rb
More file actions
56 lines (45 loc) · 2.08 KB
/
Copy pathurl_spec.rb
File metadata and controls
56 lines (45 loc) · 2.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# encoding: utf-8
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
it 'normalizes correctly' do
described_class.normalize('github.api/$repos★/!usersÇ').should eql 'github.api/$repos%E2%98%85/!users%C3%87'
described_class.normalize('123github!@').should eql '123github!@'
described_class.normalize('github.api/repos/users').should eql 'github.api/repos/users'
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