fake_mechanize 0.0.0 → 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|