test_spec_on_rails 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +5 -0
 - data/CHANGELOG +21 -0
 - data/README.markdown +247 -0
 - data/Rakefile +40 -0
 - data/VERSION +1 -0
 - data/lib/generators/controller/USAGE +29 -0
 - data/lib/generators/controller/controller_generator.rb +37 -0
 - data/lib/generators/controller/templates/controller.rb +10 -0
 - data/lib/generators/controller/templates/functional_test.rb +8 -0
 - data/lib/generators/controller/templates/helper.rb +2 -0
 - data/lib/generators/controller/templates/view.html.erb +2 -0
 - data/lib/generators/model/USAGE +27 -0
 - data/lib/generators/model/model_generator.rb +45 -0
 - data/lib/generators/model/templates/fixtures.yml +19 -0
 - data/lib/generators/model/templates/migration.rb +16 -0
 - data/lib/generators/model/templates/model.rb +2 -0
 - data/lib/generators/model/templates/unit_test.rb +8 -0
 - data/lib/test/spec/rails.rb +30 -0
 - data/lib/test/spec/rails/convenience.rb +38 -0
 - data/lib/test/spec/rails/dummy_response.rb +21 -0
 - data/lib/test/spec/rails/should_redirect.rb +33 -0
 - data/lib/test/spec/rails/should_render.rb +25 -0
 - data/lib/test/spec/rails/should_route.rb +34 -0
 - data/lib/test/spec/rails/should_select.rb +53 -0
 - data/lib/test/spec/rails/should_validate.rb +16 -0
 - data/lib/test/spec/rails/should_validate_presence_of.rb +27 -0
 - data/lib/test/spec/rails/test_dummy.rb +46 -0
 - data/lib/test/spec/rails/test_layout.rb +15 -0
 - data/lib/test/spec/rails/test_spec_ext.rb +48 -0
 - data/lib/test/spec/rails/test_status.rb +15 -0
 - data/lib/test/spec/rails/test_template.rb +14 -0
 - data/lib/test/spec/rails/test_unit_ext.rb +32 -0
 - data/lib/test/spec/rails/test_url.rb +25 -0
 - data/lib/test/spec/rails/use_controller.rb +51 -0
 - data/tasks/spec.rake +15 -0
 - data/test/test/spec/rails/test_status_test.rb +22 -0
 - data/test/test_helper.rb +6 -0
 - metadata +92 -0
 
    
        data/.gitignore
    ADDED
    
    
    
        data/CHANGELOG
    ADDED
    
    | 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            12/03/09 - Is now a gem [Matthew Bass]
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            07/01/08 - should.render now takes optional response code [Matthew Bass]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            06/28/08 - Added should.render for testing template rendering [Matthew Bass]
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            05/15/08 - First pass at overriding generators to produce specs [Matthew Bass]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            03/18/08 - it_should_validate_presence_of helper added [Matthew Bass]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            03/12/08 - layout.should.be nil is now supported [Rob Sanheim]
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            03/11/08 - Added content_type attr to dummy response for Rails 2.0 [Jason Rudolph]
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            03/06/08 - Added should.differ(:method).by wrapper for assert_difference [Matthew Bass]
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            02/18/08 - Added Rakefile, began adding tests [Matthew Bass]
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            02/08/08 - Added support for route checking (i.e. assert_generates) [Jason Rudolph]
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            01/10/08 - Added CHANGELOG and LICENSE [Matthew Bass]
         
     | 
    
        data/README.markdown
    ADDED
    
    | 
         @@ -0,0 +1,247 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            test/spec/rails
         
     | 
| 
      
 2 
     | 
    
         
            +
            ---------------
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            This plugin contain some helpers to test your Rails app using test/spec.
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            Installation
         
     | 
| 
      
 7 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             * Install test/spec: gem install test-spec
         
     | 
| 
      
 10 
     | 
    
         
            +
             * Install test/spec/rails
         
     | 
| 
      
 11 
     | 
    
         
            +
             * require 'test/spec/rails' in your test_helper.rb
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
            Dependencies
         
     | 
| 
      
 15 
     | 
    
         
            +
            ------------
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            If you want to run the plugin's tests, you'll need these gems:
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
             * multi_rails
         
     | 
| 
      
 20 
     | 
    
         
            +
             * mocha
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            Then run "rake test:multi_rails:all" from the root of the project. The tests will be
         
     | 
| 
      
 23 
     | 
    
         
            +
            executed against each version of Rails you have installed on your system.
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            Source
         
     | 
| 
      
 27 
     | 
    
         
            +
            ------
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              test/spec/rails uses Git for source control. If you're running edge Rails you can install with:
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
                  script/plugin install git://github.com/pelargir/test_spec_on_rails.git
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              Otherwise just clone the project directly:
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                  git clone git://github.com/pelargir/test_spec_on_rails.git vendor/plugins/test_spec_on_rails
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            Model validation
         
     | 
| 
      
 39 
     | 
    
         
            +
            ----------------
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                  @user.should.validate
         
     | 
| 
      
 42 
     | 
    
         
            +
                  @user.should.not.validate
         
     | 
| 
      
 43 
     | 
    
         
            +
                  
         
     | 
| 
      
 44 
     | 
    
         
            +
                  OR:
         
     | 
| 
      
 45 
     | 
    
         
            +
                  
         
     | 
| 
      
 46 
     | 
    
         
            +
                  @user.should.be.validated
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @user.should.not.be.validated
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            Redirection
         
     | 
| 
      
 51 
     | 
    
         
            +
            -----------
         
     | 
| 
      
 52 
     | 
    
         
            +
             
     | 
| 
      
 53 
     | 
    
         
            +
                  response.should.be.redirected           # assert_response :redirect
         
     | 
| 
      
 54 
     | 
    
         
            +
                  response.should.redirect foo_url(@foo)  # assert_redirected_to foo_url(@foo)
         
     | 
| 
      
 55 
     | 
    
         
            +
                  should.redirect_to :action => 'show'    # because "response" is optional
         
     | 
| 
      
 56 
     | 
    
         
            +
              
         
     | 
| 
      
 57 
     | 
    
         
            +
              It's aliased as redirect, redirect_to, redirected and redirected_to
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
            Output verification
         
     | 
| 
      
 61 
     | 
    
         
            +
            -------------------
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
              Wrapper for assert_select:
         
     | 
| 
      
 64 
     | 
    
         
            +
              
         
     | 
| 
      
 65 
     | 
    
         
            +
                  get :show
         
     | 
| 
      
 66 
     | 
    
         
            +
                  page.should.select "form#user_form" # require the output to have a <form id="user_form">
         
     | 
| 
      
 67 
     | 
    
         
            +
                  # you can also do:
         
     | 
| 
      
 68 
     | 
    
         
            +
                  page.should.have "form#user_form"
         
     | 
| 
      
 69 
     | 
    
         
            +
                  page.should.contain "form#user_form"
         
     | 
| 
      
 70 
     | 
    
         
            +
                  
         
     | 
| 
      
 71 
     | 
    
         
            +
                  page.should.select "form#user_form" do |form|
         
     | 
| 
      
 72 
     | 
    
         
            +
                    # the user_form must include a <input type="submit">
         
     | 
| 
      
 73 
     | 
    
         
            +
                    form.should.select "input[type=submit]"       
         
     | 
| 
      
 74 
     | 
    
         
            +
                  end
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
             
     | 
| 
      
 77 
     | 
    
         
            +
            HTTP Status
         
     | 
| 
      
 78 
     | 
    
         
            +
            -----------
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              Wrapper for assert_response:
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                  status.should.be :success
         
     | 
| 
      
 83 
     | 
    
         
            +
                  status.should.be 200
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            Which template was rendered?
         
     | 
| 
      
 87 
     | 
    
         
            +
            ----------------------------
         
     | 
| 
      
 88 
     | 
    
         
            +
             
     | 
| 
      
 89 
     | 
    
         
            +
              Wrapper for assert_template:
         
     | 
| 
      
 90 
     | 
    
         
            +
              
         
     | 
| 
      
 91 
     | 
    
         
            +
                  template.should.be "foo/show.rhtml"
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            Which layout used?
         
     | 
| 
      
 95 
     | 
    
         
            +
            ------------------
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
              Wrapper for asserting that a certain layout is used:
         
     | 
| 
      
 98 
     | 
    
         
            +
              
         
     | 
| 
      
 99 
     | 
    
         
            +
                  layout.should.be "foo"
         
     | 
| 
      
 100 
     | 
    
         
            +
             
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            URL testing
         
     | 
| 
      
 103 
     | 
    
         
            +
            -----------
         
     | 
| 
      
 104 
     | 
    
         
            +
             
     | 
| 
      
 105 
     | 
    
         
            +
                  get :show, :user_id => 1
         
     | 
| 
      
 106 
     | 
    
         
            +
                  url.should.be "/users/1"
         
     | 
| 
      
 107 
     | 
    
         
            +
                  url.should.be :controller => "users", :action => "show", :user_id => 1
         
     | 
| 
      
 108 
     | 
    
         
            +
                  
         
     | 
| 
      
 109 
     | 
    
         
            +
             
     | 
| 
      
 110 
     | 
    
         
            +
            Difference
         
     | 
| 
      
 111 
     | 
    
         
            +
            ----------
         
     | 
| 
      
 112 
     | 
    
         
            +
             
     | 
| 
      
 113 
     | 
    
         
            +
              Wrapper for assert_difference:
         
     | 
| 
      
 114 
     | 
    
         
            +
              
         
     | 
| 
      
 115 
     | 
    
         
            +
                  Article.should.differ(:count).by(2) { blah }
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
             
     | 
