Hi there
I have several view specs, that include the following snippet in
their "before" block to stub the methods by acts_as_authenticated
before :each do
@u = mock_model(User)
@u.should_receive(:name).and_return("Hans Muster")
template.should_receive(:logged_in?).and_return(true)
template.should_receive(:current_user).and_return(@u)
end
this works for views / helpers like this:
it "should show bla" do
render "/layouts/thetool"
response.should have_tag("p", "bla")
end
and the view (haml to make things more interesting)
- if logged_in?
%p bla
Now I also use Ezra acl_system2 plugin which defines a "restrict_to"
method that queries some roles. When I stub the methods above and run
specs, I get the following error:
ActionView::TemplateError in '/users/show should display the
information of the user'
undefined local variable or method `current_user' for
#<Spec::Rails::DSL::ViewExampleController:0x35d5cc0>
On line #59 of app/views/users/show.haml
56: - @user.roles.each do |role|
57: = role.title
58:
59: - restrict_to "admin | projektleiter" do
60: = link_to "Bearbeiten", edit_user_url(@user)
app/views//users/show.haml:59
vendor/plugins/acl_system2/lib/caboose/access_control.rb:75:in
`restrict_to'
(eval):2:in `restrict_to'
(eval):164:in `_render_haml_1'
vendor/plugins/haml/lib/haml/engine.rb:435:in `compile'
vendor/plugins/haml/lib/haml/engine.rb:186:in `to_html'
vendor/plugins/haml/lib/haml/template.rb:69:in `render'
vendor/rails/actionpack/lib/action_view/base.rb:502:in
`delegate_render'
vendor/rails/actionpack/lib/action_view/base.rb:324:in
`render_template_old'
vendor/plugins/haml/lib/haml/template.rb:96:in `render_template'
vendor/rails/actionpack/lib/action_view/base.rb:286:in
`globalize_old_render_file'
vendor/plugins/trunk/lib/globalize/rails/action_view.rb:20:in
`render_file'
vendor/rails/actionpack/lib/action_controller/base.rb:879:in
`render_file'
vendor/rails/actionpack/lib/action_controller/base.rb:814:in
`render_with_no_layout'
vendor/rails/actionpack/lib/action_controller/layout.rb:258:in
`render_without_benchmark'
vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
51:in `render'
/usr/local/lib/ruby/site_ruby/1.8/benchmark.rb:300:in `measure'
vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
51:in `render'
vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/
view.rb:51:in `render'
spec/views/users/show_haml_spec.rb:23
...
Interestingly, when I misspell the name of the stub in the working
example, I get the following error:
1)
ActionView::TemplateError in '/shared/layout_test not logged in
should have the correct head information'
undefined method `logged_in?' for #<ActionView::Base:0x22ec6f8>
On line #13 of app/views/layouts/thetool.haml
app/views//layouts/thetool.haml:13
app/helpers/application_helper.rb:5:in `login_logout'
(eval):28:in `_render_haml_1'
vendor/plugins/haml/lib/haml/engine.rb:435:in `compile'
vendor/plugins/haml/lib/haml/engine.rb:186:in `to_html'
vendor/plugins/haml/lib/haml/template.rb:69:in `render'
vendor/rails/actionpack/lib/action_view/base.rb:502:in
`delegate_render'
vendor/rails/actionpack/lib/action_view/base.rb:324:in
`render_template_old'
vendor/plugins/haml/lib/haml/template.rb:96:in `render_template'
vendor/rails/actionpack/lib/action_view/base.rb:286:in
`globalize_old_render_file'
vendor/plugins/trunk/lib/globalize/rails/action_view.rb:20:in
`render_file'
vendor/rails/actionpack/lib/action_controller/base.rb:879:in
`render_file'
vendor/rails/actionpack/lib/action_controller/base.rb:814:in
`render_with_no_layout'
vendor/rails/actionpack/lib/action_controller/layout.rb:258:in
`render_without_benchmark'
vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
51:in `render'
/usr/local/lib/ruby/site_ruby/1.8/benchmark.rb:300:in `measure'
vendor/rails/actionpack/lib/action_controller/benchmarking.rb:
51:in `render'
vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/
view.rb:51:in `render'
spec/views/layouts/thetool_haml_spec.rb:16
Note the different class (#<ActionView::Base:0x22ec6f8> vs
#<Spec::Rails::DSL::ViewExampleController:0x35d5cc0>) in the two specs.
I don't have enough rspec_fu to deduce where the problem lies..
Any helpers?
thanks
Jens-Christian
_______________________________________________
rspec-users mailing list
[email protected]
http://rubyforge.org/mailman/listinfo/rspec-users