diff --git a/.gitignore b/.gitignore index 2def942..54bdb34 100644 --- a/.gitignore +++ b/.gitignore @@ -7,3 +7,4 @@ /.idea *.rbc Gemfile.lock +.rvmrc diff --git a/lib/fake_web.rb b/lib/fake_web.rb index 77fbdae..443b276 100644 --- a/lib/fake_web.rb +++ b/lib/fake_web.rb @@ -194,11 +194,20 @@ def self.registered_uri?(*args) # Returns the request object from the last request made via Net::HTTP. def self.last_request - @last_request + requests.last end def self.last_request=(request) #:nodoc: - @last_request = request + @requests ||= [] + @requests << request + end + + def self.requests + @requests ||= [] + end + + def self.clear_requests + @requests = [] end private diff --git a/test/test_helper.rb b/test/test_helper.rb index ca91827..1a964ba 100644 --- a/test/test_helper.rb +++ b/test/test_helper.rb @@ -15,6 +15,7 @@ class Test::Unit::TestCase alias setup_without_fakeweb setup def setup FakeWeb.clean_registry + FakeWeb.clear_requests @original_allow_net_connect = FakeWeb.allow_net_connect? FakeWeb.allow_net_connect = false end diff --git a/test/test_last_request.rb b/test/test_last_request.rb index 7868c83..06d9df5 100644 --- a/test/test_last_request.rb +++ b/test/test_last_request.rb @@ -26,4 +26,40 @@ def test_last_request_has_correct_method_path_and_body_for_post assert_equal 10, FakeWeb.last_request.content_length end + def test_requests_returns_array_of_latest_requests + FakeWeb.register_uri(:get, "http://example.com", :status => [200, "OK"]) + FakeWeb.register_uri(:post, "http://example.com/posts", :status => [201, "Created"]) + Net::HTTP.start("example.com") { |http| http.get("/") } + Net::HTTP.start("example.com") { |http| http.post("/posts", "title=Test") } + requests = FakeWeb.requests + assert_equal "GET", requests[0].method + assert_equal "/", requests[0].path + assert_nil requests[0].body + assert_nil requests[0].content_length + assert_equal "POST", requests[1].method + assert_equal "/posts", requests[1].path + assert_equal "title=Test", requests[1].body + assert_equal 10, requests[1].content_length + end + + def test_last_request_returns_latest_request + FakeWeb.register_uri(:get, "http://example.com", :status => [200, "OK"]) + FakeWeb.register_uri(:post, "http://example.com/posts", :status => [201, "Created"]) + Net::HTTP.start("example.com") { |http| http.get("/") } + Net::HTTP.start("example.com") { |http| http.post("/posts", "title=Test") } + assert_equal FakeWeb.last_request, FakeWeb.requests.last + end + + def test_clear_requests_clears_requests + FakeWeb.register_uri(:get, "http://example.com", :status => [200, "OK"]) + FakeWeb.register_uri(:post, "http://example.com/posts", :status => [201, "Created"]) + Net::HTTP.start("example.com") { |http| http.get("/") } + Net::HTTP.start("example.com") { |http| http.post("/posts", "title=Test") } + assert_equal FakeWeb.requests.size, 2 + assert_not_nil FakeWeb.last_request + FakeWeb.clear_requests + assert_equal FakeWeb.requests.size, 0 + assert_nil FakeWeb.last_request + end + end