Created
March 15, 2019 14:02
-
-
Save jandudulski/b97dc4d6a8df6176269b801fbf95af80 to your computer and use it in GitHub Desktop.
Rails configuration injection for specs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# config/application.rb | |
module MyApp | |
class Application < Rails::Application | |
config.my_setting = "prod value" | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# spec/support/my_setting.rb | |
RSpec.configure do |config| | |
config.around(:each) do |example| | |
orig_my_setting = Rails.configuration.my_setting | |
if example.metadata[:my_setting] | |
Rails.configuration.my_setting = example.metadata[:my_setting] | |
end | |
example.run | |
Rails.configuration.my_setting = orig_my_setting | |
end | |
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# spec/something/some_spec.rb | |
RSpec.describe "Example" do | |
it "uses standard setting" do | |
expect(Rails.configuration.my_setting).to eq("prod value") | |
end | |
it "overwrites the config", my_setting: "test value" do | |
expect(Rails.configuration.my_setting).to eq("test value") | |
end | |
end |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment