Instiki 0.16.3: Rails 2.3.0
Instiki now runs on the Rails 2.3.0 Candidate Release. Among other improvements, this means that it now automagically selects between WEBrick and Mongrel. Just run ./instiki --daemon
This commit is contained in:
parent
43aadecc99
commit
4e14ccc74d
893 changed files with 71965 additions and 28511 deletions
|
@ -11,6 +11,7 @@ module ActionController
|
|||
# assert_valid(model)
|
||||
#
|
||||
def assert_valid(record)
|
||||
::ActiveSupport::Deprecation.warn("assert_valid is deprecated. Use assert record.valid? instead", caller)
|
||||
clean_backtrace do
|
||||
assert record.valid?, record.errors.full_messages.join("\n")
|
||||
end
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
require 'rexml/document'
|
||||
require 'html/document'
|
||||
|
||||
module ActionController
|
||||
module Assertions
|
||||
# A small suite of assertions that test responses from Rails applications.
|
||||
|
@ -19,7 +16,7 @@ module ActionController
|
|||
# ==== Examples
|
||||
#
|
||||
# # assert that the response was a redirection
|
||||
# assert_response :redirect
|
||||
# assert_response :redirect
|
||||
#
|
||||
# # assert that the response code was status code 401 (unauthorized)
|
||||
# assert_response 401
|
||||
|
@ -44,7 +41,7 @@ module ActionController
|
|||
end
|
||||
end
|
||||
|
||||
# Assert that the redirection options passed in match those of the redirect called in the latest action.
|
||||
# Assert that the redirection options passed in match those of the redirect called in the latest action.
|
||||
# This match can be partial, such that assert_redirected_to(:controller => "weblog") will also
|
||||
# match the redirection of redirect_to(:controller => "weblog", :action => "show") and so on.
|
||||
#
|
||||
|
@ -63,12 +60,12 @@ module ActionController
|
|||
clean_backtrace do
|
||||
assert_response(:redirect, message)
|
||||
return true if options == @response.redirected_to
|
||||
|
||||
|
||||
# Support partial arguments for hash redirections
|
||||
if options.is_a?(Hash) && @response.redirected_to.is_a?(Hash)
|
||||
return true if options.all? {|(key, value)| @response.redirected_to[key] == value}
|
||||
end
|
||||
|
||||
|
||||
redirected_to_after_normalisation = normalize_argument_to_redirection(@response.redirected_to)
|
||||
options_after_normalisation = normalize_argument_to_redirection(options)
|
||||
|
||||
|
@ -78,29 +75,59 @@ module ActionController
|
|||
end
|
||||
end
|
||||
|
||||
# Asserts that the request was rendered with the appropriate template file.
|
||||
# Asserts that the request was rendered with the appropriate template file or partials
|
||||
#
|
||||
# ==== Examples
|
||||
#
|
||||
# # assert that the "new" view template was rendered
|
||||
# assert_template "new"
|
||||
#
|
||||
def assert_template(expected = nil, message=nil)
|
||||
# # assert that the "_customer" partial was rendered twice
|
||||
# assert_template :partial => '_customer', :count => 2
|
||||
#
|
||||
# # assert that no partials were rendered
|
||||
# assert_template :partial => false
|
||||
#
|
||||
def assert_template(options = {}, message = nil)
|
||||
clean_backtrace do
|
||||
rendered = @response.rendered_template.to_s
|
||||
msg = build_message(message, "expecting <?> but rendering with <?>", expected, rendered)
|
||||
assert_block(msg) do
|
||||
if expected.nil?
|
||||
@response.rendered_template.blank?
|
||||
case options
|
||||
when NilClass, String
|
||||
rendered = @response.rendered[:template].to_s
|
||||
msg = build_message(message,
|
||||
"expecting <?> but rendering with <?>",
|
||||
options, rendered)
|
||||
assert_block(msg) do
|
||||
if options.nil?
|
||||
@response.rendered[:template].blank?
|
||||
else
|
||||
rendered.to_s.match(options)
|
||||
end
|
||||
end
|
||||
when Hash
|
||||
if expected_partial = options[:partial]
|
||||
partials = @response.rendered[:partials]
|
||||
if expected_count = options[:count]
|
||||
found = partials.detect { |p, _| p.to_s.match(expected_partial) }
|
||||
actual_count = found.nil? ? 0 : found.second
|
||||
msg = build_message(message,
|
||||
"expecting ? to be rendered ? time(s) but rendered ? time(s)",
|
||||
expected_partial, expected_count, actual_count)
|
||||
assert(actual_count == expected_count.to_i, msg)
|
||||
else
|
||||
msg = build_message(message,
|
||||
"expecting partial <?> but action rendered <?>",
|
||||
options[:partial], partials.keys)
|
||||
assert(partials.keys.any? { |p| p.to_s.match(expected_partial) }, msg)
|
||||
end
|
||||
else
|
||||
rendered.to_s.match(expected)
|
||||
assert @response.rendered[:partials].empty?,
|
||||
"Expected no partials to be rendered"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Proxy to to_param if the object will respond to it.
|
||||
def parameterize(value)
|
||||
value.respond_to?(:to_param) ? value.to_param : value
|
||||
|
|
|
@ -134,7 +134,7 @@ module ActionController
|
|||
path = "/#{path}" unless path.first == '/'
|
||||
|
||||
# Assume given controller
|
||||
request = ActionController::TestRequest.new({}, {}, nil)
|
||||
request = ActionController::TestRequest.new
|
||||
request.env["REQUEST_METHOD"] = request_method.to_s.upcase if request_method
|
||||
request.path = path
|
||||
|
||||
|
|
|
@ -3,9 +3,6 @@
|
|||
# Under MIT and/or CC By license.
|
||||
#++
|
||||
|
||||
require 'rexml/document'
|
||||
require 'html/document'
|
||||
|
||||
module ActionController
|
||||
module Assertions
|
||||
unless const_defined?(:NO_STRIP)
|
||||
|
@ -112,20 +109,27 @@ module ActionController
|
|||
# starting from (and including) that element and all its children in
|
||||
# depth-first order.
|
||||
#
|
||||
# If no element if specified, calling +assert_select+ will select from the
|
||||
# response HTML. Calling #assert_select inside an +assert_select+ block will
|
||||
# run the assertion for each element selected by the enclosing assertion.
|
||||
# If no element if specified, calling +assert_select+ selects from the
|
||||
# response HTML unless +assert_select+ is called from within an +assert_select+ block.
|
||||
#
|
||||
# When called with a block +assert_select+ passes an array of selected elements
|
||||
# to the block. Calling +assert_select+ from the block, with no element specified,
|
||||
# runs the assertion on the complete set of elements selected by the enclosing assertion.
|
||||
# Alternatively the array may be iterated through so that +assert_select+ can be called
|
||||
# separately for each element.
|
||||
#
|
||||
#
|
||||
# ==== Example
|
||||
# assert_select "ol>li" do |elements|
|
||||
# If the response contains two ordered lists, each with four list elements then:
|
||||
# assert_select "ol" do |elements|
|
||||
# elements.each do |element|
|
||||
# assert_select element, "li"
|
||||
# assert_select element, "li", 4
|
||||
# end
|
||||
# end
|
||||
#
|
||||
# Or for short:
|
||||
# assert_select "ol>li" do
|
||||
# assert_select "li"
|
||||
# will pass, as will:
|
||||
# assert_select "ol" do
|
||||
# assert_select "li", 8
|
||||
# end
|
||||
#
|
||||
# The selector may be a CSS selector expression (String), an expression
|
||||
|
@ -405,6 +409,7 @@ module ActionController
|
|||
if rjs_type
|
||||
if rjs_type == :insert
|
||||
position = args.shift
|
||||
id = args.shift
|
||||
insertion = "insert_#{position}".to_sym
|
||||
raise ArgumentError, "Unknown RJS insertion type #{position}" unless RJS_STATEMENTS[insertion]
|
||||
statement = "(#{RJS_STATEMENTS[insertion]})"
|
||||
|
@ -590,7 +595,7 @@ module ActionController
|
|||
def response_from_page_or_rjs()
|
||||
content_type = @response.content_type
|
||||
|
||||
if content_type && content_type =~ /text\/javascript/
|
||||
if content_type && Mime::JS =~ content_type
|
||||
body = @response.body.dup
|
||||
root = HTML::Node.new(nil)
|
||||
|
||||
|
|
|
@ -1,6 +1,3 @@
|
|||
require 'rexml/document'
|
||||
require 'html/document'
|
||||
|
||||
module ActionController
|
||||
module Assertions
|
||||
# Pair of assertions to testing elements in the HTML output of the response.
|
||||
|
@ -127,4 +124,4 @@ module ActionController
|
|||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue