fake_mechanize 0.0.0 → 0.0.1
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/VERSION +1 -1
- data/lib/fake_mechanize.rb +4 -0
- data/lib/fake_mechanize/agent.rb +20 -18
- data/lib/fake_mechanize/request.rb +5 -0
- data/lib/fake_mechanize/responder.rb +2 -2
- metadata +4 -6
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.1
|
data/lib/fake_mechanize.rb
CHANGED
data/lib/fake_mechanize/agent.rb
CHANGED
@@ -1,4 +1,10 @@
|
|
1
|
+
# = FakeMechanize module
|
2
|
+
# FakeMechanize provides methods and classes to write tests for applications which relies on Mechanize.
|
3
|
+
# == Examples
|
4
|
+
#
|
1
5
|
module FakeMechanize
|
6
|
+
# Agent acts like the original Mechanize::Agent but totally offline.
|
7
|
+
# It provides a respond_to method to predefine queries and their answers.
|
2
8
|
class Agent
|
3
9
|
attr_accessor :cookie_jar
|
4
10
|
|
@@ -15,14 +21,24 @@ module FakeMechanize
|
|
15
21
|
@errors << ErrorRequest.new(:status => 404, :body => "not found")
|
16
22
|
end
|
17
23
|
|
18
|
-
def
|
19
|
-
|
24
|
+
def assert_queried(method, uri, params = {})
|
25
|
+
request = Request.new(:method => method, :uri => uri, :request_headers => params)
|
26
|
+
@history.any? {|history_query| history_query == request}
|
20
27
|
end
|
21
28
|
|
22
|
-
|
23
|
-
|
29
|
+
HttpVerbs.each do |method|
|
30
|
+
module_eval <<-EOE, __FILE__, __LINE__
|
31
|
+
def was_#{method}?(uri, params = {})
|
32
|
+
assert_queried(:#{method}, uri, params)
|
33
|
+
end
|
34
|
+
|
35
|
+
def #{method}(uri, args = {})
|
36
|
+
return_mechanize_response Request.new(:method => :#{method}, :uri => uri, :request_headers => args)
|
37
|
+
end
|
38
|
+
EOE
|
24
39
|
end
|
25
40
|
|
41
|
+
protected
|
26
42
|
def return_mechanize_response(given_request)
|
27
43
|
@history << given_request
|
28
44
|
request = search_for_request(given_request)
|
@@ -39,20 +55,6 @@ module FakeMechanize
|
|
39
55
|
@errors.max_by {|request| request.match(given_request)}
|
40
56
|
end
|
41
57
|
|
42
|
-
def assert_queried(method, uri, params = {})
|
43
|
-
request = Request.new(:method => method, :uri => uri, :request_headers => params)
|
44
|
-
@history.any? {|history_query| history_query == request}
|
45
|
-
end
|
46
|
-
|
47
|
-
[:head, :get, :post, :put, :delete].each do |method|
|
48
|
-
module_eval <<-EOE, __FILE__, __LINE__
|
49
|
-
def was_#{method}?(uri, params = {})
|
50
|
-
assert_queried(:#{method}, uri, params)
|
51
|
-
end
|
52
|
-
EOE
|
53
|
-
end
|
54
|
-
|
55
|
-
protected
|
56
58
|
def reset_responses!
|
57
59
|
@responses.clear
|
58
60
|
end
|
@@ -1,4 +1,6 @@
|
|
1
1
|
module FakeMechanize
|
2
|
+
# Request represents a request made to the server with its specific headers and its answer body, headers
|
3
|
+
# and status (http code)
|
2
4
|
class Request
|
3
5
|
attr_reader :method, :uri, :request_headers, :body, :status, :response_headers
|
4
6
|
|
@@ -14,6 +16,9 @@ module FakeMechanize
|
|
14
16
|
@response_headers = args[:response_headers] || {}
|
15
17
|
end
|
16
18
|
|
19
|
+
# evaluate if <tt>alt</tt> has the same query parameters as the current object.
|
20
|
+
# Returns true if equal, false otherwise.
|
21
|
+
# Evaluation is based on method, uri and request_headers.
|
17
22
|
def ==(alt)
|
18
23
|
method == alt.method and uri == alt.uri and request_headers == alt.request_headers
|
19
24
|
end
|
@@ -8,13 +8,13 @@ module FakeMechanize
|
|
8
8
|
if args[:method]
|
9
9
|
@errors << ErrorRequest.new(args)
|
10
10
|
else
|
11
|
-
|
11
|
+
HttpVerbs.each do |method|
|
12
12
|
@errors << ErrorRequest.new({:method => method}.merge(args))
|
13
13
|
end
|
14
14
|
end
|
15
15
|
end
|
16
16
|
|
17
|
-
|
17
|
+
HttpVerbs.each do |method|
|
18
18
|
module_eval <<-EOE, __FILE__, __LINE__
|
19
19
|
def #{method}(args = {})
|
20
20
|
@responses << Request.new({:method => :#{method}}.merge(args))
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fake_mechanize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Fabien Jakimowicz
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-07-
|
12
|
+
date: 2009-07-23 00:00:00 +02:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
@@ -47,8 +47,6 @@ files:
|
|
47
47
|
- test/test_helper.rb
|
48
48
|
has_rdoc: true
|
49
49
|
homepage: http://github.com/jakimowicz/fake_mechanize
|
50
|
-
licenses: []
|
51
|
-
|
52
50
|
post_install_message:
|
53
51
|
rdoc_options:
|
54
52
|
- --charset=UTF-8
|
@@ -69,9 +67,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
69
67
|
requirements: []
|
70
68
|
|
71
69
|
rubyforge_project: fake-mechanize
|
72
|
-
rubygems_version: 1.3.
|
70
|
+
rubygems_version: 1.3.1
|
73
71
|
signing_key:
|
74
|
-
specification_version:
|
72
|
+
specification_version: 2
|
75
73
|
summary: toolset for offline unit tests on mechanize, like httpmock
|
76
74
|
test_files:
|
77
75
|
- test/fake_mechanize_test.rb
|