fakeweb-matcher 1.1.0 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.textile +1 -0
- data/VERSION.yml +1 -1
- data/lib/fake_web_matcher/request_matcher.rb +20 -2
- data/spec/lib/fake_web_matcher/matchers_spec.rb +7 -0
- metadata +44 -15
data/README.textile
CHANGED
@@ -29,6 +29,7 @@ Unsurprisingly, this library is tested using RSpec, and relies upon FakeWeb. It
|
|
29
29
|
h2. Contributors
|
30
30
|
|
31
31
|
* "Thilo Utke":http://github.com/thilo (Regex URL matching)
|
32
|
+
* "Wes Morgan":http://nerdyadventuresofwes.blogspot.com/ (Normalise query params)
|
32
33
|
|
33
34
|
h2. Copyright
|
34
35
|
|
data/VERSION.yml
CHANGED
@@ -2,6 +2,24 @@ module FakeWebMatcher
|
|
2
2
|
# Matcher class, following RSpec's expectations. Used to confirm whether a
|
3
3
|
# request has been made on a given method and URI.
|
4
4
|
#
|
5
|
+
|
6
|
+
# Monkey patch to add a normalize! method to the URI::HTTP class.
|
7
|
+
# It doesn't currently sort the query params which means two URLs
|
8
|
+
# that are equivalent except for a different order of query params
|
9
|
+
# will be !=. This isn't how FakeWeb works, so we patch it here.
|
10
|
+
class ::URI::HTTP
|
11
|
+
|
12
|
+
# Normalize an HTTP URI so that query param order differences don't
|
13
|
+
# affect equality.
|
14
|
+
def normalize!
|
15
|
+
if query
|
16
|
+
query_array = self.query.split('&')
|
17
|
+
set_query(query_array.sort.join('&'))
|
18
|
+
end
|
19
|
+
super
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
5
23
|
class RequestMatcher
|
6
24
|
attr_reader :url, :method
|
7
25
|
|
@@ -81,10 +99,10 @@ module FakeWebMatcher
|
|
81
99
|
# @return [Boolean] true if exprexted URI and called URI match.
|
82
100
|
#
|
83
101
|
def match_url(url)
|
84
|
-
|
102
|
+
return @url.match(url.to_s) if regex?(@url)
|
103
|
+
@url == url
|
85
104
|
end
|
86
105
|
|
87
|
-
|
88
106
|
# Expected method formatted to be an uppercase string. Example: :get becomes
|
89
107
|
# "GET".
|
90
108
|
#
|
@@ -32,4 +32,11 @@ describe FakeWebMatcher::Matchers do
|
|
32
32
|
|
33
33
|
FakeWeb.should_not have_requested(:get, 'http://example.com')
|
34
34
|
end
|
35
|
+
|
36
|
+
it "should not care about the order of the query parameters" do
|
37
|
+
FakeWeb.register_uri(:get, URI.parse('http://example.com/page?foo=bar&baz=qux'), :body => 'foo')
|
38
|
+
open('http://example.com/page?baz=qux&foo=bar')
|
39
|
+
|
40
|
+
FakeWeb.should have_requested(:get, 'http://example.com/page?foo=bar&baz=qux')
|
41
|
+
end
|
35
42
|
end
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fakeweb-matcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 31
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 2
|
9
|
+
- 0
|
10
|
+
version: 1.2.0
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- Pat Allan
|
@@ -9,29 +15,41 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date:
|
18
|
+
date: 2010-10-25 00:00:00 +11:00
|
13
19
|
default_executable:
|
14
20
|
dependencies:
|
15
21
|
- !ruby/object:Gem::Dependency
|
16
22
|
name: fakeweb
|
17
|
-
|
18
|
-
|
19
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
20
26
|
requirements:
|
21
27
|
- - ">="
|
22
28
|
- !ruby/object:Gem::Version
|
29
|
+
hash: 21
|
30
|
+
segments:
|
31
|
+
- 1
|
32
|
+
- 2
|
33
|
+
- 5
|
23
34
|
version: 1.2.5
|
24
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
25
37
|
- !ruby/object:Gem::Dependency
|
26
38
|
name: rspec
|
27
|
-
|
28
|
-
|
29
|
-
|
39
|
+
prerelease: false
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
30
42
|
requirements:
|
31
43
|
- - ">="
|
32
44
|
- !ruby/object:Gem::Version
|
45
|
+
hash: 31
|
46
|
+
segments:
|
47
|
+
- 1
|
48
|
+
- 2
|
49
|
+
- 0
|
33
50
|
version: 1.2.0
|
34
|
-
|
51
|
+
type: :runtime
|
52
|
+
version_requirements: *id002
|
35
53
|
description:
|
36
54
|
email: pat@freelancing-gods.com
|
37
55
|
executables: []
|
@@ -51,31 +69,42 @@ files:
|
|
51
69
|
- lib/fake_web_matcher/matchers.rb
|
52
70
|
- lib/fake_web_matcher/request_matcher.rb
|
53
71
|
- lib/fakeweb_matcher.rb
|
72
|
+
- spec/lib/fake_web_matcher/extension_spec.rb
|
73
|
+
- spec/lib/fake_web_matcher/matchers_spec.rb
|
74
|
+
- spec/lib/fake_web_matcher/request_matcher_spec.rb
|
75
|
+
- spec/lib/fake_web_matcher_spec.rb
|
76
|
+
- spec/spec_helper.rb
|
54
77
|
has_rdoc: true
|
55
78
|
homepage: http://github.com/freelancing-god/fakeweb-matcher
|
56
79
|
licenses: []
|
57
80
|
|
58
81
|
post_install_message:
|
59
|
-
rdoc_options:
|
60
|
-
|
82
|
+
rdoc_options: []
|
83
|
+
|
61
84
|
require_paths:
|
62
85
|
- lib
|
63
86
|
required_ruby_version: !ruby/object:Gem::Requirement
|
87
|
+
none: false
|
64
88
|
requirements:
|
65
89
|
- - ">="
|
66
90
|
- !ruby/object:Gem::Version
|
91
|
+
hash: 3
|
92
|
+
segments:
|
93
|
+
- 0
|
67
94
|
version: "0"
|
68
|
-
version:
|
69
95
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
+
none: false
|
70
97
|
requirements:
|
71
98
|
- - ">="
|
72
99
|
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
73
103
|
version: "0"
|
74
|
-
version:
|
75
104
|
requirements: []
|
76
105
|
|
77
106
|
rubyforge_project:
|
78
|
-
rubygems_version: 1.3.
|
107
|
+
rubygems_version: 1.3.7
|
79
108
|
signing_key:
|
80
109
|
specification_version: 3
|
81
110
|
summary: RSpec matcher for the FakeWeb library
|