require 'test/unit' require 'test/unit/assertions' require 'rexml/document' module Test::Unit::Assertions # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: General assertions. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def assert_status_ok(msg = nil) msg = format_msg("Status not ok", msg) assert_block(msg) { @context.status_ok? } end def assert_output_match(re, msg = nil) msg = format_msg("Rendered output does not match '#{re}'", msg) assert_block(msg) { @context.out =~ Regexp.new(re) } end alias_method :assert_output_contains, :assert_output_match def assert_output_no_match(re, msg = nil) msg = format_msg("Rendered output matches '#{re}'", msg) assert_block(msg) { @context.out =~ Regexp.new(re) } end alias_method :assert_output_contains_no, :assert_output_no_match # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: Session related assertions. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def assert_session_has(key, msg = nil) msg = format_msg("Object '#{key}' not found in session", msg) assert_block(msg) { @context.session[key] } end def assert_session_has_no(key, msg = nil) msg = format_msg("Unexpected object '#{key}' found in session", msg) assert_block(msg) { !@context.session[key] } end alias_method :assert_session_has_not, :assert_session_has_no def assert_session_equal(key, value, msg = nil) msg = format_msg("The value of session object '#{key}' is '#{@context.session[key]}' but was expected '#{value}'", msg) assert_block(msg) { @context.session[key] == value } end # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: Cookies related assertions. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def assert_has_cookie(name, msg = nil) msg = format_msg("Cookie '#{name}' not found", msg) assert_block(msg) { @context.response_cookie(name) } end def assert_has_no_cookie(name, msg = nil) msg = format_msg("Unexpected cookie '#{name}' found", msg) assert_block(msg) { !@context.response_cookie(name) } end def assert_cookie_equal(name, value, msg = nil) unless cookie = @context.response_cookie(name) msg = format_msg("Cookie '#{name}' not found", msg) assert_block(msg) { false } end msg = format_msg("The value of cookie '#{name}' is '#{cookie.value}' but was expected '#{value}'", msg) assert_block(msg) { cookie.value == value } end # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: Template related assertions. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: Redirection assertions. # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def assert_redirect(msg = nil) msg = format_msg("No redirection (status = #{@context.status})", msg) assert_block(msg) { @context.redirect? } end def assert_no_redirect(msg = nil) msg = format_msg("Unexpected redirection (location = '#{@context.response_headers['location']}')", msg) assert_block(msg) { !@context.redirect? } end # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - # :section: Utility methods # - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - def format_msg(message, extra) # :nodoc: extra += ', ' if extra return "#{extra}#{message}" end end # * George Moschovitis