/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

  1. # frozen_string_literal: true
  2. require 'spec_helper'
  3. module RailsBestPractices
  4. module Reviews
  5. describe SimplifyRenderInViewsReview do
  6. let(:runner) { Core::Runner.new(reviews: described_class.new) }
  7. it 'simplifies render simple partial' do
  8. content = <<-EOF
  9. <%= render partial: 'sidebar' %>
  10. EOF
  11. runner.review('app/views/posts/index.html.erb', content)
  12. expect(runner.errors.size).to eq(1)
  13. expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
  14. end
  15. it 'simplifies render partial with object' do
  16. content = <<-EOF
  17. <%= render partial: 'post', object: @post %>
  18. EOF
  19. runner.review('app/views/posts/index.html.erb', content)
  20. expect(runner.errors.size).to eq(1)
  21. expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
  22. end
  23. it 'simplifies render partial with collection' do
  24. content = <<-EOF
  25. <%= render partial: 'posts', collection: @posts %>
  26. EOF
  27. runner.review('app/views/posts/index.html.erb', content)
  28. expect(runner.errors.size).to eq(1)
  29. expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
  30. end
  31. it 'simplifies render partial with local variables' do
  32. content = <<-EOF
  33. <%= render partial: 'comment', locals: { parent: post } %>
  34. EOF
  35. runner.review('app/views/posts/index.html.erb', content)
  36. expect(runner.errors.size).to eq(1)
  37. expect(runner.errors[0].to_s).to eq('app/views/posts/index.html.erb:1 - simplify render in views')
  38. end
  39. it 'does not simplify render simple partial' do
  40. content = <<-EOF
  41. <%= render 'sidebar' %>
  42. <%= render 'shared/sidebar' %>
  43. EOF
  44. runner.review('app/views/posts/index.html.erb', content)
  45. expect(runner.errors.size).to eq(0)
  46. end
  47. it 'does not simplify render partial with object' do
  48. content = <<-EOF
  49. <%= render @post %>
  50. EOF
  51. runner.review('app/views/posts/index.html.erb', content)
  52. expect(runner.errors.size).to eq(0)
  53. end
  54. it 'does not simplify render partial with collection' do
  55. content = <<-EOF
  56. <%= render @posts %>
  57. EOF
  58. runner.review('app/views/posts/index.html.erb', content)
  59. expect(runner.errors.size).to eq(0)
  60. end
  61. it 'does not simplify render partial with local variables' do
  62. content = <<-EOF
  63. <%= render 'comment', parent: post %>
  64. EOF
  65. runner.review('app/views/posts/index.html.erb', content)
  66. expect(runner.errors.size).to eq(0)
  67. end
  68. it 'does not simplify render partial with complex partial' do
  69. content = <<-EOF
  70. <%= render partial: 'shared/post', object: @post %>
  71. EOF
  72. runner.review('app/views/posts/index.html.erb', content)
  73. expect(runner.errors.size).to eq(0)
  74. end
  75. it 'does not simplify render partial with layout option' do
  76. content = <<-EOF
  77. <%= render partial: 'post', layout: 'post' %>
  78. EOF
  79. runner.review('app/views/posts/index.html.erb', content)
  80. expect(runner.errors.size).to eq(0)
  81. end
  82. it 'does not check ignored files' do
  83. runner = Core::Runner.new(reviews: described_class.new(ignored_files: %r{views/posts/index}))
  84. content = <<-EOF
  85. <%= render partial: 'sidebar' %>
  86. EOF
  87. runner.review('app/views/posts/index.html.erb', content)
  88. expect(runner.errors.size).to eq(0)
  89. end
  90. end
  91. end
  92. end