Module: Test::Unit::Assertions

Defined in:
lib/og/test/assertions.rb

Overview

– Og related assertions. ++

Constant Summary collapse

STATUS_MAP =
{
  :success => 200,
  :ok => 200,
  :redirect => 307
}

Instance Method Summary collapse

Instance Method Details

#assert_content_type(ctype, msg) ⇒ Object



75
76
77
78
# File 'lib/og/test/assertions.rb', line 75

def assert_content_type(ctype, msg)
  msg = format_msg("Content type is not '#{ctype}' as expected", msg)
  assert_block(msg) { @context.content_type == ctype }
end

:section: Cookies related assertions.



112
113
114
115
116
117
118
119
120
121
122
123
# File 'lib/og/test/assertions.rb', line 112

def assert_cookie(options = {})
  msg = options[:msg]
  if key = options[:has]
    assert_cookie_has(key, msg)
  end
  if key = options[:has_no] || options[:no]
    assert_cookie_has_no(key, msg)
  end
  if key = options[:key] and value = options[:value]
    assert_cookie_equal(key, value, msg)
  end    
end


135
136
137
138
139
140
141
142
# File 'lib/og/test/assertions.rb', line 135

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


125
126
127
128
# File 'lib/og/test/assertions.rb', line 125

def assert_cookie_has(name, msg = nil)
  msg = format_msg("Cookie '#{name}' not found", msg)
  assert_block(msg) { @context.response_cookie(name) }
end


130
131
132
133
# File 'lib/og/test/assertions.rb', line 130

def assert_cookie_has_no(name, msg = nil)
  msg = format_msg("Unexpected cookie '#{name}' found", msg)
  assert_block(msg) { !@context.response_cookie(name) }
end

#assert_not_redirected(options = {}) ⇒ Object



160
161
162
163
164
# File 'lib/og/test/assertions.rb', line 160

def assert_not_redirected(options = {})
  msg = options[:msg]
  msg = format_msg("Unexpected redirection (location = '#{@context.response_headers['location']}')", msg)
  assert_block(msg) { !@context.redirect? }
end

#assert_output(options = {}) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
# File 'lib/og/test/assertions.rb', line 50

def assert_output(options = {})
  msg = options[:msg]
  if re = options[:match] || options[:contains]
    assert_output_match(re, msg)
  end
  if re = options[:no_match] || options[:contains_no]
    assert_output_not_match(re, msg)
  end
  if content_type = options[:content_type]
    assert_content_type(content_type, msg)
  end
end

#assert_output_match(re, msg) ⇒ Object Also known as: assert_output_contains, assert_output_contains_not



63
64
65
66
# File 'lib/og/test/assertions.rb', line 63

def assert_output_match(re, msg)
  msg = format_msg("Rendered output does not match '#{re.source}'", msg)
  assert_block(msg) { @context.body =~ Regexp.new(re) }
end

#assert_output_not_match(re, msg) ⇒ Object



69
70
71
72
# File 'lib/og/test/assertions.rb', line 69

def assert_output_not_match(re, msg)
  msg = format_msg("Rendered output matches '#{re.source}'", msg)
  assert_block(msg) { @context.out =~ Regexp.new(re) }
end

#assert_redirected(options = {}) ⇒ Object

:section: Redirection assertions.



148
149
150
151
152
153
154
155
156
157
158
# File 'lib/og/test/assertions.rb', line 148

def assert_redirected(options = {})
  msg = options[:msg]
  
  msg = format_msg("No redirection (status = #{@context.status})", msg)
  assert_block(msg) { @context.redirect? }
  
  if to = options[:to]
    msg = format_msg("Not redirected to '#{to}'", msg)
    assert_block(msg) { @context.response_headers['location'] == "http://#{to}" }
  end
end

#assert_response(options = {}) ⇒ Object

Check the status of the response.



21
22
23
24
25
26
27
28
29
30
# File 'lib/og/test/assertions.rb', line 21

def assert_response(options = {})
  unless options.is_a? Hash
    options = { :status => options }
  end
  msg = options[:msg]
  if status = options.fetch(:status, :success)
    status = STATUS_MAP[status] if STATUS_MAP.has_key?(status)
    assert_status(status, msg)
  end
end

#assert_session(options = {}) ⇒ Object

:section: Session related assertions.



82
83
84
85
86
87
88
89
90
91
92
93
# File 'lib/og/test/assertions.rb', line 82

def assert_session(options = {})
  msg = options[:msg]
  if key = options[:has]
    assert_session_has(key, msg)
  end
  if key = options[:has_no] || options[:no]
    assert_session_has_no(key, msg)
  end
  if key = options[:key] and value = options[:value]
    assert_session_equal(key, value, msg)
  end    
end

#assert_session_equal(key, value, msg = nil) ⇒ Object



105
106
107
108
# File 'lib/og/test/assertions.rb', line 105

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

#assert_session_has(key, msg = nil) ⇒ Object



95
96
97
98
# File 'lib/og/test/assertions.rb', line 95

def assert_session_has(key, msg = nil)
  msg = format_msg("Object '#{key}' not found in session", msg)
  assert_block(msg) {  @context.session[key] }
end

#assert_session_has_no(key, msg = nil) ⇒ Object



100
101
102
103
# File 'lib/og/test/assertions.rb', line 100

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

#assert_status(status, msg) ⇒ Object



32
33
34
35
# File 'lib/og/test/assertions.rb', line 32

def assert_status(status, msg)
  msg = format_msg("Status not '#{status}'", msg)
  assert_block(msg) { @context.status == status }
end

#format_msg(message, extra) ⇒ Object

:section: Utility methods



168
169
170
171
# File 'lib/og/test/assertions.rb', line 168

def format_msg(message, extra) # :nodoc:
  extra += ', ' if extra
  return "#{extra}#{message}"
end