[rspec-users] Controller/View User Agent Strings

s.ross
Fri, 16 Feb 2007 00:12:58 -0000

Thanks for the reply. I''m about 4 days off trunk, so depending on
what you checked in when, I''m pretty current. I''ll mess around
with
this more. Thanks for the code and the link.

Steve

On Feb 15, 2007, at 7:58 AM, David Chelimsky wrote:

> Wait - Steve - that was based on what''s in the trunk. It *might*
work
> w/ 0.7.5.1, but I haven''t tried it.
>
> What version are you using?
>
> On 2/15/07, David Chelimsky <dchelimsky at gmail.com> wrote:
>> Given this in views/layouts/person.rhtml:
>>
>> <%= stylesheet_link_tag(''ie'', :media =>
''screen'') if
>> request.user_agent && request.user_agent =~ /msie/i %>
>>
>> The following passes for me:
>>
>> ===================================>> context "layout for
person w/ user_agent = msie" do
>>   setup do
>>     request.stub!(:user_agent).and_return(''msie'')
>>     render ''layouts/person''
>>   end
>>
>>   specify "should have msie stylesheet" do
>>     response.should have_tag("link[href*=ie.css]")
>>   end
>>
>>   specify "should not have firefox stylesheet" do
>>     response.should_not have_tag("link[href*=firefox.css]")
>>   end
>>
>> end
>>
>> context "layout for person w/ user_agent = firefox" do
>>   setup do
>>     request.stub!(:user_agent).and_return(''mozilla'')
>>     render ''layouts/person''
>>   end
>>
>>   specify "should have no link tag" do
>>     response.should_not have_tag("link")
>>   end
>>
>> end
>> ===================================>>
>> Take a look at the assert_select cheat sheet for more info:
>>
>> http://labnotes.org/svn/public/ruby/rails_plugins/assert_select/
>> cheat/assert_select.html
>>
>> have_tag just wraps that w/ rspec syntax.
>>
>> Let me know if this helps.
>>
>> Cheers,
>> David
>>
>> On 2/13/07, s.ross <cwdinfo at gmail.com> wrote:
>>> Just checking. I guess it just seemed too easy :)
>>>
>>> What happens when this page renders is a tag like:
>>>
>>>
>>>
>>> Or something like that with the Rails asset tagging. What I want to
>>> do is test that I''m responding to the user agent string
correctly
>>> using a matcher that looks for the filename, but disregards the
>>> asset
>>> tag:
>>>
>>> response.should have_tag(''link'', :attributes
=> {:href => /
>>> application.css/})
>>> response.should_not have_tag(''link'', :attributes
=> {:href => /
>>> ie.css/})
>>>
>>> However, the "should have" expectations always pass no
matter what.
>>> Not coincidentally, the "should_not have" ones always
fail.
>>>
>>> I can see, looking at the Rails plugin source that my syntax is
>>> broken and that the have_tag expectation was meant more to
determine
>>> whether the tag exists and how many times it occurs. Is there a
>>> matcher that peers into the tag the way the old Test::Unit
>>> assertions
>>> did?
>>>
>>> Thanks
>>>
>>> On Feb 13, 2007, at 4:40 PM, David Chelimsky wrote:
>>>
>>>> On 2/13/07, s.ross <cwdinfo at gmail.com> wrote:
>>>>> I have conditional logic in my view (I know, obligatory
slap on
>>>>> the
>>>>> wrist) so that an add-on stylesheet is linked in for IE
users. The
>>>>> code is:
>>>>>
>>>>>      <%= stylesheet_link_tag(''ie'',
:media => ''screen'') if
>>>>> request.user_agent && request.user_agent =~ /msie/i
%>
>>>>>
>>>>> The spec is:
>>>>>
>>>>>    specify "should display index page" do
>>>>>      get :index
>>>>>      response.should_be_success
>>>>>    end
>>>>>
>>>>> There is no user_agent in the request object passed to the
>>>>> view. Now,
>>>>> I can change all of this by simply:
>>>>>
>>>>> setup do
>>>>>
request.stub!(:user_agent).and_return(''msie'')
>>>>> end
>>>>>
>>>>> but I was wondering if there was a better way?
>>>>
>>>> That seems pretty simple to me. What is bugging you about it?
>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Steve
>>>>> _______________________________________________
>>>>> rspec-users mailing list
>>>>> rspec-users at rubyforge.org
>>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>>>
>>>> _______________________________________________
>>>> rspec-users mailing list
>>>> rspec-users at rubyforge.org
>>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>>
>>