session integration test

Create the application.

bundle exec /home/rubys/git/rails/railties/bin/rails new depot --skip-bundle
      create  
      create  README.rdoc
      create  Rakefile
      create  config.ru
      create  .gitignore
      create  Gemfile
      create  app
      create  app/assets/javascripts/application.js
      create  app/assets/stylesheets/application.css
      create  app/controllers/application_controller.rb
      create  app/helpers/application_helper.rb
      create  app/views/layouts/application.html.erb
      create  app/assets/images/.keep
      create  app/mailers/.keep
      create  app/models/.keep
      create  app/controllers/concerns/.keep
      create  app/models/concerns/.keep
      create  bin
      create  bin/bundle
      create  bin/rails
      create  bin/rake
      create  config
      create  config/routes.rb
      create  config/application.rb
      create  config/environment.rb
      create  config/environments
      create  config/environments/development.rb
      create  config/environments/production.rb
      create  config/environments/test.rb
      create  config/initializers
      create  config/initializers/backtrace_silencers.rb
      create  config/initializers/filter_parameter_logging.rb
      create  config/initializers/inflections.rb
      create  config/initializers/mime_types.rb
      create  config/initializers/secret_token.rb
      create  config/initializers/session_store.rb
      create  config/initializers/wrap_parameters.rb
      create  config/locales
      create  config/locales/en.yml
      create  config/boot.rb
      create  config/database.yml
      create  db
      create  db/seeds.rb
      create  lib
      create  lib/tasks
      create  lib/tasks/.keep
      create  lib/assets
      create  lib/assets/.keep
      create  log
      create  log/.keep
      create  public
      create  public/404.html
      create  public/422.html
      create  public/500.html
      create  public/favicon.ico
      create  public/robots.txt
      create  test/fixtures
      create  test/fixtures/.keep
      create  test/controllers
      create  test/controllers/.keep
      create  test/mailers
      create  test/mailers/.keep
      create  test/models
      create  test/models/.keep
      create  test/helpers
      create  test/helpers/.keep
      create  test/integration
      create  test/integration/.keep
      create  test/test_helper.rb
      create  tmp/cache
      create  tmp/cache/assets
      create  vendor/assets/javascripts
      create  vendor/assets/javascripts/.keep
      create  vendor/assets/stylesheets
      create  vendor/assets/stylesheets/.keep
bundle install
Resolving dependencies...
Using rake (10.0.4) 
Using i18n (0.6.4) 
Using json (1.8.0) 
Using minitest (5.0.1) 
Using atomic (1.1.9) 
Using thread_safe (0.1.0) 
Using tzinfo (0.3.37) 
Using activesupport (4.1.0.beta) from source at /home/rubys/git/rails 
Using builder (3.1.4) 
Using erubis (2.7.0) 
Using rack (1.5.2) 
Using rack-test (0.6.2) 
Using actionpack (4.1.0.beta) from source at /home/rubys/git/rails 
Using mime-types (1.23) 
Using polyglot (0.3.3) 
Using treetop (1.4.12) 
Using mail (2.5.4) 
Using actionmailer (4.1.0.beta) from source at /home/rubys/git/rails 
Using active_utils (1.0.5) 
Using money (5.1.1) 
Using nokogiri (1.5.9) 
Using activemerchant (1.32.1) 
Using activemodel (4.1.0.beta) from source at /home/rubys/git/rails 
Using activerecord-deprecated_finders (1.0.2) 
Using arel (4.0.0.20130418133826) from source at /home/rubys/git/arel 
Using activerecord (4.1.0.beta) from source at /home/rubys/git/rails 
Using bcrypt-ruby (3.0.1) 
Using bundler (1.3.5) 
Using highline (1.6.19) 
Using net-ssh (2.6.7) 
Using net-scp (1.1.1) 
Using net-sftp (2.1.2) 
Using net-ssh-gateway (1.2.0) 
Using capistrano (2.15.4) 
Using coffee-script-source (1.6.2) 
Using multi_json (1.7.3) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using thor (0.18.1) 
Using railties (4.1.0.beta) from source at /home/rubys/git/rails 
Using coffee-rails (4.0.0) from source at /home/rubys/git/coffee-rails 
Using orm_adapter (0.4.0) 
Using warden (1.2.1) 
Using devise (3.0.0.rc) 
Using tilt (1.4.1) 
Using haml (4.0.2) 
Using hike (1.2.2) 
Using htmlentities (4.3.1) 
Using jbuilder (1.4.1) 
Using jquery-rails (2.2.1) 
Using kaminari (0.14.1) 
Using mysql2 (0.3.11) 
Using puma (2.0.1) 
Using sprockets (2.9.3) 
Using sprockets-rails (2.0.0.rc4) from source at /home/rubys/git/sprockets-rails 
Using rails (4.1.0.beta) from source at /home/rubys/git/rails 
Using rdoc (3.12.2) 
Using rvm-capistrano (1.3.0) 
Using sass (3.2.9) 
Using sass-rails (4.0.0.rc1) from source at /home/rubys/git/sass-rails 
Using sdoc (0.3.20) 
Using sqlite3 (1.3.7) 
Using test-unit (2.5.4) 
Using turbolinks (1.1.1) 
Using uglifier (2.1.0) 
Your bundle is complete!
Use `bundle show [gemname]` to see where a bundled gem is installed.

