[rspec-users] How would I spec this? --Rails subscriptions

Matt Wynne matt at mattwynne.net
Tue Apr 21 03:21:06 EDT 2009


On 21 Apr 2009, at 00:34, Colfer, Brian wrote:

>
> I have a set of users
> And a set of things … podcasts
> Users should get a page that shows all of the podcassts with a check  
> box
> If they are subscribed then the check box is checked
>
> Users table has first_name, last_name, user_name
> Podcats table has podcast_name, description, url
> Subscriptions table has user_id, podcast_id, subscription_type
>
>
> Would the view go in the subscription views?
>
> Is this a index view?
>
>
> How do I mock out the view?
>
> I think I want to spec something so that I set up three mock models  
> for  podcasts:
>
>
>  before(:each) do
>     assigns[:user] = @user = stub_model(User,
>             :new_record? => false,
>             :user_id => 1,
>             :first_name => "Fred",
>             :last_name => "Flintstone",
>             :user_name => "fflintstone"
>     )
>     assings[:repository] = @repository = [stub_model(Podcast,
>             :new_record? => false,
>             :name => "podcast1",
>             :host => "podcast.podcast.com",
>
>     ),
>             stub_model(Podcast,
>             :new_record? => false,
>             :name => "podcast2",
>             :host => "podcast.podcast.com",
>     ),
>             stub_model(Podcast,
>             :new_record? => false,
>             :name => "podcast3",
>             :host => "podcast.podcast.com",
>     )
> ]
>     assigns[:subscription] = @subscription =  
> [ stub_model(Subscription,
>       :new_record? => false,
>       :user_id => 1,
>       :podcast_id => 1
>     ),
>     stub_model(Subscription,
>       :new_record? => false,
>       :user_id => 1,
>       :podcast_id => 2
>     )]
>   end
>
>  then look to make sure that it renders all of the podcasts and the  
> ones that are subscribed subscribed checkbox is selected:
>
> It "should render the subscriber select form" do
>   render
>
>    # now what?
>
>   end
>
>
> Thanks
>
>
> Brian Colfer
>

I am going to go out on a limb...

I would suggest, if you have, time, that you do some research on using  
Cucumber to express these specifications instead. These are precisely  
the kind of brittle view tests (smelled by the large amounts of  
mocking set up required) that I built loads of myself 9 months ago  
when I first started with RSpec (and before I discovered Cucumber) and  
have spent the last 6 months, once I'd learned better, dismantling  
again and replacing with much more flexible, readable, Cucumber  
features.

Sorry, I know that's not a direct answer to your question, but you  
might thank me for it eventually.

If you want some help learning Cucumber, try these resources:
http://cukes.info/
http://wiki.github.com/aslakhellesoy/cucumber

Hope that helps.

Matt Wynne
http://blog.mattwynne.net
http://www.songkick.com



More information about the rspec-users mailing list