I have the following function in controller
def by_xy
@obj = BldPoly::find_by_xy(:x => params['x'], :y => params['y'])
respond_to do |format|
format.html { render :layout => false }
format.xml { render :layout => false }
format.json { render :layout => false }
end
and planning to write the automatic test in the following way
xml = nil
get :by_xy, {:x => 4831, :y => 3242, :format => :json}
assert_nothing_thrown { xml = REXML::Document.new(@response.body) }
td = REXML::XPath.first(xml, "//result/item")
assert_equal need_value, td.value
and I get Completed in 50ms (View: 0, DB: 230) | 406 Not Acceptable [http://test.host/search/by_xy/4831/3242.json]
when I missed format in testing code - all works correctly,
how should I write the test?
I figured this out, actually; this is how it should be
get :by_xy, {:x => i[:x], :y => i[:y]}, :format => :json
For rails 5.1, when doing a post, I had to include the format
attribute inside of my params hash
share_params = {
email: nil,
message: 'Default message.'
format: :json
}
post image_share_path(@image), params: share_params
assert_response :unprocessable_entity
If not I would get the error ActionController::UnknownFormat
inside of my create controller
def create
@image = Image.new(image_params)
if @image.save
flash[:success] = 'Your image was saved successfully.'
redirect_to @image
else
respond_to do |format|
format.json do
render json: { @image.to_json },
status: :unprocessable_entity
end
end
end
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With