Module: Test::Unit::Assertions

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

Constant Summary collapse

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

Instance Method Summary collapse

Instance Method Details

#assert_content_type(ctype, msg) ⇒ Object



71
72
73
74
# File 'lib/nitro/test/assertions.rb', line 71

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.



108
109
110
111
112
113
114
115
116
117
118
119
# File 'lib/nitro/test/assertions.rb', line 108

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


131
132
133
134
135
136
137
138
# File 'lib/nitro/test/assertions.rb', line 131

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


121
122
123
124
# File 'lib/nitro/test/assertions.rb', line 121

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


126
127
128
129
# File 'lib/nitro/test/assertions.rb', line 126

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



156
157
158
159
160
# File 'lib/nitro/test/assertions.rb', line 156

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



46
47
48
49
50
51
52
53
54
55
56
57
# File 'lib/nitro/test/assertions.rb', line 46

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



59
60
61
62
# File 'lib/nitro/test/assertions.rb', line 59

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



65
66
67
68
# File 'lib/nitro/test/assertions.rb', line 65

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.



144
145
146
147
148
149
150
151
152
153
154
# File 'lib/nitro/test/assertions.rb', line 144

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.



17
18
19
20
21
22
23
24
25
26
# File 'lib/nitro/test/assertions.rb', line 17

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.



78
79
80
81
82
83
84
85
86
87
88
89
# File 'lib/nitro/test/assertions.rb', line 78

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



101
102
103
104
# File 'lib/nitro/test/assertions.rb', line 101

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



91
92
93
94
# File 'lib/nitro/test/assertions.rb', line 91

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



96
97
98
99
# File 'lib/nitro/test/assertions.rb', line 96

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



28
29
30
31
# File 'lib/nitro/test/assertions.rb', line 28

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



164
165
166
167
# File 'lib/nitro/test/assertions.rb', line 164

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