Module: Merb::Test::MultipartRequestHelper
- Included in:
- ControllerHelper
- Defined in:
- lib/merb-core/test/helpers/multipart_request_helper.rb
Defined Under Namespace
Classes: FileParam, Param, Post
Instance Method Summary collapse
-
#dispatch_multipart_to(controller_klass, action, params = {}, env = {}, &blk) ⇒ Object
Similar to dispatch_to but allows for sending files inside params.
-
#multipart_fake_request(env = {}, params = {}) ⇒ Object
Parameters env<Hash>:: An optional hash that is passed to the fake request.
-
#multipart_post(path, params = {}, env = {}, &block) ⇒ Object
An HTTP POST request that operates through the router and uses multipart parameters.
-
#multipart_put(path, params = {}, env = {}, &block) ⇒ Object
An HTTP PUT request that operates through the router and uses multipart parameters.
Instance Method Details
#dispatch_multipart_to(controller_klass, action, params = {}, env = {}, &blk) ⇒ Object
Similar to dispatch_to but allows for sending files inside params.
Paramters
- controller_klass<Controller>
-
The controller class object that the action should be dispatched to.
- action<Symbol>
-
The action name, as a symbol.
- params<Hash>
-
An optional hash that will end up as params in the controller instance.
- env<Hash>
-
An optional hash that is passed to the fake request. Any request options should go here (see
fake_request
). - &blk
-
The block is executed in the context of the controller.
Example
dispatch_multipart_to(MyController, :create, :my_file => @a_file ) do |controller|
controller.stub!(:current_user).and_return(@user)
end
Notes
Set your option to contain a file object to simulate file uploads.
Does not use routes.
110 111 112 113 |
# File 'lib/merb-core/test/helpers/multipart_request_helper.rb', line 110 def dispatch_multipart_to(controller_klass, action, params = {}, env = {}, &blk) request = multipart_fake_request(env, params) dispatch_request(request, controller_klass, action, &blk) end |
#multipart_fake_request(env = {}, params = {}) ⇒ Object
Parameters
- env<Hash>
-
An optional hash that is passed to the fake request. Any request options should go here (see
fake_request
). - params<Hash>
-
An optional hash that will end up as params in the controller instance.
Returns
- FakeRequest
-
A multipart Request object that is built based on the parameters.
165 166 167 168 169 170 171 172 173 174 |
# File 'lib/merb-core/test/helpers/multipart_request_helper.rb', line 165 def multipart_fake_request(env = {}, params = {}) if params.empty? fake_request(env) else m = Post.new(params) body, head = m.to_multipart fake_request(env.merge( :content_type => head, :content_length => body.length), :post_body => body) end end |
#multipart_post(path, params = {}, env = {}, &block) ⇒ Object
An HTTP POST request that operates through the router and uses multipart parameters.
Parameters
- path<String>
-
The path that should go to the router as the request uri.
- params<Hash>
-
An optional hash that will end up as params in the controller instance.
- env<Hash>
-
An optional hash that is passed to the fake request. Any request options should go here (see
fake_request
). - block<Proc>
-
The block is executed in the context of the controller.
Notes
To include an uploaded file, put a file object as a value in params.
129 130 131 132 133 |
# File 'lib/merb-core/test/helpers/multipart_request_helper.rb', line 129 def multipart_post(path, params = {}, env = {}, &block) env[:request_method] = "POST" env[:test_with_multipart] = true request(path, params, env, &block) end |
#multipart_put(path, params = {}, env = {}, &block) ⇒ Object
An HTTP PUT request that operates through the router and uses multipart parameters.
Parameters
- path<String>
-
The path that should go to the router as the request uri.
- params<Hash>
-
An optional hash that will end up as params in the controller instance.
- env<Hash>
-
An optional hash that is passed to the fake request. Any request options should go here (see
fake_request
). - block<Proc>
-
The block is executed in the context of the controller.
Notes
To include an uplaoded file, put a file object as a value in params.
149 150 151 152 153 |
# File 'lib/merb-core/test/helpers/multipart_request_helper.rb', line 149 def multipart_put(path, params = {}, env = {}, &block) env[:request_method] = "PUT" env[:test_with_multipart] = true request(path, params, env, &block) end |