[rspec-users] Driving Out A View - Layouts and Sessions?

David Chelimsky dchelimsky at gmail.com
Sat Jun 6 07:06:01 EDT 2009


On Sat, Jun 6, 2009 at 12:01 AM, Lee <Lee.Longmore at googlemail.com> wrote:
> Thanks Steve.
>
> As suggested I started to wrtite a separate spec for the layout:
>
> require File.expand_path(File.dirname(__FILE__) + '/../../
> spec_helper')
>
> describe "layouts/contexts.html.erb" do
>
>  it "should display a link to create a new zone" do
>    render "layouts/contexts.html.erb"
>  end
>
> end
>
> When I execute this, it complains of a missing method "sub_menu". This
> method, along with others such as "main_menu", are called within the
> layout. Unlike "main_menu" which is defined in my
> "application_helper.rb" file, "sub_menu" is defined in the helper file
> for the controller "contexts". How do I get the spec to "see" this
> file and its contents when executed? I think It's seeing "main_menu".

http://rspec.rubyforge.org/rspec-rails/1.2.6/classes/Spec/Rails/Example/ViewExampleGroup.html#M000049


>
> Thanks.
>
> On 5 June, 17:39, Stephen Eley <sfe... at gmail.com> wrote:
>> On Fri, Jun 5, 2009 at 11:40 AM, Lee<Lee.Longm... at googlemail.com> wrote:
>>
>> > Firstly, my experiments suggest that the layout is only rendered if
>> > the :layout attribute is included in the call to render. Is my
>> > understanding correct?
>>
>> Yes, and it's the way things should be.  I suggest writing a separate
>> spec for the layout, and testing its behavior separate from the view.
>> After all, you're *unit* testing here.  And the layout is a separate
>> unit.
>>
>> > Secondly, the link_to code only executes if the session contains a
>> > piece of data (member id). How do I set up the session data in my view
>> > spec?
>>
>> With the session[] object, e.g. "session[:foo] = bar".  See:http://rspec.info/rails/writing/views.html
>>
>> Whether the view (or layout) should be looking directly into the
>> session and making decisions from what it sees, instead of trusting
>> what it gets from the controller, is another question.  "Is there a
>> current user?" is _probably_ closer to your actual business rules than
>> "Does the session contain a member id?"
>>
>> --
>> Have Fun,
>>    Steve Eley (sfe... at gmail.com)
>>    ESCAPE POD - The Science Fiction Podcast Magazine
>>    http://www.escapepod.org
>> _______________________________________________
>> rspec-users mailing list
>> rspec-us... at rubyforge.orghttp://rubyforge.org/mailman/listinfo/rspec-users
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list