Module: SimpleCrud::RSpec::Helpers::Settings

Included in:
SimpleCrud::RSpec::Helpers
Defined in:
lib/simple_crud/rspec/helpers/settings.rb

Overview

Settings resolution: simple_crud: example-group metadata first, falling back to the app-wide SimpleCrud::RSpec::Config singleton.

Instance Method Summary collapse

Instance Method Details

#configObject



9
10
11
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 9

def config
  SimpleCrud::RSpec::Config.instance
end

#created_record_checkObject



31
32
33
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 31

def created_record_check
  setting(:created_record_check)
end

#resolve(value) ⇒ Object



22
23
24
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 22

def resolve(value)
  value.is_a?(Proc) ? instance_exec(&value) : value
end

#setting(name) ⇒ Object



18
19
20
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 18

def setting(name)
  simple_crud_settings.fetch(name) { config.public_send(name) }
end

#simple_crud_settingsObject



13
14
15
16
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 13

def simple_crud_settings
  source = ::RSpec.current_example ? ::RSpec.current_example. : 
  source[:simple_crud] || {}
end

#with_config_override(setting, value) ⇒ Object

Runs the block with a config setting temporarily overridden, restoring the original value afterwards (even if the block raises). Useful when a controller's spec needs a different setting than the app-wide default.



38
39
40
41
42
43
44
45
# File 'lib/simple_crud/rspec/helpers/settings.rb', line 38

def with_config_override(setting, value)
  config_instance = SimpleCrud::RSpec::Config.instance
  original = config_instance.public_send(setting)
  SimpleCrud::RSpec.configure { |c| c.public_send("#{setting}=", value) }
  yield
ensure
  SimpleCrud::RSpec.configure { |c| c.public_send("#{setting}=", original) }
end