[rspec-users] unable to access flash from rails helper spec since upgrade to 1.1.4

Jim Morris ml at e4net.com
Thu Jul 3 12:01:57 EDT 2008


Ok, its messy but this works...

   before :each do
     init_haml_helpers
     helper.extend Haml
     helper.extend Haml::Helpers
     helper.send :init_haml_helpers
   end

   it "should display flash" do
     for name in [:notice, :warning, :error]
       flash[name]= "flash #{name.to_s} message"
       helper.capture_haml{
         helper.display_flash
       }.should match(/<div class='#{name.to_s}'>\s*#{flash[name]}\s*<\/div>/)
       flash[name]= nil
     end
   end

...

NOTE that the capture haml needs to be prepended by helper. otherwise nothing gets returned.


David Chelimsky wrote:
> On Jul 3, 2008, at 1:29 AM, Jim Morris wrote:
> 
>> Hi David,
>>
>> Thanks that worked, and fixed that problem.
>>
>> Now I have run into another problem, from the same blog example (which 
>> I'll update once I get it all to work).
>>
>> Within the application helper I call haml_tag, which works fine when 
>> the app runs. (used to be called open).
>>
>> However when I try to test that helper in my helper spec I get...
>>
>> NoMethodError in 'ApplicationHelper should display flash'
>> undefined method `haml_tag' for 
>> #<Spec::Rails::Example::HelperExampleGroup::HelperObject:0xb71ced20>
>>
>> For some reason it doesn't know anything about haml when run from the 
>> spec.
>>
>> I guess I need to inject a require haml or something into the 
>> HelperObject? I just don't know how to do that.
> 
> Try this:
> 
> before(:each) do
>   helper.extend Haml::Helpers
> end
> 
> it "should ...." do
>   ...
> end
> 
> 
>>
>>
>> I am using the latest version of HAML but I am still using rails 1.2.6
>>
>> Any ideas?
>>
>> Thanks
>> Jim
>>
>> David Chelimsky wrote:
>>> On Jul 2, 2008, at 7:12 PM, Jim Morris wrote:
>>>> Hi,
>>>>
>>>> Many moons ago I wrote this blog entry...
>>>>
>>>> http://blog.wolfman.com/articles/2007/07/14/using-rspec-to-test-haml-helpers 
>>>>
>>>>
>>>> I just upgraded that rails project to use rspec 1.1.4 and associated 
>>>> rspec_rails.
>>>>
>>>> It seems that my helper when called from the helper specs no longer 
>>>> are able to access flash, controller etc as they did before.
>>>>
>>>> I already prepended all helper calls with helper. so I fixed those 
>>>> changes, but I have been unable to figure out how to access flash 
>>>> etc...
>>>>
>>>> Here is a simplified example...
>>>>
>>>> in ApplicationHelper.rb
>>>>
>>>> def test_flash
>>>>   for name in [:notice, :warning, :error]
>>>>     if flash[name]
>>>>       return "#{flash[name]}"
>>>>     end
>>>>   end
>>>>   nil
>>>> end
>>>>
>>>> In my rails/spec/helpers/application_helper_spec.rb
>>>>
>>>> require File.dirname(__FILE__) + '/../spec_helper'
>>>>
>>>> describe ApplicationHelper do
>>>>
>>>> it "should test flash" do
>>>>   for name in [:notice, :warning, :error]
>>>>     flash[name]= "flash #{name.to_s} message"
>>>>     helper.test_flash.should match(/.*#{name}.*/)
>>>>     flash[name]= nil
>>>>   end
>>>> end
>>>>
>>>> end
>>>>
>>>> I get this error trace...
>>>> 1)
>>>> NoMethodError in 'ApplicationHelper should test flash'
>>>> You have a nil object when you didn't expect it!
>>>> You might have expected an instance of Array.
>>>> The error occurred while evaluating nil.[]
>>>> /.../app/helpers/application_helper.rb:23:in `test_flash'
>>>> ...
>>>>
>>>> flash is nil, this used to work, so what is the new magic 
>>>> incantation to get this to work again?
>>> Hey Jim - I fixed this in 
>>> http://github.com/dchelimsky/rspec-rails/commit/40a0916325dbe9a1631849146d078e330fca71f2, 
>>> so you can either grab the very latest from github or wait for the 
>>> 1.1.5 release (coming in the next few days).
>>> Cheers,
>>> David
>>> _______________________________________________
>>> rspec-users mailing list
>>> rspec-users at rubyforge.org
>>> http://rubyforge.org/mailman/listinfo/rspec-users
>>
>>
>> -- 
>> Jim Morris, http://blog.wolfman.com
>> _______________________________________________
>> rspec-users mailing list
>> rspec-users at rubyforge.org
>> http://rubyforge.org/mailman/listinfo/rspec-users
> 
> 


-- 
Jim Morris, http://blog.wolfman.com


More information about the rspec-users mailing list