| 
      
 118 
     | 
    
         
            +
            Routing to set of url options from a given path (i.e., #assert_generates)
         
     | 
| 
      
 119 
     | 
    
         
            +
            -------------------------------------------------------------------------
         
     | 
| 
      
 120 
     | 
    
         
            +
             
     | 
| 
      
 121 
     | 
    
         
            +
                  assert_generates "/users/1", :controller => "users", :action => "show", :id  => "1"
         
     | 
| 
      
 122 
     | 
    
         
            +
                
         
     | 
| 
      
 123 
     | 
    
         
            +
              BECOMES 
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  {:controller => "users", :action => "show", :id  => "1"}.should.route_to "/users/1"
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
             
     | 
| 
      
 128 
     | 
    
         
            +
            Routing from a set of url options to an expected path (i.e., #assert_recognizes)
         
     | 
| 
      
 129 
     | 
    
         
            +
            --------------------------------------------------------------------------------
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                  assert_recognizes({:controller => "users", :action => "show", :id => "1"}, {:path => "/users/1", :method => :get})
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
              BECOMES
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                  {:path => "/users/1", :method => :get}.should.route_from :controller => "users", :action => "show", :id =>"1"
         
     | 
| 
      
 136 
     | 
    
         
            +
             
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            Setup controller for testing + example usage
         
     | 
| 
      
 139 
     | 
    
         
            +
            --------------------------------------------
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
                  context "A guest" do
         
     | 
| 
      
 142 
     | 
    
         
            +
                    use_controller FooController # => you can also do use_controller :foo
         
     | 
| 
      
 143 
     | 
    
         
            +
                
         
     | 
| 
      
 144 
     | 
    
         
            +
                    specify "isn't allowed to foo" do
         
     | 
| 
      
 145 
     | 
    
         
            +
                      post :create, :foo => 'bar'
         
     | 
| 
      
 146 
     | 
    
         
            +
                      flash[:error].should.not.be.blank
         
     | 
| 
      
 147 
     | 
    
         
            +
                      response.should.redirect :controller => 'front', :action => 'show'
         
     | 
| 
      
 148 
     | 
    
         
            +
                      assigns(:foo).errors.on(:bar).should.not.be.blank
         
     | 
| 
      
 149 
     | 
    
         
            +
                      assigns(:foo).should.not.validate
         
     | 
| 
      
 150 
     | 
    
         
            +
                      follow_redirect
         
     | 
| 
      
 151 
     | 
    
         
            +
                      page.should.select "#errors", :text => /#{flash[:error]}/
         
     | 
| 
      
 152 
     | 
    
         
            +
                    end
         
     | 
| 
      
 153 
     | 
    
         
            +
                  end
         
     | 
| 
      
 154 
     | 
    
         
            +
              
         
     | 
| 
      
 155 
     | 
    
         
            +
                  context "Tuxie" do
         
     | 
| 
      
 156 
     | 
    
         
            +
                    setup do
         
     | 
| 
      
 157 
     | 
    
         
            +
                      use_controller FooController
         
     | 
| 
      
 158 
     | 
    
         
            +
                      login_as :tuxie
         
     | 
| 
      
 159 
     | 
    
         
            +
                    end
         
     | 
| 
      
 160 
     | 
    
         
            +
                
         
     | 
| 
      
 161 
     | 
    
         
            +
                    specify "may foo" do
         
     | 
| 
      
 162 
     | 
    
         
            +
                      post :create, :foo => 'bar'
         
     | 
| 
      
 163 
     | 
    
         
            +
                      flash[:notice].should.not.be.blank
         
     | 
| 
      
 164 
     | 
    
         
            +
                      assigns(:foo).errors.should.be.empty
         
     | 
| 
      
 165 
     | 
    
         
            +
                      assigns(:foo).should.validate
         
     | 
| 
      
 166 
     | 
    
         
            +
                      should.redirect_to :action => 'show'
         
     | 
| 
      
 167 
     | 
    
         
            +
                      follow_redirect
         
     | 
| 
      
 168 
     | 
    
         
            +
                      page.should.select "#notice", :text => /#{flash[:notice]}/
         
     | 
| 
      
 169 
     | 
    
         
            +
                    end
         
     | 
| 
      
 170 
     | 
    
         
            +
                  end
         
     | 
| 
      
 171 
     | 
    
         
            +
             
     | 
| 
      
 172 
     | 
    
         
            +
             
     | 
| 
      
 173 
     | 
    
         
            +
            Misc
         
     | 
| 
      
 174 
     | 
    
         
            +
            ----
         
     | 
| 
      
 175 
     | 
    
         
            +
             
     | 
| 
      
 176 
     | 
    
         
            +
              page, response and request are just aliases for self (the TestCase) so the following
         
     | 
| 
      
 177 
     | 
    
         
            +
              are functionally identical:
         
     | 
| 
      
 178 
     | 
    
         
            +
              
         
     | 
| 
      
 179 
     | 
    
         
            +
                  page.should.redirect
         
     | 
| 
      
 180 
     | 
    
         
            +
                  response.should.redirect
         
     | 
| 
      
 181 
     | 
    
         
            +
                  request.should.redirect
         
     | 
| 
      
 182 
     | 
    
         
            +
              
         
     | 
| 
      
 183 
     | 
    
         
            +
              output, body, html and xhtml return @response.body so the following lines are identical:
         
     | 
| 
      
 184 
     | 
    
         
            +
              
         
     | 
| 
      
 185 
     | 
    
         
            +
                  output.should.match /foo/
         
     | 
| 
      
 186 
     | 
    
         
            +
                  html.should.match /foo/
         
     | 
| 
      
 187 
     | 
    
         
            +
                  xhtml.should.match /foo/
         
     | 
| 
      
 188 
     | 
    
         
            +
                  body.should.match /foo/
         
     | 
| 
      
 189 
     | 
    
         
            +
              
         
     | 
| 
      
 190 
     | 
    
         
            +
              If an object respond to #should_equal, that method will be used instead of assert_equal
         
     | 
| 
      
 191 
     | 
    
         
            +
              when using foo.should.equal(bar) or foo.should.be(bar)
         
     | 
| 
      
 192 
     | 
    
         
            +
              foo.should.not.equal and foo.should.not.be look for #should_not_equal
         
     | 
| 
      
 193 
     | 
    
         
            +
             
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
            Convenience and Shortcut methods
         
     | 
| 
      
 196 
     | 
    
         
            +
            --------------------------------
         
     | 
| 
      
 197 
     | 
    
         
            +
             
     | 
| 
      
 198 
     | 
    
         
            +
            Typing in should.not.be.nil all the time can be tiresome and overwhelming, here are some shortcuts that you can use.
         
     | 
| 
      
 199 
     | 
    
         
            +
             
     | 
| 
      
 200 
     | 
    
         
            +
                INSTEAD OF:
         
     | 
| 
      
 201 
     | 
    
         
            +
                
         
     | 
| 
      
 202 
     | 
    
         
            +
                  assigns(:var).should.not.be.nil
         
     | 
| 
      
 203 
     | 
    
         
            +
                
         
     | 
| 
      
 204 
     | 
    
         
            +
                DO:
         
     | 
| 
      
 205 
     | 
    
         
            +
              
         
     | 
| 
      
 206 
     | 
    
         
            +
                  has(:var) # => assigns(:var).should.not.be.nil
         
     | 
| 
      
 207 
     | 
    
         
            +
                
         
     | 
| 
      
 208 
     | 
    
         
            +
                OR pass multiple variables to test:
         
     | 
| 
      
 209 
     | 
    
         
            +
                
         
     | 
| 
      
 210 
     | 
    
         
            +
                  has :var, :page_title # => assigns(:var).should.not.be.nil
         
     | 
| 
      
 211 
     | 
    
         
            +
                                        # => assigns(:page_title).should.not.be.nil
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
            Likewise you can test for the non existence of the variable using cant_have :
         
     | 
| 
      
 214 
     | 
    
         
            +
             
     | 
| 
      
 215 
     | 
    
         
            +
               INSTEAD OF:
         
     | 
| 
      
 216 
     | 
    
         
            +
               
         
     | 
| 
      
 217 
     | 
    
         
            +
                  assigns(:var).should.be.nil
         
     | 
| 
      
 218 
     | 
    
         
            +
                  
         
     | 
| 
      
 219 
     | 
    
         
            +
               DO:    
         
     | 
| 
      
 220 
     | 
    
         
            +
               
         
     | 
| 
      
 221 
     | 
    
         
            +
                  cant_have :var
         
     | 
| 
      
 222 
     | 
    
         
            +
                  
         
     | 
| 
      
 223 
     | 
    
         
            +
               OR pass multiple variables to test:
         
     | 
| 
      
 224 
     | 
    
         
            +
              
         
     | 
| 
      
 225 
     | 
    
         
            +
                  cant_have :var, :page_title
         
     | 
| 
      
 226 
     | 
    
         
            +
              
         
     | 
| 
      
 227 
     | 
    
         
            +
            Shortcuts for checking on flash values:
         
     | 
| 
      
 228 
     | 
    
         
            +
             
     | 
| 
      
 229 
     | 
    
         
            +
               INSTEAD OF:
         
     | 
| 
      
 230 
     | 
    
         
            +
                
         
     | 
| 
      
 231 
     | 
    
         
            +
                  flash[:notice].should.not.be.nil
         
     | 
| 
      
 232 
     | 
    
         
            +
                  
         
     | 
| 
      
 233 
     | 
    
         
            +
               DO: 
         
     | 
| 
      
 234 
     | 
    
         
            +
                
         
     | 
| 
      
 235 
     | 
    
         
            +
                  has_flash :notice
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
      
 237 
     | 
    
         
            +
            Sometimes you might want to set the HTTP_REFERER variable when testing response.should.redirect, here's
         
     | 
| 
      
 238 
     | 
    
         
            +
            an easy way to do it:
         
     | 
| 
      
 239 
     | 
    
         
            +
             
     | 
| 
      
 240 
     | 
    
         
            +
                set_redirect_back "/your/path"
         
     | 
| 
      
 241 
     | 
    
         
            +
                
         
     | 
| 
      
 242 
     | 
    
         
            +
            Credit
         
     | 
| 
      
 243 
     | 
    
         
            +
            ------
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
             * Created by Per "Tuxie" Wigren <per.wigren@gmail.com>
         
     | 
| 
      
 246 
     | 
    
         
            +
             * Enhanced by Rick Olson <technoweenie@gmail.com>
         
     | 
| 
      
 247 
     | 
    
         
            +
             * Currently maintained by Matthew Bass <pelargir@gmail.com>
         
     | 
    
        data/Rakefile
    ADDED
    
    | 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rubygems'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require 'load_multi_rails_rake_tasks'
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            desc 'Default: run unit tests.'
         
     | 
| 
      
 8 
     | 
    
         
            +
            task :default => :test
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            desc 'Test the test_spec_on_rails plugin.'
         
     | 
| 
      
 11 
     | 
    
         
            +
            Rake::TestTask.new(:test) do |t|
         
     | 
| 
      
 12 
     | 
    
         
            +
              t.libs << 'lib'
         
     | 
| 
      
 13 
     | 
    
         
            +
              t.pattern = 'test/**/*_test.rb'
         
     | 
| 
      
 14 
     | 
    
         
            +
              t.verbose = true
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc 'Generate documentation for the test_spec_on_rails plugin.'
         
     | 
| 
      
 18 
     | 
    
         
            +
            Rake::RDocTask.new(:rdoc) do |rdoc|
         
     | 
| 
      
 19 
     | 
    
         
            +
              rdoc.rdoc_dir = 'rdoc'
         
     | 
| 
      
 20 
     | 
    
         
            +
              rdoc.title    = 'ResponseVisualizer'
         
     | 
| 
      
 21 
     | 
    
         
            +
              rdoc.options << '--line-numbers' << '--inline-source'
         
     | 
| 
      
 22 
     | 
    
         
            +
              rdoc.rdoc_files.include('README')
         
     | 
| 
      
 23 
     | 
    
         
            +
              rdoc.rdoc_files.include('lib/**/*.rb')
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            begin
         
     | 
| 
      
 27 
     | 
    
         
            +
              require 'jeweler'
         
     | 
| 
      
 28 
     | 
    
         
            +
              Jeweler::Tasks.new do |gemspec|
         
     | 
| 
      
 29 
     | 
    
         
            +
                gemspec.name = "test_spec_on_rails"
         
     | 
| 
      
 30 
     | 
    
         
            +
                gemspec.summary = "Provides helpers to test your Rails app using test/spec."
         
     | 
| 
      
 31 
     | 
    
         
            +
                gemspec.description = "Provides helpers to test your Rails app using test/spec."
         
     | 
| 
      
 32 
     | 
    
         
            +
                gemspec.email = "pelargir@gmail.com"
         
     | 
| 
      
 33 
     | 
    
         
            +
                gemspec.homepage = "http://github.com/pelargir/test_spec_on_rails"
         
     | 
| 
      
 34 
     | 
    
         
            +
                gemspec.authors = ["Matthew Bass"]
         
     | 
| 
      
 35 
     | 
    
         
            +
              end
         
     | 
| 
      
 36 
     | 
    
         
            +
            rescue LoadError
         
     | 
| 
      
 37 
     | 
    
         
            +
              puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
         
     | 
| 
      
 38 
     | 
    
         
            +
            end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            Dir["#{File.dirname(__FILE__)}/tasks/*.rake"].sort.each { |ext| load ext }
         
     | 
    
        data/VERSION
    ADDED
    
    | 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            1.1.0
         
     | 
| 
         @@ -0,0 +1,29 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Description:
         
     | 
| 
      
 2 
     | 
    
         
            +
                Stubs out a new controller and its views. Pass the controller name, either
         
     | 
| 
      
 3 
     | 
    
         
            +
                CamelCased or under_scored, and a list of views as arguments.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                To create a controller within a module, specify the controller name as a
         
     | 
| 
      
 6 
     | 
    
         
            +
                path like 'parent_module/controller_name'.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                This generates a controller class in app/controllers, view templates in
         
     | 
| 
      
 9 
     | 
    
         
            +
                app/views/controller_name, a helper class in app/helpers, and a functional
         
     | 
| 
      
 10 
     | 
    
         
            +
                test suite in test/functional.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            Example:
         
     | 
| 
      
 13 
     | 
    
         
            +
                `./script/generate controller CreditCard open debit credit close`
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                Credit card controller with URLs like /credit_card/debit.
         
     | 
| 
      
 16 
     | 
    
         
            +
                    Controller: app/controllers/credit_card_controller.rb
         
     | 
| 
      
 17 
     | 
    
         
            +
                    Views:      app/views/credit_card/debit.html.erb [...]
         
     | 
| 
      
 18 
     | 
    
         
            +
                    Helper:     app/helpers/credit_card_helper.rb
         
     | 
| 
      
 19 
     | 
    
         
            +
                    Test:       test/functional/credit_card_controller_test.rb
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            Modules Example:
         
     | 
| 
      
 22 
     | 
    
         
            +
                `./script/generate controller 'admin/credit_card' suspend late_fee`
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                Credit card admin controller with URLs /admin/credit_card/suspend.
         
     | 
| 
      
 25 
     | 
    
         
            +
                    Controller: app/controllers/admin/credit_card_controller.rb
         
     | 
| 
      
 26 
     | 
    
         
            +
                    Views:      app/views/admin/credit_card/debit.html.erb [...]
         
     | 
| 
      
 27 
     | 
    
         
            +
                    Helper:     app/helpers/admin/credit_card_helper.rb
         
     | 
| 
      
 28 
     | 
    
         
            +
                    Test:       test/functional/admin/credit_card_controller_test.rb
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,37 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ControllerGenerator < Rails::Generator::NamedBase
         
     | 
| 
      
 2 
     | 
    
         
            +
              def manifest
         
     | 
| 
      
 3 
     | 
    
         
            +
                record do |m|
         
     | 
| 
      
 4 
     | 
    
         
            +
                  # Check for class naming collisions.
         
     | 
| 
      
 5 
     | 
    
         
            +
                  m.class_collisions class_path, "#{class_name}Controller", "#{class_name}ControllerTest", "#{class_name}Helper"
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  # Controller, helper, views, and test directories.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  m.directory File.join('app/controllers', class_path)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  m.directory File.join('app/helpers', class_path)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  m.directory File.join('app/views', class_path, file_name)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  m.directory File.join('test/functional', class_path)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  # Controller class, functional test, and helper class.
         
     | 
| 
      
 14 
     | 
    
         
            +
                  m.template 'controller.rb',
         
     | 
| 
      
 15 
     | 
    
         
            +
                              File.join('app/controllers',
         
     | 
| 
      
 16 
     | 
    
         
            +
                                        class_path,
         
     | 
| 
      
 17 
     | 
    
         
            +
                                        "#{file_name}_controller.rb")
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  m.template 'functional_test.rb',
         
     | 
| 
      
 20 
     | 
    
         
            +
                              File.join('test/functional',
         
     | 
| 
      
 21 
     | 
    
         
            +
                                        class_path,
         
     | 
| 
      
 22 
     | 
    
         
            +
                                        "#{file_name}_controller_test.rb")
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
                  m.template 'helper.rb',
         
     | 
| 
      
 25 
     | 
    
         
            +
                              File.join('app/helpers',
         
     | 
| 
      
 26 
     | 
    
         
            +
                                        class_path,
         
     | 
| 
      
 27 
     | 
    
         
            +
                                        "#{file_name}_helper.rb")
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  # View template for each action.
         
     | 
| 
      
 30 
     | 
    
         
            +
                  actions.each do |action|
         
     | 
| 
      
 31 
     | 
    
         
            +
                    path = File.join('app/views', class_path, file_name, "#{action}.html.erb")
         
     | 
| 
      
 32 
     | 
    
         
            +
                    m.template 'view.html.erb', path,
         
     | 
| 
      
 33 
     | 
    
         
            +
                      :assigns => { :action => action, :path => path }
         
     | 
| 
      
 34 
     | 
    
         
            +
                  end
         
     | 
| 
      
 35 
     | 
    
         
            +
                end
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Description:
         
     | 
| 
      
 2 
     | 
    
         
            +
                Stubs out a new model. Pass the model name, either CamelCased or
         
     | 
| 
      
 3 
     | 
    
         
            +
                under_scored, and an optional list of attribute pairs as arguments.
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                Attribute pairs are column_name:sql_type arguments specifying the
         
     | 
| 
      
 6 
     | 
    
         
            +
                model's attributes. Timestamps are added by default, so you don't have to
         
     | 
| 
      
 7 
     | 
    
         
            +
                specify them by hand as 'created_at:datetime updated_at:datetime'.
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                You don't have to think up every attribute up front, but it helps to
         
     | 
| 
      
 10 
     | 
    
         
            +
                sketch out a few so you can start working with the model immediately.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
                This generates a model class in app/models, a unit test in test/unit,
         
     | 
| 
      
 13 
     | 
    
         
            +
                a test fixture in test/fixtures/singular_name.yml, and a migration in
         
     | 
| 
      
 14 
     | 
    
         
            +
                db/migrate.
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            Examples:
         
     | 
| 
      
 17 
     | 
    
         
            +
                `./script/generate model account`
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                    creates an Account model, test, fixture, and migration:
         
     | 
| 
      
 20 
     | 
    
         
            +
                        Model:      app/models/account.rb
         
     | 
| 
      
 21 
     | 
    
         
            +
                        Test:       test/unit/account_test.rb
         
     | 
| 
      
 22 
     | 
    
         
            +
                        Fixtures:   test/fixtures/accounts.yml
         
     | 
| 
      
 23 
     | 
    
         
            +
                        Migration:  db/migrate/XXX_add_accounts.rb
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                `./script/generate model post title:string body:text published:boolean`
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
                    creates a Post model with a string title, text body, and published flag.
         
     | 
| 
         @@ -0,0 +1,45 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class ModelGenerator < Rails::Generator::NamedBase
         
     | 
| 
      
 2 
     | 
    
         
            +
              default_options :skip_timestamps => false, :skip_migration => false, :skip_fixture => false
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              def manifest
         
     | 
| 
      
 5 
     | 
    
         
            +
                record do |m|
         
     | 
| 
      
 6 
     | 
    
         
            +
                  # Check for class naming collisions.
         
     | 
| 
      
 7 
     | 
    
         
            +
                  m.class_collisions class_path, class_name, "#{class_name}Test"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                  # Model, test, and fixture directories.
         
     | 
| 
      
 10 
     | 
    
         
            +
                  m.directory File.join('app/models', class_path)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  m.directory File.join('test/unit', class_path)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  m.directory File.join('test/fixtures', class_path)
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  # Model class, unit test, and fixtures.
         
     | 
| 
      
 15 
     | 
    
         
            +
                  m.template 'model.rb',      File.join('app/models', class_path, "#{file_name}.rb")
         
     | 
| 
      
 16 
     | 
    
         
            +
                  m.template 'unit_test.rb',  File.join('test/unit', class_path, "#{file_name}_test.rb")
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  unless options[:skip_fixture] 
         
     | 
| 
      
 19 
     | 
    
         
            +
                   	m.template 'fixtures.yml',  File.join('test/fixtures', "#{table_name}.yml")
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                  unless options[:skip_migration]
         
     | 
| 
      
 23 
     | 
    
         
            +
                    m.migration_template 'migration.rb', 'db/migrate', :assigns => {
         
     | 
| 
      
 24 
     | 
    
         
            +
                      :migration_name => "Create#{class_name.pluralize.gsub(/::/, '')}"
         
     | 
| 
      
 25 
     | 
    
         
            +
                    }, :migration_file_name => "create_#{file_path.gsub(/\//, '_').pluralize}"
         
     | 
| 
      
 26 
     | 
    
         
            +
                  end
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
              protected
         
     | 
| 
      
 31 
     | 
    
         
            +
                def banner
         
     | 
| 
      
 32 
     | 
    
         
            +
                  "Usage: #{$0} #{spec.name} ModelName [field:type, field:type]"
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def add_options!(opt)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  opt.separator ''
         
     | 
| 
      
 37 
     | 
    
         
            +
                  opt.separator 'Options:'
         
     | 
| 
      
 38 
     | 
    
         
            +
                  opt.on("--skip-timestamps",
         
     | 
| 
      
 39 
     | 
    
         
            +
                         "Don't add timestamps to the migration file for this model") { |v| options[:skip_timestamps] = v }
         
     | 
| 
      
 40 
     | 
    
         
            +
                  opt.on("--skip-migration", 
         
     | 
| 
      
 41 
     | 
    
         
            +
                         "Don't generate a migration file for this model") { |v| options[:skip_migration] = v }
         
     | 
| 
      
 42 
     | 
    
         
            +
                  opt.on("--skip-fixture",
         
     | 
| 
      
 43 
     | 
    
         
            +
                         "Don't generation a fixture file for this model") { |v| options[:skip_fixture] = v}
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            <% unless attributes.empty? -%>
         
     | 
| 
      
 4 
     | 
    
         
            +
            one:
         
     | 
| 
      
 5 
     | 
    
         
            +
            <% for attribute in attributes -%>
         
     | 
| 
      
 6 
     | 
    
         
            +
              <%= attribute.name %>: <%= attribute.default %>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            two:
         
     | 
| 
      
 10 
     | 
    
         
            +
            <% for attribute in attributes -%>
         
     | 
| 
      
 11 
     | 
    
         
            +
              <%= attribute.name %>: <%= attribute.default %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
      
 13 
     | 
    
         
            +
            <% else -%>
         
     | 
| 
      
 14 
     | 
    
         
            +
            # one:
         
     | 
| 
      
 15 
     | 
    
         
            +
            #   column: value
         
     | 
| 
      
 16 
     | 
    
         
            +
            #
         
     | 
| 
      
 17 
     | 
    
         
            +
            # two:
         
     | 
| 
      
 18 
     | 
    
         
            +
            #   column: value
         
     | 
| 
      
 19 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class <%= migration_name %> < ActiveRecord::Migration
         
     | 
| 
      
 2 
     | 
    
         
            +
              def self.up
         
     | 
| 
      
 3 
     | 
    
         
            +
                create_table :<%= table_name %> do |t|
         
     | 
| 
      
 4 
     | 
    
         
            +
            <% for attribute in attributes -%>
         
     | 
| 
      
 5 
     | 
    
         
            +
                  t.<%= attribute.type %> :<%= attribute.name %>
         
     | 
| 
      
 6 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
      
 7 
     | 
    
         
            +
            <% unless options[:skip_timestamps] %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                  t.timestamps
         
     | 
| 
      
 9 
     | 
    
         
            +
            <% end -%>
         
     | 
| 
      
 10 
     | 
    
         
            +
                end
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              def self.down
         
     | 
| 
      
 14 
     | 
    
         
            +
                drop_table :<%= table_name %>
         
     | 
| 
      
 15 
     | 
    
         
            +
              end
         
     | 
| 
      
 16 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,30 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'test/spec'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Test::Spec::Rails
         
     | 
| 
      
 4 
     | 
    
         
            +
              VERSION = "0.1"
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            %w(
         
     | 
| 
      
 8 
     | 
    
         
            +
              test_spec_ext
         
     | 
| 
      
 9 
     | 
    
         
            +
              test_unit_ext
         
     | 
| 
      
 10 
     | 
    
         
            +
              
         
     | 
| 
      
 11 
     | 
    
         
            +
              test_dummy
         
     | 
| 
      
 12 
     | 
    
         
            +
              dummy_response
         
     | 
| 
      
 13 
     | 
    
         
            +
              test_status
         
     | 
| 
      
 14 
     | 
    
         
            +
              test_template
         
     | 
| 
      
 15 
     | 
    
         
            +
              test_layout
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
              should_redirect
         
     | 
| 
      
 18 
     | 
    
         
            +
              should_render
         
     | 
| 
      
 19 
     | 
    
         
            +
              should_route
         
     | 
| 
      
 20 
     | 
    
         
            +
              should_select
         
     | 
| 
      
 21 
     | 
    
         
            +
              should_validate
         
     | 
| 
      
 22 
     | 
    
         
            +
              should_validate_presence_of
         
     | 
| 
      
 23 
     | 
    
         
            +
              
         
     | 
| 
      
 24 
     | 
    
         
            +
              use_controller
         
     | 
| 
      
 25 
     | 
    
         
            +
              
         
     | 
| 
      
 26 
     | 
    
         
            +
              convenience
         
     | 
| 
      
 27 
     | 
    
         
            +
              
         
     | 
| 
      
 28 
     | 
    
         
            +
            ).each do |file|
         
     | 
| 
      
 29 
     | 
    
         
            +
              require "test/spec/rails/#{file}"
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Convenience
         
     | 
| 
      
 2 
     | 
    
         
            +
              # convenience helpers, these methods are basically shortcuts to the should methods
         
     | 
| 
      
 3 
     | 
    
         
            +
              
         
     | 
| 
      
 4 
     | 
    
         
            +
              # shortcut for should.not.be.nil
         
     | 
| 
      
 5 
     | 
    
         
            +
              # has :page_title => assigns(:page_title).should.not.be.nil
         
     | 
| 
      
 6 
     | 
    
         
            +
              # OR you can also pass an array of values 
         
     | 
| 
      
 7 
     | 
    
         
            +
              # has :page_title, :user # => assigns(:page_title).should.not.be.nil
         
     | 
| 
      
 8 
     | 
    
         
            +
                                       # => assigns(:user).should.not.be.nil 
         
     | 
| 
      
 9 
     | 
    
         
            +
              def has(*var)
         
     | 
| 
      
 10 
     | 
    
         
            +
                return assigns(var).should.not.be.nil if var.length == 1
         
     | 
| 
      
 11 
     | 
    
         
            +
                var.each { |v| assigns(v).should.not.be.nil }
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              # shortcut for should.be.nil
         
     | 
| 
      
 15 
     | 
    
         
            +
              # cant_have :page_title => assigns(:page_title).should.be.nil
         
     | 
| 
      
 16 
     | 
    
         
            +
              # OR you can pass an array of values
         
     | 
| 
      
 17 
     | 
    
         
            +
              # cant_have :page_title, :user # => assigns(:page_title).should.be.nil
         
     | 
| 
      
 18 
     | 
    
         
            +
                                             # => assigns(:user).should.be.nil
         
     | 
| 
      
 19 
     | 
    
         
            +
              def cant_have(*var)
         
     | 
| 
      
 20 
     | 
    
         
            +
                return assigns(var).should.be.nil if var.length == 1
         
     | 
| 
      
 21 
     | 
    
         
            +
                var.each { |v| assigns(v).should.be.nil }
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
              
         
     | 
| 
      
 24 
     | 
    
         
            +
              # shortcut for flash[:type].should.not.be.nil
         
     | 
| 
      
 25 
     | 
    
         
            +
              # has_flash :notice => assigns(flash[:notice]).should.not.be.nil
         
     | 
| 
      
 26 
     | 
    
         
            +
              def has_flash(flash_type)
         
     | 
| 
      
 27 
     | 
    
         
            +
                flash[flash_type].should.not.be.nil
         
     | 
| 
      
 28 
     | 
    
         
            +
              end
         
     | 
| 
      
 29 
     | 
    
         
            +
              
         
     | 
| 
      
 30 
     | 
    
         
            +
              # shortcut for setting the HTTP_REFERER variable
         
     | 
| 
      
 31 
     | 
    
         
            +
              # set_redirect_back '/users'
         
     | 
| 
      
 32 
     | 
    
         
            +
              def set_redirect_back(path="/back/to/path")
         
     | 
| 
      
 33 
     | 
    
         
            +
                 @request.env["HTTP_REFERER"] = path
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
              
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
            Test::Unit::TestCase.send(:include, Convenience)
         
     | 
| 
         @@ -0,0 +1,21 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails
         
     | 
| 
      
 2 
     | 
    
         
            +
              class DummyResponse < TestDummy
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                attr_reader :body, :headers, :content_type
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
                def initialize(body, headers=nil)
         
     | 
| 
      
 7 
     | 
    
         
            +
                  if headers.nil?
         
     | 
| 
      
 8 
     | 
    
         
            +
                    response = body.instance_variable_get('@response')
         
     | 
| 
      
 9 
     | 
    
         
            +
                    @body, @headers = response.body, response.headers
         
     | 
| 
      
 10 
     | 
    
         
            +
                  else
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @body, @headers = body, headers
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @response = self
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                def html_document
         
     | 
| 
      
 17 
     | 
    
         
            +
                  @html_document ||= HTML::Document.new(@body)
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
                
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,33 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldRedirect
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Test that we were redirected somewhere:
         
     | 
| 
      
 3 
     | 
    
         
            +
              #   request.should.redirect
         
     | 
| 
      
 4 
     | 
    
         
            +
              #
         
     | 
| 
      
 5 
     | 
    
         
            +
              # Test that we were redirected to a specific url:
         
     | 
| 
      
 6 
     | 
    
         
            +
              #   request.should.redirect :controller => 'foo', :action => 'bar'
         
     | 
| 
      
 7 
     | 
    
         
            +
              # or:
         
     | 
| 
      
 8 
     | 
    
         
            +
              #   request.should.be.redirected foo_url(@foo)
         
     | 
| 
      
 9 
     | 
    
         
            +
              #
         
     | 
| 
      
 10 
     | 
    
         
            +
              def redirect(options = {})
         
     | 
| 
      
 11 
     | 
    
         
            +
                if options.empty?
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @object.assert_response :redirect
         
     | 
| 
      
 13 
     | 
    
         
            +
                else
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @object.assert_redirected_to options
         
     | 
| 
      
 15 
     | 
    
         
            +
                end
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              alias :redirect_to   :redirect
         
     | 
| 
      
 18 
     | 
    
         
            +
              alias :redirected    :redirect
         
     | 
| 
      
 19 
     | 
    
         
            +
              alias :redirected_to :redirect
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldNotRedirect
         
     | 
| 
      
 23 
     | 
    
         
            +
              # Test that we weren't redirected
         
     | 
| 
      
 24 
     | 
    
         
            +
              def redirect(options = {})
         
     | 
| 
      
 25 
     | 
    
         
            +
                @object.assert_response :success
         
     | 
| 
      
 26 
     | 
    
         
            +
              end
         
     | 
| 
      
 27 
     | 
    
         
            +
              alias :redirect_to   :redirect
         
     | 
| 
      
 28 
     | 
    
         
            +
              alias :redirected    :redirect
         
     | 
| 
      
 29 
     | 
    
         
            +
              alias :redirected_to :redirect
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldRedirect)
         
     | 
| 
      
 33 
     | 
    
         
            +
            Test::Spec::ShouldNot.send(:include, Test::Spec::Rails::ShouldNotRedirect)
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldRender
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Test that something was rendered:
         
     | 
| 
      
 3 
     | 
    
         
            +
              #   request.should.render
         
     | 
| 
      
 4 
     | 
    
         
            +
              #
         
     | 
| 
      
 5 
     | 
    
         
            +
              # Test that a specific template was rendered:
         
     | 
| 
      
 6 
     | 
    
         
            +
              #   request.should.render 'foo'
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              # Test that a template was rendered with a specific response code:
         
     | 
| 
      
 9 
     | 
    
         
            +
              #   request.should.render 'foo', :error
         
     | 
| 
      
 10 
     | 
    
         
            +
              #
         
     | 
| 
      
 11 
     | 
    
         
            +
              def render(template = '', response = :success)
         
     | 
| 
      
 12 
     | 
    
         
            +
                @object.assert_response response
         
     | 
| 
      
 13 
     | 
    
         
            +
                @object.assert_template template unless template.blank?
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldNotRender
         
     | 
| 
      
 18 
     | 
    
         
            +
              # Test that we didn't render
         
     | 
| 
      
 19 
     | 
    
         
            +
              def render(template = '', response = :success)
         
     | 
| 
      
 20 
     | 
    
         
            +
                @object.assert_response :redirect
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
            Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldRender)
         
     | 
