Hi all, Are there any plans for better documentation for the new StoryRunner feature? I tried to use it today (with Rails), and had a hard time getting my head around whether I was doing it "right" and exactly what things are appropriate to test at that level (this might be exacerbated by the fact that I''ve never really used integration testing that much). A full example of testing a Rails controller would be extremely useful to me. Thanks, Jon -- Jonathan Leighton, Web Developer http://jonathanleighton.com/
Yeah, this is truly needed, you have a second from me. Nathan Sutton fowlduck at gmail.com rspec 1.1 rspec_on_rails 1.1 rails 2.0.1 On Dec 21, 2007, at 1:59 PM, Jonathan Leighton wrote:> Hi all, > > Are there any plans for better documentation for the new StoryRunner > feature? I tried to use it today (with Rails), and had a hard time > getting my head around whether I was doing it "right" and exactly what > things are appropriate to test at that level (this might be > exacerbated > by the fact that I''ve never really used integration testing that > much). > A full example of testing a Rails controller would be extremely useful > to me. > > Thanks, > > Jon > > -- > Jonathan Leighton, Web Developer > http://jonathanleighton.com/ > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
On 21 Dec 2007, at 19:59, Jonathan Leighton wrote:> Hi all, > > Are there any plans for better documentation for the new StoryRunner > feature? I tried to use it today (with Rails), and had a hard time > getting my head around whether I was doing it "right" and exactly what > things are appropriate to test at that level (this might be > exacerbated > by the fact that I''ve never really used integration testing that > much). > A full example of testing a Rails controller would be extremely useful > to me.No idea whether I''m doing it right either, but I''ve posted my experiences, with some sample code, here: http://www.kerrybuckley.com/2007/11/07/driving-selenium-from-the-rspec-story-runner-rbehave/ Obviously the bits that force it to use rspec trunk from an odd directory aren''t needed any more. Hope it helps, Kerry
I just went through this myself yesterday, and was considering posting an article on my blog, but figured it''d be too short lived, once the doc page is up on the rspec site. So I''ll post here what I''ve cobbled together from various other articles, emails, and generous help on #rspec. 1. DECIDE A DIRECTORY STRUCTURE AND FILL OUT helper.rb Directory structure: stories/ stories/steps/ stories/stories/ stories/stories/foo stories/stories/foo/a_foo_story stories/stories/foo/a_foo_story.rb stories/stories/foo/another_foo_story stories/stories/foo/another_foo_story.rb stories/all.rb stories/helper.rb File: stories/helper.rb: ENV["RAILS_ENV"] = "test" require File.expand_path(File.dirname(__FILE__) + "/../config/ environment") require ''spec/rails/story_adapter'' Dir[''stories/steps/**/*.rb''].each do |steps_file| require steps_file end # add extra include''s and helper methods here include FixtureReplacement 2. WRITE A SHORT TEXT STORY File: stories/stories/admin/admin_accounts Story: admin user manages accounts As an admin user I want site-wide access to accounts, projects, and users So I can create and modify items Scenario: admin user logs in Given an admin user and account And a bunch of accounts setup When user logs in with email: admin at example.com and password: secret Then browser should show the Admin page And browser should show the Accounts table 3. WRITE A rb SCRIPT FOR THE STORY File: stories/stories/admin/admin_accounts.rb require File.join(File.dirname(__FILE__), "../../helper") with_steps_for :misc do run File.expand_path(__FILE__).gsub(".rb",""), :type => RailsStory end For other stories, just copy this file, and add/change the steps groups as required. The rest of the file is unchanged (it gets the text story filename from its own name.) 3.A And Run It: $ ruby stories/stories/admin/admin_accounts.rb should show 1 scenarios: 0 succeeded, 0 failed, 1 pending 4. CODE THE STEPS To start, I put all my steps into a "miscellaneous" steps file until patterns emerge when I''ll separate them out into different steps files File: stores/steps/misc_steps.rb steps_for(:misc) do Given "an admin user and account" do @user = create_user( :email => "admin at example.com", :password => ''secret'', :site_admin => true) end Given "a bunch of accounts setup" do 4.times do create_account end end When "user logs in with email: $email and password: $password" do | email, password| post_via_redirect "/sessions", :email => email, :password => password, :account => account response.should be_success session[:user].should == @user.id # should_be_logged_in(@user) end Then "browser should show the $h1_contents page" do |h1_contents| response.should have_tag("h1", h1_contents) end Then "browser should show the $table_name table" do |table_name| response.should have_tag("div h2", table_name) end end 4.A And Run It $ ruby stories/stories/admin/admin_accounts.rb or $ ruby stories/all.rb --linoj On Dec 21, 2007, at 2:59 PM, Jonathan Leighton wrote:> Hi all, > > Are there any plans for better documentation for the new StoryRunner > feature? I tried to use it today (with Rails), and had a hard time > getting my head around whether I was doing it "right" and exactly what > things are appropriate to test at that level (this might be > exacerbated > by the fact that I''ve never really used integration testing that > much). > A full example of testing a Rails controller would be extremely useful > to me. > > Thanks, > > Jon > > -- > Jonathan Leighton, Web Developer > http://jonathanleighton.com/ > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users
I never really thought of placing subdirectories in the stories directory. I guess that would be useful for separating your administrative stories for the back end of your app. I named my stories in the following convention: #role#_#action#_story.rb eg: user_creates_project_story.rb user_edits_project_story.rb user_deletes_project_story.rb user_views_project_story.rb On Dec 21, 2007 6:40 PM, Jonathan Linowes <jonathan at parkerhill.com> wrote:> I just went through this myself yesterday, and was considering > posting an article on my blog, but figured it''d be too short lived, > once the doc page is up on the rspec site. So I''ll post here what > I''ve cobbled together from various other articles, emails, and > generous help on #rspec. > > 1. DECIDE A DIRECTORY STRUCTURE AND FILL OUT helper.rb > Directory structure: > stories/ > stories/steps/ > stories/stories/ > stories/stories/foo > stories/stories/foo/a_foo_story > stories/stories/foo/a_foo_story.rb > stories/stories/foo/another_foo_story > stories/stories/foo/another_foo_story.rb > stories/all.rb > stories/helper.rb > > File: stories/helper.rb: > > ENV["RAILS_ENV"] = "test" > require File.expand_path(File.dirname(__FILE__) + "/../config/ > environment") > require ''spec/rails/story_adapter'' > > Dir[''stories/steps/**/*.rb''].each do |steps_file| > require steps_file > end > > # add extra include''s and helper methods here > include FixtureReplacement > > > 2. WRITE A SHORT TEXT STORY > > File: stories/stories/admin/admin_accounts > > Story: admin user manages accounts > As an admin user > I want site-wide access to accounts, projects, and users > So I can create and modify items > > Scenario: admin user logs in > Given an admin user and account > And a bunch of accounts setup > When user logs in with email: admin at example.com and password: > secret > Then browser should show the Admin page > And browser should show the Accounts table > > > 3. WRITE A rb SCRIPT FOR THE STORY > > File: stories/stories/admin/admin_accounts.rb > > require File.join(File.dirname(__FILE__), "../../helper") > > with_steps_for :misc do > run File.expand_path(__FILE__).gsub(".rb",""), :type => RailsStory > end > > For other stories, just copy this file, and add/change the steps > groups as required. The rest of the file is unchanged (it gets the > text story filename from its own name.) > > > 3.A And Run It: > > $ ruby stories/stories/admin/admin_accounts.rb > > should show 1 scenarios: 0 succeeded, 0 failed, 1 pending > > > 4. CODE THE STEPS > To start, I put all my steps into a "miscellaneous" steps file until > patterns emerge when I''ll separate them out into different steps files > > File: stores/steps/misc_steps.rb > > steps_for(:misc) do > Given "an admin user and account" do > @user = create_user( :email => "admin at example.com", :password => > ''secret'', :site_admin => true) > end > > Given "a bunch of accounts setup" do > 4.times do > create_account > end > end > > When "user logs in with email: $email and password: $password" do | > email, password| > post_via_redirect "/sessions", :email => email, :password => > password, :account => account > response.should be_success > session[:user].should == @user.id # should_be_logged_in(@user) > end > > Then "browser should show the $h1_contents page" do |h1_contents| > response.should have_tag("h1", h1_contents) > end > > Then "browser should show the $table_name table" do |table_name| > response.should have_tag("div h2", table_name) > end > end > > 4.A And Run It > > $ ruby stories/stories/admin/admin_accounts.rb > or > $ ruby stories/all.rb > > > > > --linoj > > > > > > On Dec 21, 2007, at 2:59 PM, Jonathan Leighton wrote: > > > Hi all, > > > > Are there any plans for better documentation for the new StoryRunner > > feature? I tried to use it today (with Rails), and had a hard time > > getting my head around whether I was doing it "right" and exactly what > > things are appropriate to test at that level (this might be > > exacerbated > > by the fact that I''ve never really used integration testing that > > much). > > A full example of testing a Rails controller would be extremely useful > > to me. > > > > Thanks, > > > > Jon > > > > -- > > Jonathan Leighton, Web Developer > > http://jonathanleighton.com/ > > > > _______________________________________________ > > rspec-users mailing list > > rspec-users at rubyforge.org > > http://rubyforge.org/mailman/listinfo/rspec-users > > _______________________________________________ > rspec-users mailing list > rspec-users at rubyforge.org > http://rubyforge.org/mailman/listinfo/rspec-users >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://rubyforge.org/pipermail/rspec-users/attachments/20071222/807d5f9b/attachment.html