Scott Sehlhorst
2007-Sep-10 14:44 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
Thanks, first, to everyone who''s asked and answered questions on this
list,
and to the creators of RSpec - it is all very helpful. I''ve searched
the
mailing list, and had a couple 2hr googling sessions that didn''t help
me
find an answer.
I''ve run into a problem getting my first non-trivial view spec to run.
I
get an error when trying to generate a link_to() to another resource. Here
is an overview of the situation, then the code:
- I''m using a restful design
- I''m using nested (multiply nested) resources
- I am trying to test a show.rhtml view, that includes links (link_to)
to resources managed by another controller
- The use_case model has a many-to-may through relationship with
actors, and I''m displaying links to the associated actors on the
use_case
page
- I can''t get the links to generate when running rspec (but it works
great in the app)
- I am in the early stages of the project, and want to move forward
BDD, but I have some existing code that I need to test before I can start
moving forward again.
My theories: I need to stub the controller (for the other resource), or I
need to stub something else.
Here''s the command I''m running to drive RSpec
ruby script/spec -f s spec/views
Here''s the error that I get
1)
ActionView::TemplateError in ''UseCase showing a use case should display
the
use case identifier''
actor_url failed to generate from {:customer_id=>"1",
:controller=>"actors",
:action=>"show", :project_id=>"1"}, expecte
d: {:controller=>"actors", :action=>"show"}, diff:
{:customer_id=>"1",
:project_id=>"1"}
On line #22 of app/views/use_cases/show.rhtml
19: <ul>
20: <% @primary_actors.each do |a| %>
21: <li>
22: <%link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
actor details"}) -%>
23: <%= link_to("Remove
assignment",participation_path(@customer, at project, at
use_case.participations.find_by
_actor_id(a)),{:class=>"delete",:title=>"Remove the
assignment of this actor
to this use case", :confirm => ''Are you sur
e you want to remove this assignment?'', :method => :delete})-%>
24: </li>
25: <% end %>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
`raise_named_route_error''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in
`generate''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in
`rewrite_path''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
`rewrite''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in
`url_for''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in
`url_for''
(eval):19:in `actor_path''
#{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in
`_run_rhtml_47app47views47use_cases47show46rhtml''
#{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in
`_run_rhtml_47app47views47use_cases47show46rhtml''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in
`compile_and_render_template''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in
`render_template''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in
`render_file''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in
`render_file''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in
`render_with_no_layout''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in
`render_without_benchmark''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
`render''
c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure''
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
`render''
C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in
`render''
spec/views/use_cases/show_view_spec.rb:40
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in
`proc''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in
`proc''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in
`before_example''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in
`run''
c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in
`run''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in
`run''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in
`run''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in
`run_behaviours''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in
`run_behaviours''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in
`run''
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in
`run''
script/spec:4
Here''s part of my routes.rb, showing the nested resources
map.resources :customers do |customers|
customers.resources :projects do |projects|
projects.resources :actors
projects.resources :use_cases
Here''s some of the stubbing that I am using to set up the spec
@customer = mock_model(Customer,
:id => 1,
:to_param => "1"
)
@project = mock_model(Project,
:id => 1,
:customer_id => 1,
:to_param => "1"
)
I''ve also stubbed objects to create the following :assigns
assigns[:customer] = @customer
assigns[:project] = @project
assigns[:use_case] = @use_case
assigns[:primary_actors] = @primary_actors
I suspect that there is something else that needs to be stubbed - actors
controller, maybe? I really don''t know. If anyone can point me in the
right direction, or tell me where in the error message to dig deeper, that
would be awesome.
If I left out any important information, please let me know! And a huge
thanks in advance to anyone who can help me out, or explain why this
isn''t
supported, or point me towards any docs or articles that address this issue
(because I will have it a zillion times, as almost all views in my app
display content and links from more than one model).
Scott
--
Scott Sehlhorst, President Tyner Blain LLC
http://tynerblain.com/blog
http://tynerblain.com/nexus
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://rubyforge.org/pipermail/rspec-users/attachments/20070910/2ec6ac69/attachment.html
David Chelimsky
2007-Sep-10 15:01 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
On 9/10/07, Scott Sehlhorst <scott at tynerblain.com> wrote:> Thanks, first, to everyone who''s asked and answered questions on this list, > and to the creators of RSpec - it is all very helpful. I''ve searched the > mailing list, and had a couple 2hr googling sessions that didn''t help me > find an answer. > > I''ve run into a problem getting my first non-trivial view spec to run. I > get an error when trying to generate a link_to() to another resource. Here > is an overview of the situation, then the code: > > > I''m using a restful design > I''m using nested (multiply nested) resources > I am trying to test a show.rhtml view, that includes links (link_to) to > resources managed by another controller > The use_case model has a many-to-may through relationship with actors, and > I''m displaying links to the associated actors on the use_case page > I can''t get the links to generate when running rspec (but it works great in > the app) > I am in the early stages of the project, and want to move forward BDD, but I > have some existing code that I need to test before I can start moving > forward again. > My theories: I need to stub the controller (for the other resource), or I > need to stub something else. > > Here''s the command I''m running to drive RSpec > > ruby script/spec -f s spec/views > > Here''s the error that I get > > 1) > ActionView::TemplateError in ''UseCase showing a use case should display the > use case identifier'' > actor_url failed to generate from {:customer_id=>"1", > :controller=>"actors", :action=>"show", :project_id=>"1"}, expecte > d: {:controller=>"actors", :action=>"show"}, diff: {:customer_id=>"1", > :project_id=>"1"} > On line #22 of app/views/use_cases/show.rhtml > > 19: <ul> > 20: <% @primary_actors.each do |a| %> > 21: <li> > 22: <%> link_to(a.name,actor_path(@customer, at project),{:class=>"show",:title=>"Show > actor details"}) -%> > 23: <%= link_to("Remove > assignment",participation_path(@customer, at project, at use_case.participations.find_by > _actor_id(a)),{:class=>"delete",:title=>"Remove the > assignment of this actor to this use case", :confirm => ''Are you sur > e you want to remove this assignment?'', :method => :delete})-%> > 24: </li> > 25: <% end %> > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in > `raise_named_route_error'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in > `generate'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in > `rewrite_path'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in > `rewrite'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in > `url_for'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in > `url_for'' > (eval):19:in `actor_path'' > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in > `_run_rhtml_47app47views47use_cases47show46rhtml'' > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in > `_run_rhtml_47app47views47use_cases47show46rhtml'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in > `compile_and_render_template'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in > `render_template'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in > `render_file'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in > `render_file'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in > `render_with_no_layout'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in > `render_without_benchmark'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in > `render'' > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure'' > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in > `render'' > > C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in > `render'' > spec/views/use_cases/show_view_spec.rb:40 > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in > `proc'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in > `proc'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in > `before_example'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in > `run'' > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in > `run'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in > `run'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in > `run'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in > `run_behaviours'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in > `run_behaviours'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in > `run'' > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in > `run'' > script/spec:4 > > Here''s part of my routes.rb, showing the nested resources > > map.resources :customers do |customers| > customers.resources :projects do |projects| > projects.resources :actors > projects.resources :use_cases > > > Here''s some of the stubbing that I am using to set up the spec > > @customer = mock_model(Customer, > :id => 1, > :to_param => "1" > ) > > @project = mock_model(Project, > :id => 1, > :customer_id => 1, > :to_param => "1" > ) > > I''ve also stubbed objects to create the following :assigns > > assigns[:customer] = @customer > assigns[:project] = @project > assigns[:use_case] = @use_case > assigns[:primary_actors] = @primary_actors > > I suspect that there is something else that needs to be stubbed - actors > controller, maybe? I really don''t know. If anyone can point me in the > right direction, or tell me where in the error message to dig deeper, that > would be awesome. > > If I left out any important information, please let me know! And a huge > thanks in advance to anyone who can help me out, or explain why this isn''t > supported, or point me towards any docs or articles that address this issue > (because I will have it a zillion times, as almost all views in my app > display content and links from more than one model).I don''t think it''s related to rspec. Note that the top of the error stack says: #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in `raise_named_route_error'' So the error is likely related to this bit: actor_path(@customer, at project) Given the nesting that you''re doing multi-level nesting (which is not recommended btw - read http://weblog.jamisbuck.org/2007/2/5/nesting-resources), I believe that the path should be either: customer_project_actor_path(@customer, @project, @actor) or customer_project_actors_path(@customer, @project) HTH, David
Scott Sehlhorst
2007-Sep-10 16:13 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
Thanks very much. I feel like a bit of a fool, now, for the odd error.
Changing from:
<%= link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
actor details"}) -%>
To
<%= link_to(a.name,actor_path(@customer, at
project,a),{:class=>"show",:title=>"Show
actor details"}) -%>
Caused everything to work like a champ. And uncovered an interesting bug.
When not specifying the actor ''a'', the link is generated (in
the page), but
with id=1. No idea if/when I would have caught that.
Thanks again David, and all the RSpec''ers out there.
Also, thanks for the multi-nesting pointer.
Scott
On 9/10/07, David Chelimsky <dchelimsky at gmail.com>
wrote:>
> On 9/10/07, Scott Sehlhorst <scott at tynerblain.com> wrote:
> > Thanks, first, to everyone who''s asked and answered questions
on this
> list,
> > and to the creators of RSpec - it is all very helpful. I''ve
searched
> the
> > mailing list, and had a couple 2hr googling sessions that
didn''t help me
> > find an answer.
> >
> > I''ve run into a problem getting my first non-trivial view
spec to
> run. I
> > get an error when trying to generate a link_to() to another
> resource. Here
> > is an overview of the situation, then the code:
> >
> >
> > I''m using a restful design
> > I''m using nested (multiply nested) resources
> > I am trying to test a show.rhtml view, that includes links (link_to)
to
> > resources managed by another controller
> > The use_case model has a many-to-may through relationship with actors,
> and
> > I''m displaying links to the associated actors on the use_case
page
> > I can''t get the links to generate when running rspec (but it
works great
> in
> > the app)
> > I am in the early stages of the project, and want to move forward BDD,
> but I
> > have some existing code that I need to test before I can start moving
> > forward again.
> > My theories: I need to stub the controller (for the other resource),
or
> I
> > need to stub something else.
> >
> > Here''s the command I''m running to drive RSpec
> >
> > ruby script/spec -f s spec/views
> >
> > Here''s the error that I get
> >
> > 1)
> > ActionView::TemplateError in ''UseCase showing a use case
should display
> the
> > use case identifier''
> > actor_url failed to generate from {:customer_id=>"1",
> > :controller=>"actors", :action=>"show",
:project_id=>"1"}, expecte
> > d: {:controller=>"actors", :action=>"show"},
diff: {:customer_id=>"1",
> > :project_id=>"1"}
> > On line #22 of app/views/use_cases/show.rhtml
> >
> > 19: <ul>
> > 20: <% @primary_actors.each do |a| %>
> > 21: <li>
> > 22: <%> > link_to(a.name
> ,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > actor details"}) -%>
> > 23: <%= link_to("Remove
> >
> assignment",participation_path(@customer, at project, at
use_case.participations.find_by
> > _actor_id(a)),{:class=>"delete",:title=>"Remove
the
> > assignment of this actor to this use case", :confirm =>
''Are you sur
> > e you want to remove this assignment?'', :method =>
:delete})-%>
> > 24: </li>
> > 25: <% end %>
> >
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > `raise_named_route_error''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in
> > `generate''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in
> > `rewrite_path''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
> > `rewrite''
> >
> >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in
> > `url_for''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in
> > `url_for''
> > (eval):19:in `actor_path''
> > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in
> > `_run_rhtml_47app47views47use_cases47show46rhtml''
> > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in
> > `_run_rhtml_47app47views47use_cases47show46rhtml''
> >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in
> > `compile_and_render_template''
> >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in
> > `render_template''
> >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in
> > `render_file''
> >
> >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in
> > `render_file''
> >
> >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in
> > `render_with_no_layout''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in
> > `render_without_benchmark''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > `render''
> > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in `measure''
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > `render''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in
> > `render''
> > spec/views/use_cases/show_view_spec.rb:40
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in
> > `proc''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in
> > `proc''
> >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in
> > `before_example''
> >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in
> > `run''
> > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout''
> >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in
> > `run''
> >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in
> > `run''
> >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in
> > `run''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in
> > `run_behaviours''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in
> > `run_behaviours''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in
> > `run''
> >
> >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in
> > `run''
> > script/spec:4
> >
> > Here''s part of my routes.rb, showing the nested resources
> >
> > map.resources :customers do |customers|
> > customers.resources :projects do |projects|
> > projects.resources :actors
> > projects.resources :use_cases
> >
> >
> > Here''s some of the stubbing that I am using to set up the
spec
> >
> > @customer = mock_model(Customer,
> > :id => 1,
> > :to_param => "1"
> > )
> >
> > @project = mock_model(Project,
> > :id => 1,
> > :customer_id => 1,
> > :to_param => "1"
> > )
> >
> > I''ve also stubbed objects to create the following :assigns
> >
> > assigns[:customer] = @customer
> > assigns[:project] = @project
> > assigns[:use_case] = @use_case
> > assigns[:primary_actors] = @primary_actors
> >
> > I suspect that there is something else that needs to be stubbed -
actors
> > controller, maybe? I really don''t know. If anyone can point
me in the
> > right direction, or tell me where in the error message to dig deeper,
> that
> > would be awesome.
> >
> > If I left out any important information, please let me know! And a
huge
> > thanks in advance to anyone who can help me out, or explain why this
> isn''t
> > supported, or point me towards any docs or articles that address this
> issue
> > (because I will have it a zillion times, as almost all views in my app
> > display content and links from more than one model).
>
> I don''t think it''s related to rspec. Note that the top of
the error stack
> says:
>
>
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> `raise_named_route_error''
>
> So the error is likely related to this bit:
>
> actor_path(@customer, at project)
>
> Given the nesting that you''re doing multi-level nesting (which is
not
> recommended btw - read
> http://weblog.jamisbuck.org/2007/2/5/nesting-resources), I believe
> that the path should be either:
>
> customer_project_actor_path(@customer, @project, @actor)
>
> or
>
> customer_project_actors_path(@customer, @project)
>
> HTH,
> David
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
--
Scott Sehlhorst, President Tyner Blain LLC
http://tynerblain.com/blog
http://tynerblain.com/nexus
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://rubyforge.org/pipermail/rspec-users/attachments/20070910/a229d0fe/attachment.html
Lance Carlson
2007-Sep-21 18:02 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
BTW I know this is old, but did you know you can do this?
iink_to a.name, [@customer,
@project],,{:class=>"show",:title=>"Show> actor details"} ?
I''m having trouble mocking this my view specs right now as it is
giving me errors, but it works fine in rails edge. I will report on my
discoveries if anyone has figured out how to deal with this new way to
call polymorphic path helpers. any takers? My error is as follows:
1)
ActionView::TemplateError in ''Label Page should have a link to add a
new artist''
edit_label_url failed to generate from {:action=>"edit",
:controller=>"labels", :id=>#<Label:0x..fdb3c5798
@name="Label_1000">}, expected:
{:controller=>"labels",
:action=>"edit"}, diff: {:id=>#<Label:0x..fdb3c5798
@name="Label_1000">}
On line #3 of app/views/labels/show.rhtml
3: <%= link_to ''Edit'', [ @label, :edit ] %><br
/>
On 9/10/07, Scott Sehlhorst <scott at tynerblain.com>
wrote:> Thanks very much. I feel like a bit of a fool, now, for the odd error.
>
> Changing from:
> <%> link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> actor details"}) -%>
> To
> <%> link_to(a.name,actor_path(@customer, at
project,a),{:class=>"show",:title=>"Show
> actor details"}) -%>
>
> Caused everything to work like a champ. And uncovered an interesting bug.
> When not specifying the actor ''a'', the link is generated
(in the page), but
> with id=1. No idea if/when I would have caught that.
>
> Thanks again David, and all the RSpec''ers out there.
>
> Also, thanks for the multi-nesting pointer.
>
> Scott
>
>
>
> On 9/10/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> > On 9/10/07, Scott Sehlhorst < scott at tynerblain.com> wrote:
> > > Thanks, first, to everyone who''s asked and answered
questions on this
> list,
> > > and to the creators of RSpec - it is all very helpful.
I''ve searched
> the
> > > mailing list, and had a couple 2hr googling sessions that
didn''t help me
> > > find an answer.
> > >
> > > I''ve run into a problem getting my first non-trivial
view spec to run.
> I
> > > get an error when trying to generate a link_to() to another
resource.
> Here
> > > is an overview of the situation, then the code:
> > >
> > >
> > > I''m using a restful design
> > > I''m using nested (multiply nested) resources
> > > I am trying to test a show.rhtml view, that includes links
(link_to) to
> > > resources managed by another controller
> > > The use_case model has a many-to-may through relationship with
actors,
> and
> > > I''m displaying links to the associated actors on the
use_case page
> > > I can''t get the links to generate when running rspec
(but it works great
> in
> > > the app)
> > > I am in the early stages of the project, and want to move forward
BDD,
> but I
> > > have some existing code that I need to test before I can start
moving
> > > forward again.
> > > My theories: I need to stub the controller (for the other
resource), or
> I
> > > need to stub something else.
> > >
> > > Here''s the command I''m running to drive RSpec
> > >
> > > ruby script/spec -f s spec/views
> > >
> > > Here''s the error that I get
> > >
> > > 1)
> > > ActionView::TemplateError in ''UseCase showing a use case
should display
> the
> > > use case identifier''
> > > actor_url failed to generate from
{:customer_id=>"1",
> > > :controller=>"actors", :action=>"show",
:project_id=>"1"}, expecte
> > > d: {:controller=>"actors",
:action=>"show"}, diff: {:customer_id=>"1",
> > > :project_id=>"1"}
> > > On line #22 of app/views/use_cases/show.rhtml
> > >
> > > 19: <ul>
> > > 20: <% @primary_actors.each do |a| %>
> > > 21: <li>
> > > 22: <%> > >
> link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > > actor details"}) -%>
> > > 23: <%= link_to("Remove
> > >
> assignment",participation_path(@customer, at project, at
use_case.participations.find_by
> > >
_actor_id(a)),{:class=>"delete",:title=>"Remove the
> > > assignment of this actor to this use case", :confirm =>
''Are you sur
> > > e you want to remove this assignment?'', :method =>
:delete})-%>
> > > 24: </li>
> > > 25: <% end %>
> > >
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > > `raise_named_route_error''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in
> > > `generate''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in
> > > `rewrite_path''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
> > > `rewrite''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in
> > > `url_for''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in
> > > `url_for''
> > > (eval):19:in `actor_path''
> > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in
> > > `_run_rhtml_47app47views47use_cases47show46rhtml''
> > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in
> > > `_run_rhtml_47app47views47use_cases47show46rhtml''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in
> > > `compile_and_render_template''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in
> > > `render_template''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in
> > > `render_file''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in
> > > `render_file''
> > >
> > >
> #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in
> > > `render_with_no_layout''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in
> > > `render_without_benchmark''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > `render''
> > > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in
> `measure''
> > >
> > >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > `render''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in
> > > `render''
> > > spec/views/use_cases/show_view_spec.rb:40
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in
> > > `proc''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in
> > > `proc''
> > >
> > >
> C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in
> > > `before_example''
> > >
> > >
> C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in
> > > `run''
> > > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout''
> > >
> > >
> C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in
> > > `run''
> > >
> > >
> C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in
> > > `run''
> > >
> > >
> C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in
> > > `run''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in
> > > `run_behaviours''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in
> > > `run_behaviours''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in
> > > `run''
> > >
> > >
>
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in
> > > `run''
> > > script/spec:4
> > >
> > > Here''s part of my routes.rb, showing the nested
resources
> > >
> > > map.resources :customers do |customers|
> > > customers.resources :projects do |projects|
> > > projects.resources :actors
> > > projects.resources :use_cases
> > >
> > >
> > > Here''s some of the stubbing that I am using to set up
the spec
> > >
> > > @customer = mock_model(Customer,
> > > :id => 1,
> > > :to_param => "1"
> > > )
> > >
> > > @project = mock_model(Project,
> > > :id => 1,
> > > :customer_id => 1,
> > > :to_param => "1"
> > > )
> > >
> > > I''ve also stubbed objects to create the following
:assigns
> > >
> > > assigns[:customer] = @customer
> > > assigns[:project] = @project
> > > assigns[:use_case] = @use_case
> > > assigns[:primary_actors] = @primary_actors
> > >
> > > I suspect that there is something else that needs to be stubbed -
actors
> > > controller, maybe? I really don''t know. If anyone can
point me in the
> > > right direction, or tell me where in the error message to dig
deeper,
> that
> > > would be awesome.
> > >
> > > If I left out any important information, please let me know! And
a huge
> > > thanks in advance to anyone who can help me out, or explain why
this
> isn''t
> > > supported, or point me towards any docs or articles that address
this
> issue
> > > (because I will have it a zillion times, as almost all views in
my app
> > > display content and links from more than one model).
> >
> > I don''t think it''s related to rspec. Note that the
top of the error stack
> says:
> >
> >
>
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > `raise_named_route_error''
> >
> > So the error is likely related to this bit:
> >
> > actor_path(@customer, at project)
> >
> > Given the nesting that you''re doing multi-level nesting
(which is not
> > recommended btw - read
> > http://weblog.jamisbuck.org/2007/2/5/nesting-resources),
> I believe
> > that the path should be either:
> >
> > customer_project_actor_path(@customer, @project, @actor)
> >
> > or
> >
> > customer_project_actors_path(@customer, @project)
> >
> > HTH,
> > David
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
>
>
>
> --
> Scott Sehlhorst, President Tyner Blain LLC
> http://tynerblain.com/blog
> http://tynerblain.com/nexus
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>
Lance Carlson
2007-Sep-21 18:04 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
BTW I also tried this:
template.stub!(:edit_label_url).and_return('''')
but the same error continues to persist
On 9/21/07, Lance Carlson <lancecarlson at gmail.com>
wrote:> BTW I know this is old, but did you know you can do this?
>
> iink_to a.name, [@customer,
@project],,{:class=>"show",:title=>"Show
> > actor details"} ?
>
> I''m having trouble mocking this my view specs right now as it is
> giving me errors, but it works fine in rails edge. I will report on my
> discoveries if anyone has figured out how to deal with this new way to
> call polymorphic path helpers. any takers? My error is as follows:
>
>
> 1)
> ActionView::TemplateError in ''Label Page should have a link to add
a new artist''
> edit_label_url failed to generate from {:action=>"edit",
> :controller=>"labels", :id=>#<Label:0x..fdb3c5798
> @name="Label_1000">}, expected:
{:controller=>"labels",
> :action=>"edit"}, diff: {:id=>#<Label:0x..fdb3c5798
> @name="Label_1000">}
> On line #3 of app/views/labels/show.rhtml
>
> 3: <%= link_to ''Edit'', [ @label, :edit ]
%><br />
>
> On 9/10/07, Scott Sehlhorst <scott at tynerblain.com> wrote:
> > Thanks very much. I feel like a bit of a fool, now, for the odd
error.
> >
> > Changing from:
> > <%> > link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > actor details"}) -%>
> > To
> > <%> > link_to(a.name,actor_path(@customer, at
project,a),{:class=>"show",:title=>"Show
> > actor details"}) -%>
> >
> > Caused everything to work like a champ. And uncovered an interesting
bug.
> > When not specifying the actor ''a'', the link is
generated (in the page), but
> > with id=1. No idea if/when I would have caught that.
> >
> > Thanks again David, and all the RSpec''ers out there.
> >
> > Also, thanks for the multi-nesting pointer.
> >
> > Scott
> >
> >
> >
> > On 9/10/07, David Chelimsky <dchelimsky at gmail.com> wrote:
> > > On 9/10/07, Scott Sehlhorst < scott at tynerblain.com>
wrote:
> > > > Thanks, first, to everyone who''s asked and answered
questions on this
> > list,
> > > > and to the creators of RSpec - it is all very helpful.
I''ve searched
> > the
> > > > mailing list, and had a couple 2hr googling sessions that
didn''t help me
> > > > find an answer.
> > > >
> > > > I''ve run into a problem getting my first
non-trivial view spec to run.
> > I
> > > > get an error when trying to generate a link_to() to another
resource.
> > Here
> > > > is an overview of the situation, then the code:
> > > >
> > > >
> > > > I''m using a restful design
> > > > I''m using nested (multiply nested) resources
> > > > I am trying to test a show.rhtml view, that includes links
(link_to) to
> > > > resources managed by another controller
> > > > The use_case model has a many-to-may through relationship
with actors,
> > and
> > > > I''m displaying links to the associated actors on
the use_case page
> > > > I can''t get the links to generate when running
rspec (but it works great
> > in
> > > > the app)
> > > > I am in the early stages of the project, and want to move
forward BDD,
> > but I
> > > > have some existing code that I need to test before I can
start moving
> > > > forward again.
> > > > My theories: I need to stub the controller (for the other
resource), or
> > I
> > > > need to stub something else.
> > > >
> > > > Here''s the command I''m running to drive
RSpec
> > > >
> > > > ruby script/spec -f s spec/views
> > > >
> > > > Here''s the error that I get
> > > >
> > > > 1)
> > > > ActionView::TemplateError in ''UseCase showing a use
case should display
> > the
> > > > use case identifier''
> > > > actor_url failed to generate from
{:customer_id=>"1",
> > > > :controller=>"actors",
:action=>"show", :project_id=>"1"}, expecte
> > > > d: {:controller=>"actors",
:action=>"show"}, diff: {:customer_id=>"1",
> > > > :project_id=>"1"}
> > > > On line #22 of app/views/use_cases/show.rhtml
> > > >
> > > > 19: <ul>
> > > > 20: <% @primary_actors.each do |a| %>
> > > > 21: <li>
> > > > 22: <%> > > >
> > link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > > > actor details"}) -%>
> > > > 23: <%= link_to("Remove
> > > >
> > assignment",participation_path(@customer, at project, at
use_case.participations.find_by
> > > >
_actor_id(a)),{:class=>"delete",:title=>"Remove the
> > > > assignment of this actor to this use case", :confirm
=> ''Are you sur
> > > > e you want to remove this assignment?'', :method
=> :delete})-%>
> > > > 24: </li>
> > > > 25: <% end %>
> > > >
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > > > `raise_named_route_error''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in
> > > > `generate''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in
> > > > `rewrite_path''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
> > > > `rewrite''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in
> > > > `url_for''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in
> > > > `url_for''
> > > > (eval):19:in `actor_path''
> > > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in
> > > > `_run_rhtml_47app47views47use_cases47show46rhtml''
> > > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in
> > > > `_run_rhtml_47app47views47use_cases47show46rhtml''
> > > >
> > > >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in
> > > > `compile_and_render_template''
> > > >
> > > >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in
> > > > `render_template''
> > > >
> > > >
> > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in
> > > > `render_file''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in
> > > > `render_file''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in
> > > > `render_with_no_layout''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in
> > > > `render_without_benchmark''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > > `render''
> > > > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in
> > `measure''
> > > >
> > > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > > `render''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in
> > > > `render''
> > > > spec/views/use_cases/show_view_spec.rb:40
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in
> > > > `proc''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in
> > > > `proc''
> > > >
> > > >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in
> > > > `before_example''
> > > >
> > > >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in
> > > > `run''
> > > > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in
`timeout''
> > > >
> > > >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in
> > > > `run''
> > > >
> > > >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in
> > > > `run''
> > > >
> > > >
> > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in
> > > > `run''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in
> > > > `run_behaviours''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in
> > > > `run_behaviours''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in
> > > > `run''
> > > >
> > > >
> >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in
> > > > `run''
> > > > script/spec:4
> > > >
> > > > Here''s part of my routes.rb, showing the nested
resources
> > > >
> > > > map.resources :customers do |customers|
> > > > customers.resources :projects do |projects|
> > > > projects.resources :actors
> > > > projects.resources :use_cases
> > > >
> > > >
> > > > Here''s some of the stubbing that I am using to set
up the spec
> > > >
> > > > @customer = mock_model(Customer,
> > > > :id => 1,
> > > > :to_param => "1"
> > > > )
> > > >
> > > > @project = mock_model(Project,
> > > > :id => 1,
> > > > :customer_id => 1,
> > > > :to_param => "1"
> > > > )
> > > >
> > > > I''ve also stubbed objects to create the following
:assigns
> > > >
> > > > assigns[:customer] = @customer
> > > > assigns[:project] = @project
> > > > assigns[:use_case] = @use_case
> > > > assigns[:primary_actors] = @primary_actors
> > > >
> > > > I suspect that there is something else that needs to be
stubbed - actors
> > > > controller, maybe? I really don''t know. If anyone
can point me in the
> > > > right direction, or tell me where in the error message to
dig deeper,
> > that
> > > > would be awesome.
> > > >
> > > > If I left out any important information, please let me know!
And a huge
> > > > thanks in advance to anyone who can help me out, or explain
why this
> > isn''t
> > > > supported, or point me towards any docs or articles that
address this
> > issue
> > > > (because I will have it a zillion times, as almost all views
in my app
> > > > display content and links from more than one model).
> > >
> > > I don''t think it''s related to rspec. Note that
the top of the error stack
> > says:
> > >
> > >
> >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > > `raise_named_route_error''
> > >
> > > So the error is likely related to this bit:
> > >
> > > actor_path(@customer, at project)
> > >
> > > Given the nesting that you''re doing multi-level nesting
(which is not
> > > recommended btw - read
> > > http://weblog.jamisbuck.org/2007/2/5/nesting-resources),
> > I believe
> > > that the path should be either:
> > >
> > > customer_project_actor_path(@customer, @project, @actor)
> > >
> > > or
> > >
> > > customer_project_actors_path(@customer, @project)
> > >
> > > HTH,
> > > David
> > > _______________________________________________
> > > rspec-users mailing list
> > > rspec-users at rubyforge.org
> > > http://rubyforge.org/mailman/listinfo/rspec-users
> > >
> >
> >
> >
> > --
> > Scott Sehlhorst, President Tyner Blain LLC
> > http://tynerblain.com/blog
> > http://tynerblain.com/nexus
> > _______________________________________________
> > rspec-users mailing list
> > rspec-users at rubyforge.org
> > http://rubyforge.org/mailman/listinfo/rspec-users
> >
>
Lance Carlson
2007-Sep-21 18:07 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
Wait I think the problem stemmed from the fact that I started to prefix all of my urls with :subdomain. Could this be a possibility? If so, how to get around this? On 9/21/07, Lance Carlson <lancecarlson at gmail.com> wrote:> BTW I also tried this: > > template.stub!(:edit_label_url).and_return('''') > > but the same error continues to persist > > On 9/21/07, Lance Carlson <lancecarlson at gmail.com> wrote: > > BTW I know this is old, but did you know you can do this? > > > > iink_to a.name, [@customer, @project],,{:class=>"show",:title=>"Show > > > actor details"} ? > > > > I''m having trouble mocking this my view specs right now as it is > > giving me errors, but it works fine in rails edge. I will report on my > > discoveries if anyone has figured out how to deal with this new way to > > call polymorphic path helpers. any takers? My error is as follows: > > > > > > 1) > > ActionView::TemplateError in ''Label Page should have a link to add a new artist'' > > edit_label_url failed to generate from {:action=>"edit", > > :controller=>"labels", :id=>#<Label:0x..fdb3c5798 > > @name="Label_1000">}, expected: {:controller=>"labels", > > :action=>"edit"}, diff: {:id=>#<Label:0x..fdb3c5798 > > @name="Label_1000">} > > On line #3 of app/views/labels/show.rhtml > > > > 3: <%= link_to ''Edit'', [ @label, :edit ] %><br /> > > > > On 9/10/07, Scott Sehlhorst <scott at tynerblain.com> wrote: > > > Thanks very much. I feel like a bit of a fool, now, for the odd error. > > > > > > Changing from: > > > <%> > > link_to(a.name,actor_path(@customer, at project),{:class=>"show",:title=>"Show > > > actor details"}) -%> > > > To > > > <%> > > link_to(a.name,actor_path(@customer, at project,a),{:class=>"show",:title=>"Show > > > actor details"}) -%> > > > > > > Caused everything to work like a champ. And uncovered an interesting bug. > > > When not specifying the actor ''a'', the link is generated (in the page), but > > > with id=1. No idea if/when I would have caught that. > > > > > > Thanks again David, and all the RSpec''ers out there. > > > > > > Also, thanks for the multi-nesting pointer. > > > > > > Scott > > > > > > > > > > > > On 9/10/07, David Chelimsky <dchelimsky at gmail.com> wrote: > > > > On 9/10/07, Scott Sehlhorst < scott at tynerblain.com> wrote: > > > > > Thanks, first, to everyone who''s asked and answered questions on this > > > list, > > > > > and to the creators of RSpec - it is all very helpful. I''ve searched > > > the > > > > > mailing list, and had a couple 2hr googling sessions that didn''t help me > > > > > find an answer. > > > > > > > > > > I''ve run into a problem getting my first non-trivial view spec to run. > > > I > > > > > get an error when trying to generate a link_to() to another resource. > > > Here > > > > > is an overview of the situation, then the code: > > > > > > > > > > > > > > > I''m using a restful design > > > > > I''m using nested (multiply nested) resources > > > > > I am trying to test a show.rhtml view, that includes links (link_to) to > > > > > resources managed by another controller > > > > > The use_case model has a many-to-may through relationship with actors, > > > and > > > > > I''m displaying links to the associated actors on the use_case page > > > > > I can''t get the links to generate when running rspec (but it works great > > > in > > > > > the app) > > > > > I am in the early stages of the project, and want to move forward BDD, > > > but I > > > > > have some existing code that I need to test before I can start moving > > > > > forward again. > > > > > My theories: I need to stub the controller (for the other resource), or > > > I > > > > > need to stub something else. > > > > > > > > > > Here''s the command I''m running to drive RSpec > > > > > > > > > > ruby script/spec -f s spec/views > > > > > > > > > > Here''s the error that I get > > > > > > > > > > 1) > > > > > ActionView::TemplateError in ''UseCase showing a use case should display > > > the > > > > > use case identifier'' > > > > > actor_url failed to generate from {:customer_id=>"1", > > > > > :controller=>"actors", :action=>"show", :project_id=>"1"}, expecte > > > > > d: {:controller=>"actors", :action=>"show"}, diff: {:customer_id=>"1", > > > > > :project_id=>"1"} > > > > > On line #22 of app/views/use_cases/show.rhtml > > > > > > > > > > 19: <ul> > > > > > 20: <% @primary_actors.each do |a| %> > > > > > 21: <li> > > > > > 22: <%> > > > > > > > link_to(a.name,actor_path(@customer, at project),{:class=>"show",:title=>"Show > > > > > actor details"}) -%> > > > > > 23: <%= link_to("Remove > > > > > > > > assignment",participation_path(@customer, at project, at use_case.participations.find_by > > > > > _actor_id(a)),{:class=>"delete",:title=>"Remove the > > > > > assignment of this actor to this use case", :confirm => ''Are you sur > > > > > e you want to remove this assignment?'', :method => :delete})-%> > > > > > 24: </li> > > > > > 25: <% end %> > > > > > > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in > > > > > `raise_named_route_error'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in > > > > > `generate'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in > > > > > `rewrite_path'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in > > > > > `rewrite'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in > > > > > `url_for'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in > > > > > `url_for'' > > > > > (eval):19:in `actor_path'' > > > > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in > > > > > `_run_rhtml_47app47views47use_cases47show46rhtml'' > > > > > #{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in > > > > > `_run_rhtml_47app47views47use_cases47show46rhtml'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in > > > > > `compile_and_render_template'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in > > > > > `render_template'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in > > > > > `render_file'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in > > > > > `render_file'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in > > > > > `render_with_no_layout'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in > > > > > `render_without_benchmark'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in > > > > > `render'' > > > > > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in > > > `measure'' > > > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in > > > > > `render'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in > > > > > `render'' > > > > > spec/views/use_cases/show_view_spec.rb:40 > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in > > > > > `proc'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in > > > > > `proc'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in > > > > > `before_example'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in > > > > > `run'' > > > > > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in `timeout'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in > > > > > `run'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in > > > > > `run'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in > > > > > `run'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in > > > > > `run_behaviours'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in > > > > > `run_behaviours'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in > > > > > `run'' > > > > > > > > > > > > > C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in > > > > > `run'' > > > > > script/spec:4 > > > > > > > > > > Here''s part of my routes.rb, showing the nested resources > > > > > > > > > > map.resources :customers do |customers| > > > > > customers.resources :projects do |projects| > > > > > projects.resources :actors > > > > > projects.resources :use_cases > > > > > > > > > > > > > > > Here''s some of the stubbing that I am using to set up the spec > > > > > > > > > > @customer = mock_model(Customer, > > > > > :id => 1, > > > > > :to_param => "1" > > > > > ) > > > > > > > > > > @project = mock_model(Project, > > > > > :id => 1, > > > > > :customer_id => 1, > > > > > :to_param => "1" > > > > > ) > > > > > > > > > > I''ve also stubbed objects to create the following :assigns > > > > > > > > > > assigns[:customer] = @customer > > > > > assigns[:project] = @project > > > > > assigns[:use_case] = @use_case > > > > > assigns[:primary_actors] = @primary_actors > > > > > > > > > > I suspect that there is something else that needs to be stubbed - actors > > > > > controller, maybe? I really don''t know. If anyone can point me in the > > > > > right direction, or tell me where in the error message to dig deeper, > > > that > > > > > would be awesome. > > > > > > > > > > If I left out any important information, please let me know! And a huge > > > > > thanks in advance to anyone who can help me out, or explain why this > > > isn''t > > > > > supported, or point me towards any docs or articles that address this > > > issue > > > > > (because I will have it a zillion times, as almost all views in my app > > > > > display content and links from more than one model). > > > > > > > > I don''t think it''s related to rspec. Note that the top of the error stack > > > says: > > > > > > > > > > > #{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in > > > > `raise_named_route_error'' > > > > > > > > So the error is likely related to this bit: > > > > > > > > actor_path(@customer, at project) > > > > > > > > Given the nesting that you''re doing multi-level nesting (which is not > > > > recommended btw - read > > > > http://weblog.jamisbuck.org/2007/2/5/nesting-resources), > > > I believe > > > > that the path should be either: > > > > > > > > customer_project_actor_path(@customer, @project, @actor) > > > > > > > > or > > > > > > > > customer_project_actors_path(@customer, @project) > > > > > > > > HTH, > > > > David > > > > _______________________________________________ > > > > rspec-users mailing list > > > > rspec-users at rubyforge.org > > > > http://rubyforge.org/mailman/listinfo/rspec-users > > > > > > > > > > > > > > > > -- > > > Scott Sehlhorst, President Tyner Blain LLC > > > http://tynerblain.com/blog > > > http://tynerblain.com/nexus > > > _______________________________________________ > > > rspec-users mailing list > > > rspec-users at rubyforge.org > > > http://rubyforge.org/mailman/listinfo/rspec-users > > > > > >
Lance Carlson
2007-Sep-21 18:08 UTC
[rspec-users] RSpec view spec writing problem (unable to generate url_for in RESTful resource link_to)
wow nevermind :)
assigns[:subdomain] = ''test''
On 9/21/07, Lance Carlson <lancecarlson at gmail.com>
wrote:> Wait I think the problem stemmed from the fact that I started to
> prefix all of my urls with :subdomain. Could this be a possibility? If
> so, how to get around this?
>
> On 9/21/07, Lance Carlson <lancecarlson at gmail.com> wrote:
> > BTW I also tried this:
> >
> > template.stub!(:edit_label_url).and_return('''')
> >
> > but the same error continues to persist
> >
> > On 9/21/07, Lance Carlson <lancecarlson at gmail.com> wrote:
> > > BTW I know this is old, but did you know you can do this?
> > >
> > > iink_to a.name, [@customer,
@project],,{:class=>"show",:title=>"Show
> > > > actor details"} ?
> > >
> > > I''m having trouble mocking this my view specs right now
as it is
> > > giving me errors, but it works fine in rails edge. I will report
on my
> > > discoveries if anyone has figured out how to deal with this new
way to
> > > call polymorphic path helpers. any takers? My error is as
follows:
> > >
> > >
> > > 1)
> > > ActionView::TemplateError in ''Label Page should have a
link to add a new artist''
> > > edit_label_url failed to generate from
{:action=>"edit",
> > > :controller=>"labels",
:id=>#<Label:0x..fdb3c5798
> > > @name="Label_1000">}, expected:
{:controller=>"labels",
> > > :action=>"edit"}, diff:
{:id=>#<Label:0x..fdb3c5798
> > > @name="Label_1000">}
> > > On line #3 of app/views/labels/show.rhtml
> > >
> > > 3: <%= link_to ''Edit'', [ @label, :edit ]
%><br />
> > >
> > > On 9/10/07, Scott Sehlhorst <scott at tynerblain.com>
wrote:
> > > > Thanks very much. I feel like a bit of a fool, now, for the
odd error.
> > > >
> > > > Changing from:
> > > > <%> > > >
link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > > > actor details"}) -%>
> > > > To
> > > > <%> > > >
link_to(a.name,actor_path(@customer, at
project,a),{:class=>"show",:title=>"Show
> > > > actor details"}) -%>
> > > >
> > > > Caused everything to work like a champ. And uncovered an
interesting bug.
> > > > When not specifying the actor ''a'', the
link is generated (in the page), but
> > > > with id=1. No idea if/when I would have caught that.
> > > >
> > > > Thanks again David, and all the RSpec''ers out
there.
> > > >
> > > > Also, thanks for the multi-nesting pointer.
> > > >
> > > > Scott
> > > >
> > > >
> > > >
> > > > On 9/10/07, David Chelimsky <dchelimsky at gmail.com>
wrote:
> > > > > On 9/10/07, Scott Sehlhorst < scott at
tynerblain.com> wrote:
> > > > > > Thanks, first, to everyone who''s asked
and answered questions on this
> > > > list,
> > > > > > and to the creators of RSpec - it is all very
helpful. I''ve searched
> > > > the
> > > > > > mailing list, and had a couple 2hr googling
sessions that didn''t help me
> > > > > > find an answer.
> > > > > >
> > > > > > I''ve run into a problem getting my first
non-trivial view spec to run.
> > > > I
> > > > > > get an error when trying to generate a link_to()
to another resource.
> > > > Here
> > > > > > is an overview of the situation, then the code:
> > > > > >
> > > > > >
> > > > > > I''m using a restful design
> > > > > > I''m using nested (multiply nested)
resources
> > > > > > I am trying to test a show.rhtml view, that
includes links (link_to) to
> > > > > > resources managed by another controller
> > > > > > The use_case model has a many-to-may through
relationship with actors,
> > > > and
> > > > > > I''m displaying links to the associated
actors on the use_case page
> > > > > > I can''t get the links to generate when
running rspec (but it works great
> > > > in
> > > > > > the app)
> > > > > > I am in the early stages of the project, and want
to move forward BDD,
> > > > but I
> > > > > > have some existing code that I need to test before
I can start moving
> > > > > > forward again.
> > > > > > My theories: I need to stub the controller (for
the other resource), or
> > > > I
> > > > > > need to stub something else.
> > > > > >
> > > > > > Here''s the command I''m running
to drive RSpec
> > > > > >
> > > > > > ruby script/spec -f s spec/views
> > > > > >
> > > > > > Here''s the error that I get
> > > > > >
> > > > > > 1)
> > > > > > ActionView::TemplateError in ''UseCase
showing a use case should display
> > > > the
> > > > > > use case identifier''
> > > > > > actor_url failed to generate from
{:customer_id=>"1",
> > > > > > :controller=>"actors",
:action=>"show", :project_id=>"1"}, expecte
> > > > > > d: {:controller=>"actors",
:action=>"show"}, diff: {:customer_id=>"1",
> > > > > > :project_id=>"1"}
> > > > > > On line #22 of app/views/use_cases/show.rhtml
> > > > > >
> > > > > > 19: <ul>
> > > > > > 20: <% @primary_actors.each do |a|
%>
> > > > > > 21: <li>
> > > > > > 22: <%> > > > >
>
> > > > link_to(a.name,actor_path(@customer, at
project),{:class=>"show",:title=>"Show
> > > > > > actor details"}) -%>
> > > > > > 23: <%= link_to("Remove
> > > > > >
> > > > assignment",participation_path(@customer, at project,
at use_case.participations.find_by
> > > > > >
_actor_id(a)),{:class=>"delete",:title=>"Remove the
> > > > > > assignment of this actor to this use case",
:confirm => ''Are you sur
> > > > > > e you want to remove this assignment?'',
:method => :delete})-%>
> > > > > > 24: </li>
> > > > > > 25: <% end %>
> > > > > >
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > > > > > `raise_named_route_error''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1245:in
> > > > > > `generate''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:104:in
> > > > > > `rewrite_path''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/url_rewriter.rb:69:in
> > > > > > `rewrite''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:522:in
> > > > > > `url_for''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/helpers/url_helper.rb:27:in
> > > > > > `url_for''
> > > > > > (eval):19:in `actor_path''
> > > > > >
#{RAILS_ROOT}/app/views/use_cases/show.rhtml:22:in
> > > > > >
`_run_rhtml_47app47views47use_cases47show46rhtml''
> > > > > >
#{RAILS_ROOT}/app/views/use_cases/show.rhtml:20:in
> > > > > >
`_run_rhtml_47app47views47use_cases47show46rhtml''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:326:in
> > > > > > `compile_and_render_template''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:301:in
> > > > > > `render_template''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_view/base.rb:260:in
> > > > > > `render_file''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:806:in
> > > > > > `render_file''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/base.rb:741:in
> > > > > > `render_with_no_layout''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/layout.rb:256:in
> > > > > > `render_without_benchmark''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > > > > `render''
> > > > > > c:/dev/ruby/lib/ruby/1.8/benchmark.rb:293:in
> > > > `measure''
> > > > > >
> > > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/benchmarking.rb:50:in
> > > > > > `render''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec_on_rails/lib/spec/rails/dsl/behaviour/view.rb:55:in
> > > > > > `render''
> > > > > > spec/views/use_cases/show_view_spec.rb:40
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:17:in
> > > > > > `proc''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/composite_proc_builder.rb:12:in
> > > > > > `proc''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:71:in
> > > > > > `before_example''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:25:in
> > > > > > `run''
> > > > > > c:/dev/ruby/lib/ruby/1.8/timeout.rb:48:in
`timeout''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/example.rb:24:in
> > > > > > `run''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:81:in
> > > > > > `run''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/dsl/behaviour.rb:75:in
> > > > > > `run''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:58:in
> > > > > > `run_behaviours''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:57:in
> > > > > > `run_behaviours''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/behaviour_runner.rb:21:in
> > > > > > `run''
> > > > > >
> > > > > >
> > > >
C:/dev/svn/sherpa/vendor/plugins/rspec/lib/spec/runner/command_line.rb:17:in
> > > > > > `run''
> > > > > > script/spec:4
> > > > > >
> > > > > > Here''s part of my routes.rb, showing the
nested resources
> > > > > >
> > > > > > map.resources :customers do |customers|
> > > > > > customers.resources :projects do |projects|
> > > > > > projects.resources :actors
> > > > > > projects.resources :use_cases
> > > > > >
> > > > > >
> > > > > > Here''s some of the stubbing that I am
using to set up the spec
> > > > > >
> > > > > > @customer = mock_model(Customer,
> > > > > > :id => 1,
> > > > > > :to_param => "1"
> > > > > > )
> > > > > >
> > > > > > @project = mock_model(Project,
> > > > > > :id => 1,
> > > > > > :customer_id => 1,
> > > > > > :to_param => "1"
> > > > > > )
> > > > > >
> > > > > > I''ve also stubbed objects to create the
following :assigns
> > > > > >
> > > > > > assigns[:customer] = @customer
> > > > > > assigns[:project] = @project
> > > > > > assigns[:use_case] = @use_case
> > > > > > assigns[:primary_actors] = @primary_actors
> > > > > >
> > > > > > I suspect that there is something else that needs
to be stubbed - actors
> > > > > > controller, maybe? I really don''t know.
If anyone can point me in the
> > > > > > right direction, or tell me where in the error
message to dig deeper,
> > > > that
> > > > > > would be awesome.
> > > > > >
> > > > > > If I left out any important information, please
let me know! And a huge
> > > > > > thanks in advance to anyone who can help me out,
or explain why this
> > > > isn''t
> > > > > > supported, or point me towards any docs or
articles that address this
> > > > issue
> > > > > > (because I will have it a zillion times, as almost
all views in my app
> > > > > > display content and links from more than one
model).
> > > > >
> > > > > I don''t think it''s related to rspec.
Note that the top of the error stack
> > > > says:
> > > > >
> > > > >
> > > >
#{RAILS_ROOT}/vendor/rails/actionpack/lib/action_controller/routing.rb:1273:in
> > > > > `raise_named_route_error''
> > > > >
> > > > > So the error is likely related to this bit:
> > > > >
> > > > > actor_path(@customer, at project)
> > > > >
> > > > > Given the nesting that you''re doing
multi-level nesting (which is not
> > > > > recommended btw - read
> > > > >
http://weblog.jamisbuck.org/2007/2/5/nesting-resources),
> > > > I believe
> > > > > that the path should be either:
> > > > >
> > > > > customer_project_actor_path(@customer, @project,
@actor)
> > > > >
> > > > > or
> > > > >
> > > > > customer_project_actors_path(@customer, @project)
> > > > >
> > > > > HTH,
> > > > > David
> > > > > _______________________________________________
> > > > > rspec-users mailing list
> > > > > rspec-users at rubyforge.org
> > > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > > >
> > > >
> > > >
> > > >
> > > > --
> > > > Scott Sehlhorst, President Tyner Blain LLC
> > > > http://tynerblain.com/blog
> > > > http://tynerblain.com/nexus
> > > > _______________________________________________
> > > > rspec-users mailing list
> > > > rspec-users at rubyforge.org
> > > > http://rubyforge.org/mailman/listinfo/rspec-users
> > > >
> > >
> >
>