| 
      
 25 
     | 
    
         
            +
            Test::Spec::ShouldNot.send(:include, Test::Spec::Rails::ShouldNotRender)
         
     | 
| 
         @@ -0,0 +1,34 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldRoute
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Specify that a set of url options route to a path.
         
     | 
| 
      
 3 
     | 
    
         
            +
              # This translates directly to assert_generates 
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Example:
         
     | 
| 
      
 5 
     | 
    
         
            +
              #     {:controller => "items", :action => "show", :id =>"1"}.should.route_to "/items/1"  
         
     | 
| 
      
 6 
     | 
    
         
            +
              # 
         
     | 
| 
      
 7 
     | 
    
         
            +
              # See also http://api.rubyonrails.org/classes/ActionController/Assertions/RoutingAssertions.html#M000367
         
     | 
| 
      
 8 
     | 
    
         
            +
              def route_to(options)
         
     | 
| 
      
 9 
     | 
    
         
            +
                assert_generates(options, @object)
         
     | 
| 
      
 10 
     | 
    
         
            +
              end
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              # Specify that a path should be routable from a set of url options.
         
     | 
| 
      
 13 
     | 
    
         
            +
              # This translates directly to assert_recognizes 
         
     | 
| 
      
 14 
     | 
    
         
            +
              # Examples:
         
     | 
