diff --git a/README.rdoc b/README.rdoc index 981e540..93fe690 100644 --- a/README.rdoc +++ b/README.rdoc @@ -131,6 +131,10 @@ registry and remove all registered URIs: FakeWeb.clean_registry +If you want clean out an specific uri, you can remove it from registry: + + FakeWeb.clean_uri(:get, "http://example.com") + === Blocking all real requests When you're using FakeWeb to replace _all_ of your requests, it's useful to diff --git a/lib/fake_web.rb b/lib/fake_web.rb index 1539441..9085240 100644 --- a/lib/fake_web.rb +++ b/lib/fake_web.rb @@ -21,6 +21,11 @@ def self.clean_registry Registry.instance.clean_registry end + # Remove added uri from registry. + def self.clean_uri(method, uri) + Registry.instance.clean_uri(method, uri) + end + # Enables or disables real HTTP connections for requests that don't match # registered URIs. # diff --git a/lib/fake_web/registry.rb b/lib/fake_web/registry.rb index 9a4a34e..d4c509e 100644 --- a/lib/fake_web/registry.rb +++ b/lib/fake_web/registry.rb @@ -12,6 +12,12 @@ def clean_registry self.uri_map = Hash.new { |hash, key| hash[key] = {} } end + def clean_uri(method, uri) + n_uri = normalize_uri(uri) + self.uri_map[n_uri].delete(method) + self.uri_map.delete(n_uri) unless self.uri_map[n_uri].size > 0 + end + def register_uri(method, uri, options) uri_map[normalize_uri(uri)][method] = [*[options]].flatten.collect do |option| FakeWeb::Responder.new(method, uri, option, option[:times]) diff --git a/test/test_fake_web.rb b/test/test_fake_web.rb index e68f6d4..210bb50 100644 --- a/test/test_fake_web.rb +++ b/test/test_fake_web.rb @@ -111,6 +111,16 @@ def test_clean_registry_affects_registered_uri assert !FakeWeb.registered_uri?(:get, "http://example.com") end + def test_clean_uri_affects_registered_uri + FakeWeb.register_uri(:get, "http://example.com", :body => "registered") + FakeWeb.register_uri(:post, "http://example.com", :body => "registered") + assert FakeWeb.registered_uri?(:get, "http://example.com") + assert FakeWeb.registered_uri?(:post, "http://example.com") + FakeWeb.clean_uri(:get, "http://example.com") + assert !FakeWeb.registered_uri?(:get, "http://example.com") + assert FakeWeb.registered_uri?(:post, "http://example.com") + end + def test_clean_registry_affects_net_http_requests FakeWeb.register_uri(:get, "http://example.com", :body => "registered") response = Net::HTTP.start("example.com") { |query| query.get("/") }