class RuboCop::Cop::Highlands::RspecEnvironmentModification
This cop checks how the Rails environment is modified in specs. If an individual method on Rails.env is modified multiple environment related branchs could be run down. Rather than modifying a single path or setting Rails.env in a way that could bleed into other specs, use `stub_env`
@example
# bad # spec/foo/bar_spec.rb before(:each) do allow(Rails.env).to receive(:production).and_return(true) end before(:each) do expect(Rails.env).to receive(:production).and_return(true) end before(:each) do Rails.env = :production end # good # spec/foo/bar_spec.rb do before(:each) do stub_env(:production) end
Constants
- MESSAGE
Public Instance Methods
is_spec_file?(path)
click to toggle source
# File lib/rubocop/cop/highlands/rspec_environment_modification.rb, line 52 def is_spec_file?(path) path.end_with?('_spec.rb') end
on_send(node)
click to toggle source
# File lib/rubocop/cop/highlands/rspec_environment_modification.rb, line 44 def on_send(node) path = node.source_range.source_buffer.name return unless is_spec_file?(path) if rails_env_assignment(node) || allow_or_expect_rails_env(node) || stub_rails_env(node) add_offense(node, message: MESSAGE) end end