| 
      
 15 
     | 
    
         
            +
              #     {:path => "/items/1", :method => :get}.should.route_from :controller => "items", :action => "show", :id =>"1"
         
     | 
| 
      
 16 
     | 
    
         
            +
              #     {:path => "/items/1?print=true", :method => :get}.should.route_from({:controller => "items", :action => "show", :id =>"1"}, {:print => true})
         
     | 
| 
      
 17 
     | 
    
         
            +
              #
         
     | 
| 
      
 18 
     | 
    
         
            +
              # See also http://api.rubyonrails.org/classes/ActionController/Assertions/RoutingAssertions.html#M000366
         
     | 
| 
      
 19 
     | 
    
         
            +
              def route_from(options, extras={})
         
     | 
| 
      
 20 
     | 
    
         
            +
                assert_recognizes(options, @object, extras)
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
              
         
     | 
| 
      
 23 
     | 
    
         
            +
              # Specify that a path should be routable from a set of url options and vice versa.
         
     | 
| 
      
 24 
     | 
    
         
            +
              # This translates directly to assert_routing 
         
     | 
| 
      
 25 
     | 
    
         
            +
              # Examples:
         
     | 
| 
      
 26 
     | 
    
         
            +
              #     "/items/1".should.route :controller => "items", :action => "show", :id =>"1"
         
     | 
