How can i test the action of a controller which requires picture?
I mean, as part of the test I want to pass a picture (somekind of
fixture) and test to see if the result is correct
How can i test the action of a controller which requires picture?
I mean, as part of the test I want to pass a picture (somekind of
fixture) and test to see if the result is correct
On Wed, Nov 12, 2008 at 3:18 AM, Mano ah [email protected] wrote:
How can i test the action of a controller which requires picture?
I mean, as part of the test I want to pass a picture (somekind of
fixture) and test to see if the result is correct
I’m pretty sure you’re looking for this:
http://api.rubyonrails.com/classes/ActionController/TestProcess.html#M000229
You can use fixture_file_upload with rspec-rails. In fact, you can use
any of rails’ test/unit helpers and extensions when working with
rspec-rails.
Actually i need to test sending a barcode image and also test a value
returned by it.
Ramon T. wrote:
You can put that barcode in the spec/fixtures directory. However,
you’ll need to manually place it there.Ramon T.
ok. Also please can i know how to test sending an image using rspec.
You can put that barcode in the spec/fixtures directory. However,
you’ll need to manually place it there.
Ramon T.
I suggest doing those tests in the model, not in the controller. Just
do that fixture thing for the controller spec to pass. But pass the
same thing in the model. Here’s a sample of how I do it
require File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)
describe ProductImage do
before(:all) do
@valid_attributes = {
:uploaded_data => fixture_file_upload(“100x100.jpg”,‘image/jpg’),
:product_id => 1
}
@product_image = ProductImage.create(@valid_attributes)
end
it “should create a new instance given valid attributes” do
ProductImage.create!(@valid_attributes)
end
end
Ramon T.
Ramon T. wrote:
I suggest doing those tests in the model, not in the controller. Just
do that fixture thing for the controller spec to pass. But pass the
same thing in the model. Here’s a sample of how I do itrequire File.expand_path(File.dirname(FILE) + ‘/…/spec_helper’)
describe ProductImage do
before(:all) do
@valid_attributes = {
:uploaded_data => fixture_file_upload(“100x100.jpg”,‘image/jpg’),
:product_id => 1
}
@product_image = ProductImage.create(@valid_attributes)
endit “should create a new instance given valid attributes” do
ProductImage.create!(@valid_attributes)
end
endRamon T.
Can I know what the create action handle.
I am getting undefined method ‘create’ error
Hmm… not sure what that error is. The veterans in here might be able
to help you. The create action should work… btw, this is a model
spec, not a controller spec, just in case you’re a newbie.
Ramon T.
can i know how to test a picture upload which dosent interact with db
my code is
def scan
#-------
if request.post?
image = Image.new
image.blob= params[:image][:blob]
image.save_picture
end
On 2008-11-14, at 06:29, Mano ah wrote:
image = Image.new image.blob= params[:image][:blob] image.save_picture
end
Hi Mano. It doesn’t really matter whether or not your “picture” model
interacts with a database. Simply use mocks and stubs when speccing
#scan , and you’ll be good. For example:
describe ‘#scan’ do
describe ‘receives a POST request’ do
before :each do
# mock an Image instance
# stub Image#new
end
it 'should create a new Image'
it "should set the new image's 'blob' attribute"
it 'should save the new image'
end
describe ‘receives a non-POST request’ do
# stuff here
end
end
Obviously you have to fill in the contents of those #it blocks, but
that’s really all you need.
-Nick
Thank you
All the above specification passed. Now I want to test the return
value. I mean
def scan
#-------
if request.post?
image = Image.new
image.blob= params[:image][:blob]
if image.save_picture
@code = returns a barcode image value
end
end
What is the rspec code to test the return value and make it pass
Nick H. wrote:
On 2008-11-14, at 06:29, Mano ah wrote:
image = Image.new image.blob= params[:image][:blob] image.save_picture
end
Hi Mano. It doesn’t really matter whether or not your “picture” model
interacts with a database. Simply use mocks and stubs when speccing
#scan , and you’ll be good. For example:describe ‘#scan’ do
describe ‘receives a POST request’ do
before :each do
# mock an Image instance
# stub Image#new
endit 'should create a new Image' it "should set the new image's 'blob' attribute" it 'should save the new image'
end
describe ‘receives a non-POST request’ do
# stuff here
end
endObviously you have to fill in the contents of those #it blocks, but
that’s really all you need.
-Nick
Thank you
All the above specification passed. Now I want to test the return
value. I mean
def scan
#-------
if request.post?
image = Image.new
image.blob= params[:image][:blob]
if image.save_picture
@code = returns a blog image value
end
end
What is the rspec code to test the return value and make it pass
On 2008-11-18, at 01:53, Mano ah wrote:
Obviously you have to fill in the contents of those #it blocks, but
that’s really all you need.
-Nick
Hi Mano.
All the above specification passed.
Um, that’s because those calls to #it were meant as a guide for you,
and don’t actually contain any real tests. You need to write those
yourself.
image.blob= params[:image][:blob] if image.save_picture @code = returns a blog image value end
end
What is the rspec code to test the return value and make it pass
The code above is trivial to spec if you understand RSpec. It sounds
like you need to learn more about RSpec and behaviour-driven
development. I recommend searching Google for a couple of articles/
guides, as well as reading what David C., Dan N., and other
experts have written on their blogs/sites.
Cheers,
Nick
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.
Sponsor our Newsletter | Privacy Policy | Terms of Service | Remote Ruby Jobs