Create a simple resource.

rails generate scaffold Product title
      invoke  active_record
      create    db/migrate/20130517032753_create_products.rb
      create    app/models/product.rb
      invoke    test_unit
      create      test/models/product_test.rb
      create      test/fixtures/products.yml
      invoke  resource_route
       route    resources :products
      invoke  scaffold_controller
      create    app/controllers/products_controller.rb
      invoke    erb
      create      app/views/products
      create      app/views/products/index.html.erb
      create      app/views/products/edit.html.erb
      create      app/views/products/show.html.erb
      create      app/views/products/new.html.erb
      create      app/views/products/_form.html.erb
      invoke    test_unit
      create      test/controllers/products_controller_test.rb
      invoke    helper
      create      app/helpers/products_helper.rb
      invoke      test_unit
      create        test/helpers/products_helper_test.rb
      invoke    jbuilder
      create      app/views/products/index.json.jbuilder
      create      app/views/products/show.json.jbuilder
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/products.js.coffee
      invoke    scss
      create      app/assets/stylesheets/products.css.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.css.scss
rake db:migrate
mv 20130517032753_create_products.rb 20130516000001_create_products.rb
==  CreateProducts: migrating =================================================
-- create_table(:products)
   -> 0.0031s
==  CreateProducts: migrated (0.0033s) ========================================
 

Create a integration test using open_session and assert_template.

edit test/integration/fetch_integration_test.rb
require 'test_helper'
 
MiniTest.backtrace_filter.remove_silencers!
 
class SessionIntegrationTest < ActionDispatch::IntegrationTest
  def test_buying_a_product
    dave = open_session do |user|
      def user.fetch
        get "/products"
        assert_response :success
        assert_template "products/index"
      end
    end
    dave.fetch
  end
end

Run test.

rake test:integration
Run options: --seed 9598
 
# Running:
 
E
 
Finished in 0.431775s, 2.3160 runs/s, 0.0000 assertions/s.
 
  1) Error:
