From: David Chelimsky Date: 2008-01-04T03:18:03+09:00 Subject: Re: [ANN] RSpec-1.1.0 is released On Jan 3, 2008 12:46 PM, Dante Regis wrote: > Does anyone knows how to use stories with Rails? Maybe a rake task, or even > a command. I would like to try it out, never used something like user > stories. Appears to be interesting. Just use :type => RailsStory in with_steps_for: with_steps_for :foo do run 'path/to/story/file', :type => RailsStory end Cheers, David > > Thanks, > Dante > > > On Dec 14, 2007 4:01 AM, Pat Maddox wrote: > > > On Dec 13, 2007 9:58 PM, David Chelimsky wrote: > > > > > > The RSpec Development Team is pleased as glug (that's kind of like > > > punch, but more festive) to announce RSpec-1.1.0. > > > > > > Thanks to all who have contributed patches over the last few months. > > > Big thanks to Dan North and Brian Takita for their important work on > > > this release. Dan contributed his rbehave framework which is now the > > > Story Runner. Brian patiently did a TON of refactoring around > > > interoperability with Test::Unit, and the result is a much cleaner > > > RSpec core, and a clean adapter model that gets loaded when Test::Unit > > > is on the path. > > > > > > == RSpec 1.1 brings four significant changes for RSpec users: > > > > > > * The RSpec Story Runner > > > * Nested Example Groups > > > * Support for Rails 2.0.1 > > > * Test::Unit interoperability > > > > > > == Story Runner > > > > > > The RSpec Story Runner is Dan North's rbehave framework merged into > > > RSpec. The Story Runner is a framework for expressing high level > > > requirements in the form of executable User Stories with Scenarios > > > that represent Customer Acceptance Tests. > > > > > > RSpec 1.1 also ships with a Ruby on Rails extension called RailsStory, > > > which lets you write executable user stories for your rails apps as > > > well. > > > > > > == Nested Example Groups > > > > > > Now you can nest groups to organize things a bit better: > > > > > > describe RubyDeveloper do > > > > > > before(:each) do > > > @ruby_developer = RubyDeveloper.new > > > end > > > > > > describe "using RSpec 1.1.0" do > > > > > > before(:each) do > > > @ruby_developer.use_rspec('1.1.0') > > > end > > > > > > it "should be able to nest example groups" do > > > @ruby_developer.should be_able_to_nest_example_groups > > > end > > > > > > end > > > > > > describe "using RSpec 1.0.1" do > > > > > > before(:each) do > > > @ruby_developer.use_rspec('1.0.8') > > > end > > > > > > it "should not be able to nest example groups" do > > > @ruby_developer.should_not be_able_to_nest_example_groups > > > end > > > > > > end > > > > > > end > > > > > > Running this outputs: > > > > > > RubyDeveloper using RSpec 1.1.0 > > > - should be able to nest example groups > > > > > > RubyDeveloper using RSpec 1.0.8 > > > - should not be able to nest example groups > > > > > > == Support for Rails 2.0.1 > > > > > > gem install rails > > > rails myapp > > > ruby script/install http://rspec.rubyforge.org/svn/tags/REL_1_1_0/rspec > > > ruby script/install > > http://rspec.rubyforge.org/svn/tags/REL_1_1_0/rspec_on_rails > > > script/generate rspec > > > > > > == Test::Unit Interoperability > > > > > > Contrary to popular belief, Spec::Rails, RSpec's Ruby on Rails plugin, > > > has been a Test::Unit wrapper since the the 0.7 release in November of > > > 2006. RSpec 1.1 ups the ante though, offering a smooth transition from > > > Test::Unit to RSpec with or without Rails: > > > > > > 1. Start with a TestCase: > > > > > > require 'test/unit' > > > > > > class TransitionTest < Test::Unit::TestCase > > > def test_should_be_smooth > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup" > > > ) > > > assert_equal "really smooth", transition.in_practice > > > end > > > end > > > 2. Require 'spec' > > > > > > require 'test/unit' > > > require 'spec' > > > > > > class TransitionTest < Test::Unit::TestCase > > > def test_should_be_smooth > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup" > > > ) > > > assert_equal "really smooth", transition.in_practice > > > end > > > end > > > 3. Convert TestCase to ExampleGroup > > > > > > require 'test/unit' > > > require 'spec' > > > > > > describe "transitioning from TestCase to ExampleGroup" do > > > def test_should_be_smooth > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup" > > > ) > > > assert_equal "really smooth", transition.in_practice > > > end > > > end > > > 4. Convert test methods to examples > > > > > > require 'test/unit' > > > require 'spec' > > > > > > describe "transitioning from TestCase to ExampleGroup" do > > > it "should be smooth" do > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup" > > > ) > > > assert_equal "really smooth", transition.in_practice > > > end > > > end > > > 5. Convert assertions to expectations > > > > > > require 'test/unit' > > > require 'spec' > > > > > > describe "transitioning from TestCase to ExampleGroup" do > > > it "should be smooth" do > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup") > > > transition.in_practice.should == "really smooth" > > > end > > > end > > > 6. Un-require test/unit > > > > > > require 'spec' > > > > > > describe "transitioning from TestCase to ExampleGroup" do > > > it "should be smooth" do > > > transition = Transition.new( > > > :from => "Test::Unit::TestCase", > > > :to => "Spec::ExampleGroup" > > > ) > > > transition.in_practice.should == "really smooth" > > > end > > > end > > > At every one of these steps after step 2, you can run the file with > > > the ruby command and you'll be getting RSpec's developer friendly > > > output. This means that you can transition things as gradually as you > > > like: no wholesale changes. > > > > > > That's the story. Thanks again to all who contributed and to all who > > > continue do so. > > > > > > > > > > Congratulations!! Very cool. > > > > Pat > > > > >