| 
      
 27 
     | 
    
         
            +
              #
         
     | 
| 
      
 28 
     | 
    
         
            +
              # See also http://api.rubyonrails.org/classes/ActionController/Assertions/RoutingAssertions.html#M000368
         
     | 
| 
      
 29 
     | 
    
         
            +
              def route(options)
         
     | 
| 
      
 30 
     | 
    
         
            +
                assert_routing(@object, options)
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
            Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldRoute)
         
     | 
| 
         @@ -0,0 +1,53 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldSelect
         
     | 
| 
      
 2 
     | 
    
         
            +
              # Wrapper for +assert_select+. Examples:
         
     | 
| 
      
 3 
     | 
    
         
            +
              #
         
     | 
| 
      
 4 
     | 
    
         
            +
              # Test that the previous request has a login form:
         
     | 
| 
      
 5 
     | 
    
         
            +
              #   page.should.select "form#login"
         
     | 
| 
      
 6 
     | 
    
         
            +
              #
         
     | 
| 
      
 7 
     | 
    
         
            +
              # Test that a specific form has a field pre-filled (this is specific test/spec/rails):
         
     | 
| 
      
 8 
     | 
    
         
            +
              #   page.should.select "form#login" do |form|
         
     | 
| 
      
 9 
     | 
    
         
            +
              #     form.should.select "input[name=user_nick]", :text => @user.nick
         
     | 
| 
      
 10 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 11 
     | 
    
         
            +
              # 
         
     | 
| 
      
 12 
     | 
    
         
            +
              #  OR you can use contain
         
     | 
| 
      
 13 
     | 
    
         
            +
              #   page.should.contain "form#login"
         
     | 
| 
      
 14 
     | 
    
         
            +
              # 
         
     | 
| 
      
 15 
     | 
    
         
            +
              #   page.should.contain "form#login" do |form|
         
     | 
| 
      
 16 
     | 
    
         
            +
              #     form.should.contain "input[name=user_nick]", :text => @user.nick
         
     | 
| 
      
 17 
     | 
    
         
            +
              #   end
         
     | 
| 
      
 18 
     | 
    
         
            +
              #
         
     | 
