lib/relevance/tarantula/rails_integration_proxy.rb in tarantula-0.3.3 vs lib/relevance/tarantula/rails_integration_proxy.rb in tarantula-0.4.0
- old
+ new
@@ -1,68 +1,74 @@
require 'test/unit'
-class Relevance::Tarantula::RailsIntegrationProxy
- include Relevance::Tarantula
- extend Relevance::Tarantula
- extend Forwardable
- attr_accessor :integration_test
+module Relevance
+ module Tarantula
- def self.rails_integration_test(integration_test, options = {})
- t = Crawler.new
- t.max_url_length = options[:max_url_length] if options[:max_url_length]
- t.proxy = RailsIntegrationProxy.new(integration_test)
- t.handlers << HtmlDocumentHandler.new(t)
- t.handlers << InvalidHtmlHandler.new
- t.log_grabber = Relevance::Tarantula::LogGrabber.new(File.join(rails_root, "log/test.log"))
- t.skip_uri_patterns << /logout$/
- t.transform_url_patterns += [
- [/\?\d+$/, ''], # strip trailing numbers for assets
- [/^http:\/\/#{integration_test.host}/, ''] # strip full path down to relative
- ]
- t.test_name = t.proxy.integration_test.method_name
- t.reporters << Relevance::Tarantula::HtmlReporter.new(t.report_dir)
- t
- end
+ class RailsIntegrationProxy
+ include Relevance::Tarantula
+ extend Relevance::Tarantula
+ extend Forwardable
+ attr_accessor :integration_test
- def initialize(integration_test)
- @integration_test = integration_test
- @integration_test.meta.attr_accessor :response
- end
-
- [:get, :post, :put, :delete].each do |verb|
- define_method(verb) do |url, *args|
- integration_test.send(verb, url, *args)
- response = integration_test.response
- patch_response(url, response)
- response
- end
- end
+ def self.rails_integration_test(integration_test, options = {})
+ t = Crawler.new
+ t.max_url_length = options[:max_url_length] if options[:max_url_length]
+ t.proxy = RailsIntegrationProxy.new(integration_test)
+ t.handlers << HtmlDocumentHandler.new(t)
+ t.handlers << InvalidHtmlHandler.new
+ t.log_grabber = Relevance::Tarantula::LogGrabber.new(File.join(rails_root, "log/test.log"))
+ t.skip_uri_patterns << /logout$/
+ t.transform_url_patterns += [
+ [/\?\d+$/, ''], # strip trailing numbers for assets
+ [/^http:\/\/#{integration_test.host}/, ''] # strip full path down to relative
+ ]
+ t.test_name = t.proxy.integration_test.method_name
+ t.reporters << Relevance::Tarantula::HtmlReporter.new(t.report_dir)
+ t
+ end
- def patch_response(url, response)
- if response.code == '404'
- if File.exist?(static_content_path(url))
- case ext = File.extension(url)
- when /html|te?xt|css|js|jpe?g|gif|psd|png|eps|pdf|ico/
- response.body = static_content_file(url)
- response.headers["type"] = "text/#{ext}" # readable as response.content_type
- response.meta.attr_accessor :code
- response.code = "200"
- else
- log "Skipping unknown type #{url}"
+ def initialize(integration_test)
+ @integration_test = integration_test
+ @integration_test.meta.attr_accessor :response
+ end
+
+ [:get, :post, :put, :delete].each do |verb|
+ define_method(verb) do |url, *args|
+ integration_test.send(verb, url, *args)
+ response = integration_test.response
+ patch_response(url, response)
+ response
end
end
+
+ def patch_response(url, response)
+ if response.code == '404'
+ if File.exist?(static_content_path(url))
+ case ext = File.extension(url)
+ when /html|te?xt|css|js|jpe?g|gif|psd|png|eps|pdf|ico/
+ response.body = static_content_file(url)
+ response.headers["type"] = "text/#{ext}" # readable as response.content_type
+ response.meta.attr_accessor :code
+ response.code = "200"
+ else
+ log "Skipping unknown type #{url}"
+ end
+ end
+ end
+ # don't count on metaclass taking block, e.g.
+ # http://relevancellc.com/2008/2/12/how-should-metaclass-work
+ response.metaclass.class_eval do
+ include Relevance::CoreExtensions::Response
+ end
+ end
+
+ def static_content_file(url)
+ File.read(static_content_path(url))
+ end
+
+ def static_content_path(url)
+ File.expand_path(File.join(rails_root, "public", url))
+ end
end
- # don't count on metaclass taking block, e.g.
- # http://relevancellc.com/2008/2/12/how-should-metaclass-work
- response.metaclass.class_eval do
- include Relevance::CoreExtensions::Response
- end
- end
-
- def static_content_file(url)
- File.read(static_content_path(url))
- end
-
- def static_content_path(url)
- File.expand_path(File.join(rails_root, "public", url))
+
end
end