Class: Relevance::Tarantula::RailsIntegrationProxy
Constant Summary
VERSION
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
log, rails_root, tarantula_home, verbose
Constructor Details
Returns a new instance of RailsIntegrationProxy.
29
30
31
32
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 29
def initialize(integration_test)
@integration_test = integration_test
@integration_test.meta.attr_accessor :response
end
|
Instance Attribute Details
#integration_test ⇒ Object
Returns the value of attribute integration_test.
10
11
12
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 10
def integration_test
@integration_test
end
|
Class Method Details
.rails_integration_test(integration_test, options = {}) ⇒ Object
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 12
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+$/, ''],
[/^http:\/\/#{integration_test.host}/, '']
]
t.test_name = t.proxy.integration_test.method_name
t.reporters << Relevance::Tarantula::HtmlReporter.new(t.report_dir)
t
end
|
Instance Method Details
#alter_response(response, code, body) ⇒ Object
52
53
54
55
56
57
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 52
def alter_response(response, code, body)
response.meta.attr_accessor :code
response.code = code
response.body = body
response
end
|
#patch_response(url, response) ⇒ Object
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 59
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.["type"] = "text/#{ext}"
alter_response(response, '200', static_content_file(url))
else
log "Skipping unknown type #{url}"
end
end
end
response.metaclass.class_eval do
include Relevance::CoreExtensions::Response
end
end
|
#static_content_file(url) ⇒ Object
79
80
81
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 79
def static_content_file(url)
File.read(static_content_path(url))
end
|
#static_content_path(url) ⇒ Object
83
84
85
|
# File 'lib/relevance/tarantula/rails_integration_proxy.rb', line 83
def static_content_path(url)
File.expand_path(File.join(rails_root, "public", url))
end
|