SessionIntegrationTest#test_buying_a_product:
NoMethodError: undefined method `keys' for nil:NilClass
    /home/rubys/git/rails/actionpack/lib/action_controller/test_case.rb:104:in `assert_template'
    test/integration/fetch_integration_test.rb:11:in `fetch'
    test/integration/fetch_integration_test.rb:14:in `test_buying_a_product'
    minitest (5.0.1) lib/minitest/test.rb:105:in `block (3 levels) in run'
    minitest (5.0.1) lib/minitest/test.rb:203:in `capture_exceptions'
    minitest (5.0.1) lib/minitest/test.rb:102:in `block (2 levels) in run'
    minitest (5.0.1) lib/minitest/test.rb:255:in `time_it'
    minitest (5.0.1) lib/minitest/test.rb:101:in `block in run'
    minitest (5.0.1) lib/minitest/test.rb:278:in `with_info_handler'
    minitest (5.0.1) lib/minitest/test.rb:100:in `run'
    minitest (5.0.1) lib/minitest.rb:264:in `block in run'
    minitest (5.0.1) lib/minitest.rb:263:in `each'
    minitest (5.0.1) lib/minitest.rb:263:in `run'
    /home/rubys/git/rails/activesupport/lib/active_support/test_case.rb:32:in `block in __run'
    /home/rubys/git/rails/activesupport/lib/active_support/test_case.rb:32:in `map'
    /home/rubys/git/rails/activesupport/lib/active_support/test_case.rb:32:in `__run'
    minitest (5.0.1) lib/minitest.rb:112:in `block in run'
    minitest (5.0.1) lib/minitest.rb:398:in `run_and_report'
    minitest (5.0.1) lib/minitest.rb:111:in `run'
    minitest (5.0.1) lib/minitest.rb:46:in `block in autorun'
 
1 runs, 0 assertions, 0 failures, 1 errors, 0 skips
<(?-mix:, 0 failures, 0 errors)> expected but was
<Run options: --seed 9598>.
<0> expected to be
>=
<1>.

Traceback:
  session.rb:38:in `block (2 levels) in <class:SessionIntegrationTest>'
  /home/rubys/git/gorp/lib/gorp/test.rb:157:in `call'
  /home/rubys/git/gorp/lib/gorp/test.rb:157:in `block (2 levels) in <class:TestCase>'
  session.rb:37:in `block in <class:SessionIntegrationTest>'

Environment

Fri, 17 May 2013 03:27:56 GMT
git log -1
commit 6062e42f982e0641de023419dc357bf1ec6b5e35
Author: Aaron Patterson <aaron.patterson@gmail.com>
Date:   Thu May 16 16:06:26 2013 -0700

    let Ruby do the is_a check for us
rake about
About your application's environment
Ruby version              2.0.0 (x86_64-linux)
RubyGems version          2.0.3
Rack version              1.5
Rails version             4.1.0.beta
JavaScript Runtime        Node.js (V8)
Active Record version     4.1.0.beta
Action Pack version       4.1.0.beta
Action Mailer version     4.1.0.beta
Active Support version    4.1.0.beta
Middleware                ActionDispatch::Static, Rack::Lock, #<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0x000000039ea6a8>, Rack::Runtime, Rack::MethodOverride, ActionDispatch::RequestId, Rails::Rack::Logger, ActionDispatch::ShowExceptions, ActionDispatch::DebugExceptions, ActionDispatch::RemoteIp, ActionDispatch::Reloader, ActionDispatch::Callbacks, ActiveRecord::Migration::CheckPending, ActiveRecord::ConnectionAdapters::ConnectionManagement, ActiveRecord::QueryCache, ActionDispatch::Cookies, ActionDispatch::Session::CookieStore, ActionDispatch::Flash, ActionDispatch::ParamsParser, Rack::Head, Rack::ConditionalGet, Rack::ETag, Warden::Manager
Application root          /var/www/rtest/work/depot
Environment               development
Database adapter          sqlite3
Database schema version   20130516000001
bundle show
Gems included by the bundle:
  * actionmailer (4.1.0.beta)
  * actionpack (4.1.0.beta)
  * active_utils (1.0.5)
  * activemerchant (1.32.1)
  * activemodel (4.1.0.beta)
  * activerecord (4.1.0.beta)
  * activerecord-deprecated_finders (1.0.2)
  * activesupport (4.1.0.beta)
  * arel (4.0.0.20130418133826 68a9554)
  * atomic (1.1.9)
  * bcrypt-ruby (3.0.1)
  * builder (3.1.4)
  * bundler (1.3.5)
  * capistrano (2.15.4)
  * coffee-rails (4.0.0 cbc4a6f)
  * coffee-script (2.2.0)
  * coffee-script-source (1.6.2)
  * devise (3.0.0.rc)
  * erubis (2.7.0)
  * execjs (1.4.0)
  * haml (4.0.2)
  * highline (1.6.19)
  * hike (1.2.2)
  * htmlentities (4.3.1)
  * i18n (0.6.4)
  * jbuilder (1.4.1)
  * jquery-rails (2.2.1)
  * json (1.8.0)
  * kaminari (0.14.1)
  * mail (2.5.4)
  * mime-types (1.23)
  * minitest (5.0.1)
  * money (5.1.1)
  * multi_json (1.7.3)
  * mysql2 (0.3.11)
  * net-scp (1.1.1)
  * net-sftp (2.1.2)
  * net-ssh (2.6.7)
  * net-ssh-gateway (1.2.0)
  * nokogiri (1.5.9)
  * orm_adapter (0.4.0)
  * polyglot (0.3.3)
  * puma (2.0.1)
  * rack (1.5.2)
  * rack-test (0.6.2)
  * rails (4.1.0.beta 6062e42)
  * railties (4.1.0.beta)
  * rake (10.0.4)
  * rdoc (3.12.2)
  * rvm-capistrano (1.3.0)
  * sass (3.2.9)
  * sass-rails (4.0.0.rc1 3379941)
  * sdoc (0.3.20)
  * sprockets (2.9.3)
  * sprockets-rails (2.0.0.rc4 733fedf)
  * sqlite3 (1.3.7)
  * test-unit (2.5.4)
  * thor (0.18.1)
  * thread_safe (0.1.0)
  * tilt (1.4.1)
  * treetop (1.4.12)
  * turbolinks (1.1.1)
  * tzinfo (0.3.37)
  * uglifier (2.1.0)
  * warden (1.2.1)
gem -v
2.0.3
/home/rubys/.rvm/rubies/ruby-2.0.0-p195/bin/ruby -v
ruby 2.0.0p195 (2013-05-14 revision 40734) [x86_64-linux]
rvm -v
rvm 1.20.9 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
nodejs -v
v0.6.19
echo $PATH
/home/rubys/.rvm/gems/ruby-2.0.0-p195/bin
/home/rubys/.rvm/gems/ruby-2.0.0-p195@global/bin
/home/rubys/.rvm/rubies/ruby-2.0.0-p195/bin
/home/rubys/.rvm/bin
/home/rubys/bin
/usr/lib/lightdm/lightdm
/usr/local/sbin
/usr/local/bin
/usr/sbin
/usr/bin
/sbin
/bin
/usr/games
/usr/local/games
lsb_release -irc
Distributor ID:	Ubuntu
Release:	12.10
Codename:	quantal
uname -srm
Linux 3.5.0-28-generic x86_64