Class: Camping::FunctionalTest

Inherits:
Test
  • Object
show all
Defined in:
lib/mosquito.rb

Instance Method Summary collapse

Methods inherited from Test

#assert_difference, #assert_no_difference, #deny

Instance Method Details



207
208
209
# File 'lib/mosquito.rb', line 207

def assert_cookie(name, pat, message=nil)
  assert_match pat, @cookies[name], message
end

#assert_match_body(regex, message = nil) ⇒ Object



196
197
198
# File 'lib/mosquito.rb', line 196

def assert_match_body(regex, message=nil)
  assert_match regex, @response.body, message
end

#assert_no_match_body(regex, message = nil) ⇒ Object



199
200
201
# File 'lib/mosquito.rb', line 199

def assert_no_match_body(regex, message=nil)
  assert_no_match regex, @response.body, message
end

#assert_redirected_to(url, message = nil) ⇒ Object



203
204
205
# File 'lib/mosquito.rb', line 203

def assert_redirected_to(url, message=nil)
  assert_equal url, @response.headers['Location'].path.gsub(%r!/#{@class_name_abbr.downcase}!, ''), message
end

#assert_response(status_code) ⇒ Object



183
184
185
186
187
188
189
190
191
192
193
194
# File 'lib/mosquito.rb', line 183

def assert_response(status_code)
  case status_code
  when :success
    assert_equal 200, @response.status
  when :redirect
    assert_equal 302, @response.status
  when :error
    assert @response.status >= 500
  else
    assert_equal status_code, @response.status
  end
end

#delete(url, vars = {}) ⇒ Object



147
148
149
# File 'lib/mosquito.rb', line 147

def delete(url, vars={})
  send_request url, vars, 'DELETE'
end

#get(url = '/', vars = {}) ⇒ Object



139
140
141
# File 'lib/mosquito.rb', line 139

def get(url='/', vars={})
  send_request url, vars, 'GET'
end

#post(url, post_vars = {}) ⇒ Object



143
144
145
# File 'lib/mosquito.rb', line 143

def post(url, post_vars={})
  send_request url, post_vars, 'POST'
end

#put(url, vars = {}) ⇒ Object



151
152
153
# File 'lib/mosquito.rb', line 151

def put(url, vars={})
  send_request url, vars, 'PUT'
end

#send_request(url, post_vars, method) ⇒ Object



155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/mosquito.rb', line 155

def send_request(url, post_vars, method)
  @request['REQUEST_METHOD'] = method
  @request['SCRIPT_NAME'] = '/' + @class_name_abbr.downcase
  @request['PATH_INFO'] = '/' + url
  @request['REQUEST_URI'] = [@request.SCRIPT_NAME, @request.PATH_INFO].join('')

  @request['HTTP_COOKIE'] = @cookies.map {|k,v| "#{k}=#{v}" }.join('; ') if @cookies

  @response = eval("#{@class_name_abbr}.run StringIO.new('#{qs_build(post_vars)}'), @request")

  @cookies = @response.headers['Set-Cookie'].inject(@cookies||{}) do |res,header|
    data = header.split(';').first
    name, value = data.split('=')
    res[name] = value
    res
  end
  
  @cookies = H[@cookies]
  
  session = Camping::Models::Session.persist @cookies
  app = @class_name_abbr.gsub(/^(\w+)::.+$/, '\1')
  @state = (session[app] ||= Camping::H[])

  if @response.headers['X-Sendfile']
    @response.body = File.read(@response.headers['X-Sendfile'])
  end
end

#setupObject



133
134
135
136
137
# File 'lib/mosquito.rb', line 133

def setup
  @class_name_abbr = self.class.name.gsub(/^Test/, '')
  @request = MockRequest.new
  @cookies = @response = {}
end

#test_dummyObject



211
# File 'lib/mosquito.rb', line 211

def test_dummy; end