[rspec-users] authentication, controller specs. I think I'm missing something simple ....

Joe Van Dyk joevandyk at gmail.com
Sat Jun 9 17:34:47 EDT 2007


Your pasties have wrapped lines in them for some reason, which makes
matching up the errors to the lines of code difficult.

On 6/9/07, Rick Tessner <rick.tessner at gmail.com> wrote:
> Hi all,
>
> I feel like I'm missing something really easy and I'm just not seeing
> it.
>
> I'm using the restful_authentication plugin and have a User model.  Uesr
> has_many :things and Thing belongs_to :user.
>
> That's it.
>
> I did a "script/generate rspec_scaffold thing" to generate all the
> necessary bits.  The "rake db:migrate" to create the db.
>
> At this point, a "rake spec" works just fine.  All specs pass.
>
> I add in the "include AuthenticatedSystem" in the ThingsController and
> add a line to the "before" section in each of the describe stanzas that
> reads:
>
>         controller.should_receive(:login_required).with(no_args).once.and_return(true)
>
> All tests pass just fine at this point as well.
>
> It's this next part where I get really confused about how the spec
> should be written.
>
> What I change in the controller itself (and at this point, all methods
> are the default generated by the scaffold) is to add scoping of the
> current user to the finds:
>
> For example, the "index" method becomes (to find all things for the
> current user)
>
>   @things = current_user.things.find(:all)
>
> rather than
>
>   @things = Thing.find(:all)
>
> I run "rake spec" and of course it fails.  So, I try to mock/stub the
> current_user and add a stub for the things method on it and it's at this
> point that I feel like I'm missing something fundamental since I get
> many many failures of various types.
>
>         LocalJumpError in 'ThingsController handling GET /things should
>         render index template'
>         no block given
>
> is the major error.  If I remove the "find(:all)" a number of these
> LocalJumpErrors disappear.  I am interested in how to resolve the
> LocalJumpError issue tho since I'm sure it will be a use-case that crops
> up in my application.
>
> The basic issue I'm struggling with is how does define mocks/stubs for a
> controller method that does something of the form:
>
>   method_a.method_b.find
>
> Pasted code/spec/errors here
>
>       * things_controller http://pastie.caboo.se/69136
>       * things_controller_spec http://pastie.caboo.se/69137
>       * Errors w/ find(:all)  http://pastie.caboo.se/69138
>
> --
> Rick
> rick.tessner at gmail.com
>
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
>


More information about the rspec-users mailing list