/spec/rails_best_practices/reviews/simplify_render_in_views_review_spec.rb
http://github.com/flyerhzm/rails_best_practices · Ruby · 105 lines · 91 code · 13 blank · 1 comment · 0 complexity · 772e3f593cb810b14103237e5da8edc0 MD5 · raw file
- # frozen_string_literal: true
- require 'spec_helper'
- module RailsBestPractices
- module Reviews
- describe SimplifyRenderInViewsReview do
- let(:runner) { Core::Runner.new(reviews: described_class.new) }
- it 'simplifies render simple partial' do
- content = <<-EOF
- <%= render partial: 'sidebar' %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(1)
- expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
- end
- it 'simplifies render partial with object' do
- content = <<-EOF
- <%= render partial: 'post', object: @post %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(1)
- expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
- end
- it 'simplifies render partial with collection' do
- content = <<-EOF
- <%= render partial: 'posts', collection: @posts %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(1)
- expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
- end
- it 'simplifies render partial with local variables' do
- content = <<-EOF
- <%= render partial: 'comment', locals: { parent: post } %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(1)
- expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
- end
- it 'does not simplify render simple partial' do
- content = <<-EOF
- <%= render 'sidebar' %>
- <%= render 'shared/sidebar' %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not simplify render partial with object' do
- content = <<-EOF
- <%= render @post %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not simplify render partial with collection' do
- content = <<-EOF
- <%= render @posts %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not simplify render partial with local variables' do
- content = <<-EOF
- <%= render 'comment', parent: post %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not simplify render partial with complex partial' do
- content = <<-EOF
- <%= render partial: 'shared/post', object: @post %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not simplify render partial with layout option' do
- content = <<-EOF
- <%= render partial: 'post', layout: 'post' %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- it 'does not check ignored files' do
- runner = Core::Runner.new(reviews: described_class.new(ignored_files: %r{views/posts/index}))
- content = <<-EOF
- <%= render partial: 'sidebar' %>
- EOF
- runner.review('app/views/posts/index.html.erb', content)
- expect(runner.errors.size).to eq(0)
- end
- end
- end
- end