moduleRSpecmoduleRails# Fake class to document RSpec Rails configuration options. In practice,# these are dynamically added to the normal RSpec configuration object.classConfiguration# @!method infer_spec_type_from_file_location!# Automatically tag specs in conventional directories with matching `type`# metadata so that they have relevant helpers available to them. See# `RSpec::Rails::DIRECTORY_MAPPINGS` for details on which metadata is# applied to each directory.# @!method render_views=(val)## When set to `true`, controller specs will render the relevant view as# well. Defaults to `false`.# @!method render_views(val)# Enables view rendering for controllers specs.# @!method render_views?# Reader for currently value of `render_views` setting.end# Mappings used by `infer_spec_type_from_file_location!`.## @api privateDIRECTORY_MAPPINGS={:controller=>%w[spec controllers],:helper=>%w[spec helpers],:job=>%w[spec jobs],:mailer=>%w[spec mailers],:model=>%w[spec models],:request=>%w[spec (requests|integration|api)],:routing=>%w[spec routing],:view=>%w[spec views],:feature=>%w[spec features],:system=>%w[spec system]}# Sets up the different example group modules for the different spec types## @api privatedefself.add_test_type_configurations(config)config.includeRSpec::Rails::ControllerExampleGroup,:type=>:controllerconfig.includeRSpec::Rails::HelperExampleGroup,:type=>:helperconfig.includeRSpec::Rails::ModelExampleGroup,:type=>:modelconfig.includeRSpec::Rails::RequestExampleGroup,:type=>:requestconfig.includeRSpec::Rails::RoutingExampleGroup,:type=>:routingconfig.includeRSpec::Rails::ViewExampleGroup,:type=>:viewconfig.includeRSpec::Rails::FeatureExampleGroup,:type=>:featureconfig.includeRSpec::Rails::Matchersconfig.includeRSpec::Rails::SystemExampleGroup,:type=>:systemend# @private# rubocop:disable Style/MethodLengthdefself.initialize_configuration(config)config.backtrace_exclusion_patterns<</vendor\//config.backtrace_exclusion_patterns<<%r{lib/rspec/rails}# controller settingsconfig.add_setting:infer_base_class_for_anonymous_controllers,:default=>true# fixture supportconfig.add_setting:use_transactional_fixtures,:alias_with=>:use_transactional_examplesconfig.add_setting:use_instantiated_fixturesconfig.add_setting:global_fixturesconfig.add_setting:fixture_pathconfig.includeRSpec::Rails::FixtureSupport,:use_fixtures# We'll need to create a deprecated module in order to properly report to# gems / projects which are relying on this being loaded globally.## See rspec/rspec-rails#1355 for history## @deprecated Include `RSpec::Rails::RailsExampleGroup` or# `RSpec::Rails::FixtureSupport` directly insteadconfig.includeRSpec::Rails::FixtureSupportif::Rails::VERSION::STRING>'5'config.add_setting:file_fixture_path,:default=>'spec/fixtures/files'config.includeRSpec::Rails::FileFixtureSupportend# Add support for fixture_path on fixture_file_uploadconfig.includeRSpec::Rails::FixtureFileUploadSupport# This allows us to expose `render_views` as a config option even though it# breaks the convention of other options by using `render_views` as a# command (i.e. `render_views = true`), where it would normally be used# as a getter. This makes it easier for rspec-rails users because we use# `render_views` directly in example groups, so this aligns the two APIs,# but requires this workaround:config.add_setting:rendering_views,:default=>falseconfig.instance_execdodefrender_views=(val)self.rendering_views=valenddefrender_viewsself.rendering_views=trueenddefrender_views?rendering_viewsenddefinfer_spec_type_from_file_location!DIRECTORY_MAPPINGS.eachdo|type,dir_parts|escaped_path=Regexp.compile(dir_parts.join('[\\\/]')+'[\\\/]')define_derived_metadata(:file_path=>escaped_path)do|metadata|metadata[:type]||=typeendendend# Adds exclusion filters for gems included with Railsdeffilter_rails_from_backtrace!filter_gems_from_backtrace"actionmailer","actionpack","actionview"filter_gems_from_backtrace"activemodel","activerecord","activesupport","activejob"endendadd_test_type_configurations(config)ifdefined?(::Rails::Controller::Testing)[:controller,:view,:request].eachdo|type|config.include::Rails::Controller::Testing::TestProcess,:type=>typeconfig.include::Rails::Controller::Testing::TemplateAssertions,:type=>typeconfig.include::Rails::Controller::Testing::Integration,:type=>typeendendifdefined?(ActionMailer)config.includeRSpec::Rails::MailerExampleGroup,:type=>:mailerendifdefined?(ActiveJob)config.includeRSpec::Rails::JobExampleGroup,:type=>:jobendend# rubocop:enable Style/MethodLengthinitialize_configurationRSpec.configurationendend