| 
      
 19 
     | 
    
         
            +
              # See the Rails API documentation for assert_select for more information
         
     | 
| 
      
 20 
     | 
    
         
            +
              def select(selector, equality=true, message=nil, &block)
         
     | 
| 
      
 21 
     | 
    
         
            +
                @@response_stack ||= []
         
     | 
| 
      
 22 
     | 
    
         
            +
                
         
     | 
| 
      
 23 
     | 
    
         
            +
                if @object.is_a?(Test::Unit::TestCase)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @@response_stack.push(Test::Spec::Rails::DummyResponse.new(@object))
         
     | 
| 
      
 25 
     | 
    
         
            +
                  
         
     | 
| 
      
 26 
     | 
    
         
            +
                elsif @object.is_a?(Array) && @object.first.is_a?(HTML::Tag)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @@response_stack.push(Test::Spec::Rails::DummyResponse.new(
         
     | 
| 
      
 28 
     | 
    
         
            +
                    @object.first.to_s, @@response_stack.last.headers
         
     | 
| 
      
 29 
     | 
    
         
            +
                  ))
         
     | 
| 
      
 30 
     | 
    
         
            +
                else
         
     | 
| 
      
 31 
     | 
    
         
            +
                  @@response_stack.push(Test::Spec::Rails::DummyResponse.new(@object.to_s,
         
     | 
| 
      
 32 
     | 
    
         
            +
                    (@@response_stack.last.headers rescue 'Content-Type: text/html; charset=utf8')
         
     | 
| 
      
 33 
     | 
    
         
            +
                  ))
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
                
         
     | 
| 
      
 36 
     | 
    
         
            +
                @@response_stack.last.assert_select(selector, equality, message, &block)
         
     | 
| 
      
 37 
     | 
    
         
            +
                @@response_stack.pop
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
              
         
     | 
| 
      
 40 
     | 
    
         
            +
              # because contain sounds better imo
         
     | 
| 
      
 41 
     | 
    
         
            +
              alias :contain :select
         
     | 
| 
      
 42 
     | 
    
         
            +
              alias :have :select
         
     | 
| 
      
 43 
     | 
    
         
            +
            end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldNotSelect
         
     | 
| 
      
 46 
     | 
    
         
            +
              include Test::Spec::Rails::ShouldSelect
         
     | 
| 
      
 47 
     | 
    
         
            +
              def select(selector, message=nil, &block)
         
     | 
| 
      
 48 
     | 
    
         
            +
                super(selector, false, message, &block)
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldSelect)
         
     | 
| 
      
 53 
     | 
    
         
            +
            Test::Spec::ShouldNot.send(:include, Test::Spec::Rails::ShouldNotSelect)
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldValidate
         
     | 
| 
      
 2 
     | 
    
         
            +
              def validate
         
     | 
| 
      
 3 
     | 
    
         
            +
                assert @object.valid?
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
              alias :validated :validate
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldNotValidate
         
     | 
| 
      
 9 
     | 
    
         
            +
              def validate
         
     | 
| 
      
 10 
     | 
    
         
            +
                assert !@object.valid?
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
              alias :validated :validate
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldValidate)
         
     | 
| 
      
 16 
     | 
    
         
            +
            Test::Spec::ShouldNot.send(:include, Test::Spec::Rails::ShouldNotValidate)
         
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::ShouldValidatePresenceOf
         
     | 
| 
      
 2 
     | 
    
         
            +
              def it_should_validate_presence_of(*one_or_more_fields)
         
     | 
| 
      
 3 
     | 
    
         
            +
                model_name = self.model_class_under_test
         
     | 
| 
      
 4 
     | 
    
         
            +
                options = one_or_more_fields.last.is_a?(Hash) ? one_or_more_fields.pop : {}
         
     | 
| 
      
 5 
     | 
    
         
            +
              
         
     | 
| 
      
 6 
     | 
    
         
            +
                one_or_more_fields.each do |field|
         
     | 
| 
      
 7 
     | 
    
         
            +
                  it "should validate presence of #{field.to_s.humanize.downcase}" do
         
     | 
| 
      
 8 
     | 
    
         
            +
                    validations = model_name.reflect_on_all_validations
         
     | 
| 
      
 9 
     | 
    
         
            +
                    validations = validations.select { |e| e.macro == :validates_presence_of }
         
     | 
| 
      
 10 
     | 
    
         
            +
                    validations = validations.inject({}) { |h,v| h[v.name] = v; h }
         
     | 
| 
      
 11 
     | 
    
         
            +
                  
         
     | 
| 
      
 12 
     | 
    
         
            +
                    validation = validations[field]
         
     | 
| 
      
 13 
     | 
    
         
            +
                    assert_not_nil validation, "Expected validates_presence_of to be called on :#{field}, but it wasn't"
         
     | 
| 
      
 14 
     | 
    
         
            +
                    options.each_pair do |k,v|
         
     | 
| 
      
 15 
     | 
    
         
            +
                      assert_equal v, validation.options[k],
         
     | 
| 
      
 16 
     | 
    
         
            +
                        "Expected validates_presence_of to set :#{k} => :#{v} as an option, but it didn't"
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
              
         
     | 
| 
      
 22 
     | 
    
         
            +
              def model_class_under_test
         
     | 
| 
      
 23 
     | 
    
         
            +
                name.constantize
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            Test::Unit::TestCase.send(:extend, Test::Spec::Rails::ShouldValidatePresenceOf)
         
     | 
| 
         @@ -0,0 +1,46 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Base class for testcase/response/request/controller mocks
         
     | 
| 
      
 2 
     | 
    
         
            +
            class Test::Spec::Rails::TestDummy
         
     | 
| 
      
 3 
     | 
    
         
            +
              include Test::Unit::Assertions
         
     | 
| 
      
 4 
     | 
    
         
            +
              
         
     | 
| 
      
 5 
     | 
    
         
            +
              if defined?(ActionController::TestCase::Assertions)
         
     | 
| 
      
 6 
     | 
    
         
            +
                include ActionController::TestCase::Assertions
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
              # Rails > 2 moved Assertions module to the ActionController class
         
     | 
| 
      
 10 
     | 
    
         
            +
              if defined?(ActionController::Assertions)
         
     | 
| 
      
 11 
     | 
    
         
            +
                include ActionController::Assertions
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def initialize(testcase)
         
     | 
| 
      
 15 
     | 
    
         
            +
                @controller = testcase.instance_variable_get('@controller')
         
     | 
| 
      
 16 
     | 
    
         
            +
                @request    = testcase.instance_variable_get('@request')
         
     | 
| 
      
 17 
     | 
    
         
            +
                @response   = testcase.instance_variable_get('@response')
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
              
         
     | 
| 
      
 20 
     | 
    
         
            +
              def inspect
         
     | 
| 
      
 21 
     | 
    
         
            +
                "<#{self.class}:#{self.to_s}>"
         
     | 
| 
      
 22 
     | 
    
         
            +
              end
         
     | 
| 
      
 23 
     | 
    
         
            +
                
         
     | 
| 
      
 24 
     | 
    
         
            +
              def method_missing(method, *args, &block)
         
     | 
| 
      
 25 
     | 
    
         
            +
                if real_response.respond_to?(method)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  real_response.send(method, *args, &block)
         
     | 
| 
      
 27 
     | 
    
         
            +
                elsif real_request.respond_to?(method)
         
     | 
| 
      
 28 
     | 
    
         
            +
                  real_request.send(method, *args, &block)
         
     | 
| 
      
 29 
     | 
    
         
            +
                elsif real_controller.respond_to?(method)
         
     | 
| 
      
 30 
     | 
    
         
            +
                  real_controller.send(method, *args, &block)
         
     | 
| 
      
 31 
     | 
    
         
            +
                else
         
     | 
| 
      
 32 
     | 
    
         
            +
                  super
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
              end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
              def real_response
         
     | 
| 
      
 37 
     | 
    
         
            +
                @response unless @response == self
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
              def real_request
         
     | 
| 
      
 40 
     | 
    
         
            +
                @request unless @request == self
         
     | 
| 
      
 41 
     | 
    
         
            +
              end
         
     | 
| 
      
 42 
     | 
    
         
            +
              def real_controller
         
     | 
| 
      
 43 
     | 
    
         
            +
                @controller unless @controller == self
         
     | 
| 
      
 44 
     | 
    
         
            +
              end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails
         
     | 
