webficient (owner)

Revisions

gist: 187126 Download_button fork
public
Description:
Shoulda extensions are easy to add
Public Clone URL: git://gist.github.com/187126.git
Embed All Files: show embed
page_controller_test.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
require 'test_helper'
 
# Example: resources that don't require authentication and parameters
class ContentsControllerTest < ActionController::TestCase
  should_get_resource :index, :demo, :help, :pricing, :screenshots
end
 
# Example: resources that require parameters
class SearchesControllerTest < ActionController::TestCase
  should_get_resource :index => {:query => 'foo'}
  # FactoryGirl works here too:
  should_get_resource :index => {:customer => Factory(:customer).name}
end
 
# Example: resources that require authentication
class OrdersControllerTest < ActionController::TestCase
  context "getting orders page as an authenticated customer" do
    setup { login_as :customer }
    should_get_resource :index
  end
end
 
# Example: using Stubble gem to stub model instance
class PhotosControllerTest < ActionController:TestCase
  context "getting photo" do
    setup do
      login_as :valid_client_user
      stubbing(Photo) do |photo|
        should_get_resource :show # you don't need to worry about passing in any parameters
      end
    end
  end
end
shoulda_extensions.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
module ShouldaExtensions
  def self.included(base)
    base.extend(ClassMethods)
  end
  
  module ClassMethods
    def should_get_resource(*resources)
      resources.each do |resource|
        params = nil
        context "getting #{resource}" do
          if resource.is_a? Hash
            b = resource.keys.first
            params = resource[b]
            resource = b
          end
          setup { get resource, params }
          should_respond_with :success
          should_render_template resource
        end
      end
    end
  end
end
test_helper.rb #
1
2
3
4
5
6
7
8
9
10
11
12
13
ENV["RAILS_ENV"] = "test"
require File.expand_path(File.dirname(__FILE__) + "/../config/environment")
require 'test_help'
require 'shoulda_extensions'
 
class ActiveSupport::TestCase
  include AuthenticatedTestHelper
  include ShouldaExtensions
  
  self.use_transactional_fixtures = true
  self.use_instantiated_fixtures = false
  fixtures :all
end