Sha256: 006572bb283c0481679590adc7b2ebf055f996b7e291026866ae155d96d03464

Contents?: true

Size: 1.96 KB

Versions: 11

Compression:

Stored size: 1.96 KB

Contents

require File.join(File.dirname(__FILE__) + '/../../spec_helper')

describe RailsBestPractices::Checks::UseBeforeFilterCheck do
  before(:each) do
    @runner = RailsBestPractices::Core::Runner.new(RailsBestPractices::Checks::UseBeforeFilterCheck.new)
  end
  
  it "should use before_filter" do
    content = <<-EOF
    class PostsController < ApplicationController

      def show
        @post = current_user.posts.find(params[:id])
      end

      def edit
        @post = current_user.posts.find(params[:id])
      end

      def update
        @post = current_user.posts.find(params[:id])
        @post.update_attributes(params[:post])
      end

      def destroy
        @post = current_user.posts.find(params[:id])
        @post.destroy
      end

    end
    EOF
    @runner.check('app/controllers/posts_controller.rb', content)
    errors = @runner.errors
    errors.should_not be_empty
    errors[0].to_s.should == "app/controllers/posts_controller.rb:1 - use before_filter for @post = current_user.posts.find(params[:id]) in show,edit,update,destroy"
  end
  
  it "should not use before_filter" do
    content = <<-EOF
    class PostsController < ApplicationController
      before_filter :find_post, :only => [:show, :edit, :update, :destroy]

      def update
        @post.update_attributes(params[:post])
      end

      def destroy
        @post.destroy
      end

      protected

      def find_post
        @post = current_user.posts.find(params[:id])
      end
    end
    EOF
    @runner.check('app/controllers/posts_controller.rb', content)
    errors = @runner.errors
    errors.should be_empty
  end

  it "should not use before_filter by nil" do
    content = <<-EOF
    class PostsController < ApplicationController

      def show
      end

      def edit
      end

      def update
      end

      def destroy
      end

    end
    EOF
    @runner.check('app/controllers/posts_controller.rb', content)
    errors = @runner.errors
    errors.should be_empty
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
rails_best_practices-0.3.14 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.13 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.12 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.11 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.10 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.9 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.8 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.7 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.6 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.5 spec/rails_best_practices/checks/use_before_filter_check_spec.rb
rails_best_practices-0.3.4 spec/rails_best_practices/checks/use_before_filter_check_spec.rb