| 
      
 2 
     | 
    
         
            +
              class TestLayout < TestDummy
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def should_equal(expected, message=nil)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  layout = @response.layout.gsub(/layouts\//, '') if @response.layout
         
     | 
| 
      
 6 
     | 
    
         
            +
                  assert_equal expected, layout, message
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
                alias :should_be :should_equal
         
     | 
| 
      
 9 
     | 
    
         
            +
                
         
     | 
| 
      
 10 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @response.rendered_file
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
                
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,48 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Test::Spec::Should
         
     | 
| 
      
 2 
     | 
    
         
            +
              include Test::Unit::Assertions
         
     | 
| 
      
 3 
     | 
    
         
            +
              
         
     | 
| 
      
 4 
     | 
    
         
            +
              if defined?(ActionController::TestCase::Assertions)
         
     | 
| 
      
 5 
     | 
    
         
            +
                include ActionController::TestCase::Assertions
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
              
         
     | 
| 
      
 8 
     | 
    
         
            +
              alias :_old_equal :equal
         
     | 
| 
      
 9 
     | 
    
         
            +
              def equal(*args)
         
     | 
| 
      
 10 
     | 
    
         
            +
                @object.respond_to?(:should_equal) ? @object.should_equal(*args) : _old_equal(*args)
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              alias :_old_be :be
         
     | 
| 
      
 14 
     | 
    
         
            +
              def be(*args)
         
     | 
| 
      
 15 
     | 
    
         
            +
                @object.respond_to?(:should_equal) ? @object.should_equal(*args) : _old_be(*args)
         
     | 
| 
      
 16 
     | 
    
         
            +
              end
         
     | 
| 
      
 17 
     | 
    
         
            +
              
         
     | 
| 
      
 18 
     | 
    
         
            +
              alias :have :be
         
     | 
| 
      
 19 
     | 
    
         
            +
              
         
     | 
| 
      
 20 
     | 
    
         
            +
              def differ(method)
         
     | 
| 
      
 21 
     | 
    
         
            +
                @initial_value = @object.send(@method = method)
         
     | 
| 
      
 22 
     | 
    
         
            +
                self
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def by(value)
         
     | 
| 
      
 26 
     | 
    
         
            +
                yield
         
     | 
| 
      
 27 
     | 
    
         
            +
                # TODO: this should use should_equal if available
         
     | 
| 
      
 28 
     | 
    
         
            +
                assert_equal @initial_value + value, @object.send(@method)
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
            end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            class Test::Spec::ShouldNot
         
     | 
| 
      
 33 
     | 
    
         
            +
              include Test::Unit::Assertions
         
     | 
| 
      
 34 
     | 
    
         
            +
              
         
     | 
| 
      
 35 
     | 
    
         
            +
              if defined?(ActionController::TestCase::Assertions)
         
     | 
| 
      
 36 
     | 
    
         
            +
                include ActionController::TestCase::Assertions
         
     | 
| 
      
 37 
     | 
    
         
            +
              end
         
     | 
| 
      
 38 
     | 
    
         
            +
              
         
     | 
| 
      
 39 
     | 
    
         
            +
              alias :_old_equal :equal
         
     | 
| 
      
 40 
     | 
    
         
            +
              def equal(*args,&block)
         
     | 
| 
      
 41 
     | 
    
         
            +
                @object.respond_to?(:should_not_equal) ? @object.should_not_equal(*args,&block) : _old_equal(*args,&block)
         
     | 
| 
      
 42 
     | 
    
         
            +
              end
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
              alias :_old_be :be
         
     | 
| 
      
 45 
     | 
    
         
            +
              def be(*args,&block)
         
     | 
| 
      
 46 
     | 
    
         
            +
                @object.respond_to?(:should_not_equal) ? @object.should_not_equal(*args,&block) : _old_be(*args,&block)
         
     | 
| 
      
 47 
     | 
    
         
            +
              end
         
     | 
| 
      
 48 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,32 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class Test::Unit::TestCase
         
     | 
| 
      
 2 
     | 
    
         
            +
              def page #:nodoc:
         
     | 
| 
      
 3 
     | 
    
         
            +
                self
         
     | 
| 
      
 4 
     | 
    
         
            +
              end
         
     | 
| 
      
 5 
     | 
    
         
            +
              alias :response :page
         
     | 
| 
      
 6 
     | 
    
         
            +
              alias :request  :page
         
     | 
| 
      
 7 
     | 
    
         
            +
              alias :view     :page
         
     | 
| 
      
 8 
     | 
    
         
            +
              
         
     | 
| 
      
 9 
     | 
    
         
            +
              def output
         
     | 
| 
      
 10 
     | 
    
         
            +
                @response.body
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
              alias :to_s  :output
         
     | 
| 
      
 13 
     | 
    
         
            +
              alias :body  :output
         
     | 
| 
      
 14 
     | 
    
         
            +
              alias :html  :output
         
     | 
| 
      
 15 
     | 
    
         
            +
              alias :xhtml :output
         
     | 
| 
      
 16 
     | 
    
         
            +
              
         
     | 
| 
      
 17 
     | 
    
         
            +
              def url
         
     | 
| 
      
 18 
     | 
    
         
            +
                Test::Spec::Rails::TestUrl.new(self)
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
              
         
     | 
| 
      
 21 
     | 
    
         
            +
              def status
         
     | 
| 
      
 22 
     | 
    
         
            +
                Test::Spec::Rails::TestStatus.new(self)
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
              
         
     | 
| 
      
 25 
     | 
    
         
            +
              def template
         
     | 
| 
      
 26 
     | 
    
         
            +
                Test::Spec::Rails::TestTemplate.new(self)
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
              
         
     | 
| 
      
 29 
     | 
    
         
            +
              def layout
         
     | 
| 
      
 30 
     | 
    
         
            +
                Test::Spec::Rails::TestLayout.new(self)
         
     | 
| 
      
 31 
     | 
    
         
            +
              end  
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,25 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails
         
     | 
| 
      
 2 
     | 
    
         
            +
              class TestUrl < TestDummy
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
                def initialize(testcase)
         
     | 
| 
      
 5 
     | 
    
         
            +
                  super(testcase)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  @params = @request.symbolized_path_parameters
         
     | 
| 
      
 7 
     | 
    
         
            +
                  @path   = @request.path
         
     | 
| 
      
 8 
     | 
    
         
            +
                end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                def should_equal(wanted, defaults={}, extras={}, message=nil)
         
     | 
| 
      
 11 
     | 
    
         
            +
                  if wanted.is_a?(Hash)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    assert_recognizes(wanted, @path, defaults, message)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  else
         
     | 
| 
      
 14 
     | 
    
         
            +
                    assert_generates(wanted, @params, defaults, extras, message)
         
     | 
| 
      
 15 
     | 
    
         
            +
                  end
         
     | 
| 
      
 16 
     | 
    
         
            +
                end
         
     | 
| 
      
 17 
     | 
    
         
            +
                alias :should_be :should_equal
         
     | 
| 
      
 18 
     | 
    
         
            +
                
         
     | 
| 
      
 19 
     | 
    
         
            +
                def to_s
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @path
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Test::Spec::Rails::UseController
         
     | 
| 
      
 2 
     | 
    
         
            +
              module InstanceMethod
         
     | 
| 
      
 3 
     | 
    
         
            +
                # Setup controller for tests.
         
     | 
| 
      
 4 
     | 
    
         
            +
                # For example:
         
     | 
| 
      
 5 
     | 
    
         
            +
                #   context "Tuxie" do
         
     | 
| 
      
 6 
     | 
    
         
            +
                #     setup do 
         
     | 
| 
      
 7 
     | 
    
         
            +
                #       use_controller UsersController
         
     | 
| 
      
 8 
     | 
    
         
            +
                #       login_as users(:tuxie)
         
     | 
| 
      
 9 
     | 
    
         
            +
                #     end
         
     | 
| 
      
 10 
     | 
    
         
            +
                #     specify "should be able to see his profile" { ... }
         
     | 
| 
      
 11 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 12 
     | 
    
         
            +
                
         
     | 
| 
      
 13 
     | 
    
         
            +
                # OR
         
     | 
| 
      
 14 
     | 
    
         
            +
                # to save some keystrokes you can use a symbolized version of the controller name
         
     | 
| 
      
 15 
     | 
    
         
            +
                # without the 'Controller' suffix
         
     | 
| 
      
 16 
     | 
    
         
            +
                # For example:
         
     | 
| 
      
 17 
     | 
    
         
            +
                #   context "Tuxie" do
         
     | 
| 
      
 18 
     | 
    
         
            +
                #     setup do 
         
     | 
| 
      
 19 
     | 
    
         
            +
                #       use_controller :users
         
     | 
| 
      
 20 
     | 
    
         
            +
                #       login_as :tuxie
         
     | 
| 
      
 21 
     | 
    
         
            +
                #     end
         
     | 
| 
      
 22 
     | 
    
         
            +
                #     specify "should be able to see his profile" { ... }
         
     | 
| 
      
 23 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                def use_controller(controller)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  controller = eval("#{controller.to_s.camelize}Controller") if controller.is_a? Symbol
         
     | 
| 
      
 27 
     | 
    
         
            +
                  controller.class_eval { def rescue_action(e); raise e; end }
         
     | 
| 
      
 28 
     | 
    
         
            +
                  @controller = controller.new
         
     | 
| 
      
 29 
     | 
    
         
            +
                  @request    = ActionController::TestRequest.new
         
     | 
| 
      
 30 
     | 
    
         
            +
                  @response   = ActionController::TestResponse.new
         
     | 
| 
      
 31 
     | 
    
         
            +
                end
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              module ClassMethod
         
     | 
| 
      
 35 
     | 
    
         
            +
                # Setup context for controller testing. For example:
         
     | 
| 
      
 36 
     | 
    
         
            +
                #   context "If not logged in" do
         
     | 
| 
      
 37 
     | 
    
         
            +
                #     use_controller SessionsController
         
     | 
| 
      
 38 
     | 
    
         
            +
                #     specify "one should see the login box" do
         
     | 
| 
      
 39 
     | 
    
         
            +
                #       get :new
         
     | 
| 
      
 40 
     | 
    
         
            +
                #       page.should.select "form#login"
         
     | 
| 
      
 41 
     | 
    
         
            +
                #     end
         
     | 
| 
      
 42 
     | 
    
         
            +
                #   end
         
     | 
| 
      
 43 
     | 
    
         
            +
                def use_controller(controller)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  setups << lambda { use_controller(controller) }
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
            end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            Test::Spec::TestCase::ClassMethods.send(:include, Test::Spec::Rails::UseController::ClassMethod)
         
     | 
| 
      
 51 
     | 
    
         
            +
            Test::Unit::TestCase.send(:include, Test::Spec::Rails::UseController::InstanceMethod)
         
     | 
    
        data/tasks/spec.rake
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            desc "Show specs when testing"
         
     | 
| 
      
 2 
     | 
    
         
            +
            task :spec do
         
     | 
| 
      
 3 
     | 
    
         
            +
              ENV['TESTOPTS'] = '--runner=s'
         
     | 
| 
      
 4 
     | 
    
         
            +
              Rake::Task[:test].invoke
         
     | 
| 
      
 5 
     | 
    
         
            +
            end
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            %w(functionals units integration).each do |type|
         
     | 
| 
      
 8 
     | 
    
         
            +
              namespace :spec do
         
     | 
| 
      
 9 
     | 
    
         
            +
                desc "Show specs when testing #{type}"
         
     | 
| 
      
 10 
     | 
    
         
            +
                task type do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  ENV['TESTOPTS'] = '--runner=s'
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Rake::Task["test:#{type}"].invoke
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,22 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.dirname(__FILE__) + '/../../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            describe "TestStatus" do
         
     | 
| 
      
 4 
     | 
    
         
            +
              it "should call assert_response" do
         
     | 
| 
      
 5 
     | 
    
         
            +
                status = Test::Spec::Rails::TestStatus.new(stub_everything)
         
     | 
| 
      
 6 
     | 
    
         
            +
                status.expects(:assert_response).with(:success, nil)
         
     | 
| 
      
 7 
     | 
    
         
            +
                status.should_equal :success
         
     | 
| 
      
 8 
     | 
    
         
            +
              end
         
     | 
| 
      
 9 
     | 
    
         
            +
              
         
     | 
| 
      
 10 
     | 
    
         
            +
              it "should call assert_response with message" do
         
     | 
| 
      
 11 
     | 
    
         
            +
                status = Test::Spec::Rails::TestStatus.new(stub_everything)
         
     | 
| 
      
 12 
     | 
    
         
            +
                status.expects(:assert_response).with(:success, "Response should be successful")
         
     | 
| 
      
 13 
     | 
    
         
            +
                status.should_equal :success, "Response should be successful"
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
              
         
     | 
| 
      
 16 
     | 
    
         
            +
              it "should return response code" do
         
     | 
| 
      
 17 
     | 
    
         
            +
                status = Test::Spec::Rails::TestStatus.new(stub_everything)
         
     | 
| 
      
 18 
     | 
    
         
            +
                status.class.class_eval { attr_accessor :response }
         
     | 
| 
      
 19 
     | 
    
         
            +
                status.response.expects(:response_code).returns("200")
         
     | 
| 
      
 20 
     | 
    
         
            +
                status.to_s.should == "200"
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
    
        data/test/test_helper.rb
    ADDED
    
    
    
        metadata
    ADDED
    
    | 
         @@ -0,0 +1,92 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- !ruby/object:Gem::Specification 
         
     | 
| 
      
 2 
     | 
    
         
            +
            name: test_spec_on_rails
         
     | 
| 
      
 3 
     | 
    
         
            +
            version: !ruby/object:Gem::Version 
         
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.1.0
         
     | 
| 
      
 5 
     | 
    
         
            +
            platform: ruby
         
     | 
| 
      
 6 
     | 
    
         
            +
            authors: 
         
     | 
| 
      
 7 
     | 
    
         
            +
            - Matthew Bass
         
     | 
| 
      
 8 
     | 
    
         
            +
            autorequire: 
         
     | 
| 
      
 9 
     | 
    
         
            +
            bindir: bin
         
     | 
| 
      
 10 
     | 
    
         
            +
            cert_chain: []
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2009-12-03 00:00:00 -05:00
         
     | 
| 
      
 13 
     | 
    
         
            +
            default_executable: 
         
     | 
| 
      
 14 
     | 
    
         
            +
            dependencies: []
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
            description: Provides helpers to test your Rails app using test/spec.
         
     | 
| 
      
 17 
     | 
    
         
            +
            email: pelargir@gmail.com
         
     | 
| 
      
 18 
     | 
    
         
            +
            executables: []
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            extensions: []
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            extra_rdoc_files: 
         
     | 
| 
      
 23 
     | 
    
         
            +
            - README.markdown
         
     | 
| 
      
 24 
     | 
    
         
            +
            files: 
         
     | 
| 
      
 25 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 26 
     | 
    
         
            +
            - CHANGELOG
         
     | 
| 
      
 27 
     | 
    
         
            +
            - README.markdown
         
     | 
| 
      
 28 
     | 
    
         
            +
            - Rakefile
         
     | 
| 
      
 29 
     | 
    
         
            +
            - VERSION
         
     | 
| 
      
 30 
     | 
    
         
            +
            - lib/generators/controller/USAGE
         
     | 
| 
      
 31 
     | 
    
         
            +
            - lib/generators/controller/controller_generator.rb
         
     | 
| 
      
 32 
     | 
    
         
            +
            - lib/generators/controller/templates/controller.rb
         
     | 
| 
      
 33 
     | 
    
         
            +
            - lib/generators/controller/templates/functional_test.rb
         
     | 
| 
      
 34 
     | 
    
         
            +
            - lib/generators/controller/templates/helper.rb
         
     | 
| 
      
 35 
     | 
    
         
            +
            - lib/generators/controller/templates/view.html.erb
         
     | 
| 
      
 36 
     | 
    
         
            +
            - lib/generators/model/USAGE
         
     | 
| 
      
 37 
     | 
    
         
            +
            - lib/generators/model/model_generator.rb
         
     | 
| 
      
 38 
     | 
    
         
            +
            - lib/generators/model/templates/fixtures.yml
         
     | 
| 
      
 39 
     | 
    
         
            +
            - lib/generators/model/templates/migration.rb
         
     | 
| 
      
 40 
     | 
    
         
            +
            - lib/generators/model/templates/model.rb
         
     | 
| 
      
 41 
     | 
    
         
            +
            - lib/generators/model/templates/unit_test.rb
         
     | 
| 
      
 42 
     | 
    
         
            +
            - lib/test/spec/rails.rb
         
     | 
| 
      
 43 
     | 
    
         
            +
            - lib/test/spec/rails/convenience.rb
         
     | 
| 
      
 44 
     | 
    
         
            +
            - lib/test/spec/rails/dummy_response.rb
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/test/spec/rails/should_redirect.rb
         
     | 
| 
      
 46 
     | 
    
         
            +
            - lib/test/spec/rails/should_render.rb
         
     | 
| 
      
 47 
     | 
    
         
            +
            - lib/test/spec/rails/should_route.rb
         
     | 
| 
      
 48 
     | 
    
         
            +
            - lib/test/spec/rails/should_select.rb
         
     | 
| 
      
 49 
     | 
    
         
            +
            - lib/test/spec/rails/should_validate.rb
         
     | 
| 
      
 50 
     | 
    
         
            +
            - lib/test/spec/rails/should_validate_presence_of.rb
         
     | 
| 
      
 51 
     | 
    
         
            +
            - lib/test/spec/rails/test_dummy.rb
         
     | 
| 
      
 52 
     | 
    
         
            +
            - lib/test/spec/rails/test_layout.rb
         
     | 
| 
      
 53 
     | 
    
         
            +
            - lib/test/spec/rails/test_spec_ext.rb
         
     | 
| 
      
 54 
     | 
    
         
            +
            - lib/test/spec/rails/test_status.rb
         
     | 
| 
      
 55 
     | 
    
         
            +
            - lib/test/spec/rails/test_template.rb
         
     | 
| 
      
 56 
     | 
    
         
            +
            - lib/test/spec/rails/test_unit_ext.rb
         
     | 
| 
      
 57 
     | 
    
         
            +
            - lib/test/spec/rails/test_url.rb
         
     | 
| 
      
 58 
     | 
    
         
            +
            - lib/test/spec/rails/use_controller.rb
         
     | 
| 
      
 59 
     | 
    
         
            +
            - tasks/spec.rake
         
     | 
| 
      
 60 
     | 
    
         
            +
            - test/test/spec/rails/test_status_test.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - test/test_helper.rb
         
     | 
| 
      
 62 
     | 
    
         
            +
            has_rdoc: true
         
     | 
| 
      
 63 
     | 
    
         
            +
            homepage: http://github.com/pelargir/test_spec_on_rails
         
     | 
| 
      
 64 
     | 
    
         
            +
            licenses: []
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
            post_install_message: 
         
     | 
| 
      
 67 
     | 
    
         
            +
            rdoc_options: 
         
     | 
| 
      
 68 
     | 
    
         
            +
            - --charset=UTF-8
         
     | 
| 
      
 69 
     | 
    
         
            +
            require_paths: 
         
     | 
| 
      
 70 
     | 
    
         
            +
            - lib
         
     | 
| 
      
 71 
     | 
    
         
            +
            required_ruby_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 72 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 73 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 74 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 75 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 76 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 77 
     | 
    
         
            +
            required_rubygems_version: !ruby/object:Gem::Requirement 
         
     | 
| 
      
 78 
     | 
    
         
            +
              requirements: 
         
     | 
| 
      
 79 
     | 
    
         
            +
              - - ">="
         
     | 
| 
      
 80 
     | 
    
         
            +
                - !ruby/object:Gem::Version 
         
     | 
| 
      
 81 
     | 
    
         
            +
                  version: "0"
         
     | 
| 
      
 82 
     | 
    
         
            +
              version: 
         
     | 
| 
      
 83 
     | 
    
         
            +
            requirements: []
         
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            rubyforge_project: 
         
     | 
| 
      
 86 
     | 
    
         
            +
            rubygems_version: 1.3.5
         
     | 
| 
      
 87 
     | 
    
         
            +
            signing_key: 
         
     | 
| 
      
 88 
     | 
    
         
            +
            specification_version: 3
         
     | 
| 
      
 89 
     | 
    
         
            +
            summary: Provides helpers to test your Rails app using test/spec.
         
     | 
| 
      
 90 
     | 
    
         
            +
            test_files: 
         
     | 
| 
      
 91 
     | 
    
         
            +
            - test/test/spec/rails/test_status_test.rb
         
     | 
| 
      
 92 
     | 
    
         
            +
            - test/test_helper.rb
         
     |