How to spec two lines in application_controller.rb


#1

I need to spec the following lines:

helper :all # include all helpers, all the time
protect_from_forgery # See
ActionController::RequestForgeryProtection for detail

Can anybody give me a hint?

I create “application_controller_spec.rb” and now what?

Jon


#2

On Tue, May 26, 2009 at 4:32 PM, Hunt J. removed_email_address@domain.invalid
wrote:

Jon
You shouldn’t need to spec those two lines specifically.
What you want to do is spec the behaviour.

So if you want a particular helper method to be available, write a
spec that relies on that helper method (in another controller because
they all use ApplicationController). If you then take out helper :all,
your spec may fail (don’t know, never tried)
If it doesn’t, well then you don’t need the line :slight_smile:

For protect_from_forgery, again spec the behaviour you expect (again,
in a different controller spec)
If you take out the line and your code still works, you don’t need the
line.
If you take it out and the spec breaks, you know you’ve tested the
behaviour you want, and not a line!

I never spec either of these lines because their behaviour is tested
in the Rails code. I am only concerned with testing my applications
and the behaviour I want out of them.

As an aside, if you’re concerned about code coverage, both lines
should execute with every controller test as they must execute while
creating the ApplicationController class.

Regards

Andrew T.
http://ramblingsonrails.com

http://MyMvelope.com - The SIMPLE way to manage your savings


#3

Hunt J. wrote:

I need to spec the following lines:
No you don’t. They are thoroughly tested in the Rails framework and you
didn’t add any behavior to them, so reading them makes it immediately
clear what they are doing.

Don’t worry without specing these 2 lines you’ll still get your 100%
coverage.