rspec-rails 3.0.0.rc1 → 3.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +14 -6
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/.yardopts +1 -1
- data/Changelog.md +19 -1
- data/lib/generators/rspec.rb +6 -0
- data/lib/generators/rspec/controller/controller_generator.rb +1 -0
- data/lib/generators/rspec/controller/templates/controller_spec.rb +2 -2
- data/lib/generators/rspec/controller/templates/view_spec.rb +2 -2
- data/lib/generators/rspec/feature/feature_generator.rb +1 -0
- data/lib/generators/rspec/feature/templates/feature_spec.rb +1 -1
- data/lib/generators/rspec/helper/helper_generator.rb +1 -0
- data/lib/generators/rspec/helper/templates/helper_spec.rb +2 -2
- data/lib/generators/rspec/install/install_generator.rb +24 -4
- data/lib/generators/rspec/install/templates/spec/{spec_helper.rb.tt → rails_helper.rb} +4 -17
- data/lib/generators/rspec/integration/integration_generator.rb +1 -0
- data/lib/generators/rspec/integration/templates/request_spec.rb +2 -2
- data/lib/generators/rspec/mailer/mailer_generator.rb +1 -0
- data/lib/generators/rspec/mailer/templates/mailer_spec.rb +2 -2
- data/lib/generators/rspec/model/model_generator.rb +1 -0
- data/lib/generators/rspec/model/templates/model_spec.rb +2 -2
- data/lib/generators/rspec/observer/observer_generator.rb +1 -0
- data/lib/generators/rspec/observer/templates/observer_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/scaffold_generator.rb +8 -33
- data/lib/generators/rspec/scaffold/templates/controller_spec.rb +20 -33
- data/lib/generators/rspec/scaffold/templates/edit_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/index_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/new_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/routing_spec.rb +2 -2
- data/lib/generators/rspec/scaffold/templates/show_spec.rb +3 -3
- data/lib/generators/rspec/view/templates/view_spec.rb +2 -2
- data/lib/generators/rspec/view/view_generator.rb +1 -0
- data/lib/rspec-rails.rb +3 -0
- data/lib/rspec/rails/adapters.rb +10 -18
- data/lib/rspec/rails/configuration.rb +40 -14
- data/lib/rspec/rails/example/controller_example_group.rb +8 -6
- data/lib/rspec/rails/example/feature_example_group.rb +5 -0
- data/lib/rspec/rails/example/helper_example_group.rb +2 -1
- data/lib/rspec/rails/example/mailer_example_group.rb +12 -0
- data/lib/rspec/rails/example/model_example_group.rb +2 -0
- data/lib/rspec/rails/example/rails_example_group.rb +1 -0
- data/lib/rspec/rails/example/request_example_group.rb +2 -0
- data/lib/rspec/rails/example/routing_example_group.rb +3 -2
- data/lib/rspec/rails/example/view_example_group.rb +5 -4
- data/lib/rspec/rails/fixture_support.rb +4 -3
- data/lib/rspec/rails/matchers/be_a_new.rb +13 -12
- data/lib/rspec/rails/matchers/be_new_record.rb +1 -3
- data/lib/rspec/rails/matchers/be_valid.rb +1 -4
- data/lib/rspec/rails/matchers/have_rendered.rb +3 -2
- data/lib/rspec/rails/matchers/redirect_to.rb +3 -5
- data/lib/rspec/rails/matchers/routing_matchers.rb +14 -6
- data/lib/rspec/rails/version.rb +3 -1
- data/lib/rspec/rails/view_assigns.rb +17 -16
- data/lib/rspec/rails/view_rendering.rb +8 -3
- metadata +73 -67
- metadata.gz.sig +2 -3
- data/lib/generators/rspec/install/templates/.rspec +0 -1
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
|
4
|
-
describe "<%= ns_table_name %>/edit", :type => :view do
|
4
|
+
RSpec.describe "<%= ns_table_name %>/edit", :type => :view do
|
5
5
|
before(:each) do
|
6
6
|
@<%= ns_file_name %> = assign(:<%= ns_file_name %>, <%= class_name %>.create!(<%= '))' if output_attributes.empty? %>
|
7
7
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
|
4
|
-
describe "<%= ns_table_name %>/index", :type => :view do
|
4
|
+
RSpec.describe "<%= ns_table_name %>/index", :type => :view do
|
5
5
|
before(:each) do
|
6
6
|
assign(:<%= table_name %>, [
|
7
7
|
<% [1,2].each_with_index do |id, model_index| -%>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
|
4
|
-
describe "<%= ns_table_name %>/new", :type => :view do
|
4
|
+
RSpec.describe "<%= ns_table_name %>/new", :type => :view do
|
5
5
|
before(:each) do
|
6
6
|
assign(:<%= ns_file_name %>, <%= class_name %>.new(<%= '))' if output_attributes.empty? %>
|
7
7
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require "
|
1
|
+
require "rails_helper"
|
2
2
|
|
3
3
|
<% module_namespacing do -%>
|
4
|
-
describe <%= controller_class_name %>Controller, :type => :routing do
|
4
|
+
RSpec.describe <%= controller_class_name %>Controller, :type => :routing do
|
5
5
|
describe "routing" do
|
6
6
|
|
7
7
|
<% unless options[:singleton] -%>
|
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'rails_helper'
|
2
2
|
|
3
3
|
<% output_attributes = attributes.reject{|attribute| [:datetime, :timestamp, :time, :date].index(attribute.type) } -%>
|
4
|
-
describe "<%= ns_table_name %>/show", :type => :view do
|
4
|
+
RSpec.describe "<%= ns_table_name %>/show", :type => :view do
|
5
5
|
before(:each) do
|
6
6
|
@<%= ns_file_name %> = assign(:<%= ns_file_name %>, <%= class_name %>.create!(<%= '))' if output_attributes.empty? %>
|
7
7
|
<% output_attributes.each_with_index do |attribute, attribute_index| -%>
|
@@ -15,7 +15,7 @@ describe "<%= ns_table_name %>/show", :type => :view do
|
|
15
15
|
it "renders attributes in <p>" do
|
16
16
|
render
|
17
17
|
<% for attribute in output_attributes -%>
|
18
|
-
expect(rendered).to match(/<%=
|
18
|
+
expect(rendered).to match(/<%= raw_value_for(attribute) %>/)
|
19
19
|
<% end -%>
|
20
20
|
end
|
21
21
|
end
|
data/lib/rspec-rails.rb
CHANGED
@@ -1,5 +1,8 @@
|
|
1
|
+
# Namespace for all core RSpec projects.
|
1
2
|
module RSpec
|
3
|
+
# Namespace for rspec-rails code.
|
2
4
|
module Rails
|
5
|
+
# Railtie to hook into Rails.
|
3
6
|
class Railtie < ::Rails::Railtie
|
4
7
|
# Rails-3.0.1 requires config.app_generators instead of 3.0.0's config.generators
|
5
8
|
generators = config.respond_to?(:app_generators) ? config.app_generators : config.generators
|
data/lib/rspec/rails/adapters.rb
CHANGED
@@ -7,6 +7,8 @@ module RSpec
|
|
7
7
|
if ::Rails::VERSION::STRING >= '4.1.0'
|
8
8
|
gem 'minitest'
|
9
9
|
require 'minitest/assertions'
|
10
|
+
# Constant aliased to either Minitest or TestUnit, depending on what is
|
11
|
+
# loaded.
|
10
12
|
Assertions = Minitest::Assertions
|
11
13
|
else
|
12
14
|
begin
|
@@ -16,12 +18,13 @@ module RSpec
|
|
16
18
|
require 'rubysl-test-unit' if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'rbx'
|
17
19
|
require 'test/unit/assertions'
|
18
20
|
end
|
21
|
+
# Constant aliased to either Minitest or TestUnit, depending on what is
|
22
|
+
# loaded.
|
19
23
|
Assertions = Test::Unit::Assertions
|
20
24
|
end
|
21
25
|
|
22
|
-
# @
|
26
|
+
# @private
|
23
27
|
class AssertionDelegator < Module
|
24
|
-
# @api private
|
25
28
|
def initialize(*assertion_modules)
|
26
29
|
assertion_class = Class.new(SimpleDelegator) do
|
27
30
|
include ::RSpec::Rails::Assertions
|
@@ -30,12 +33,10 @@ module RSpec
|
|
30
33
|
end
|
31
34
|
|
32
35
|
super() do
|
33
|
-
# @api private
|
34
36
|
define_method :build_assertion_instance do
|
35
37
|
assertion_class.new(self)
|
36
38
|
end
|
37
39
|
|
38
|
-
# @api private
|
39
40
|
def assertion_instance
|
40
41
|
@assertion_instance ||= build_assertion_instance
|
41
42
|
end
|
@@ -54,7 +55,7 @@ module RSpec
|
|
54
55
|
|
55
56
|
# Adapts example groups for `Minitest::Test::LifecycleHooks`
|
56
57
|
#
|
57
|
-
# @
|
58
|
+
# @private
|
58
59
|
module MinitestLifecycleAdapter
|
59
60
|
extend ActiveSupport::Concern
|
60
61
|
|
@@ -82,26 +83,22 @@ module RSpec
|
|
82
83
|
end
|
83
84
|
end
|
84
85
|
|
85
|
-
# @
|
86
|
+
# @private
|
86
87
|
module MinitestCounters
|
87
|
-
# @api private
|
88
88
|
def assertions
|
89
89
|
@assertions ||= 0
|
90
90
|
end
|
91
91
|
|
92
|
-
# @api private
|
93
92
|
def assertions=(assertions)
|
94
93
|
@assertions = assertions
|
95
94
|
end
|
96
95
|
end
|
97
96
|
|
98
|
-
# @
|
97
|
+
# @private
|
99
98
|
module SetupAndTeardownAdapter
|
100
99
|
extend ActiveSupport::Concern
|
101
100
|
|
102
101
|
module ClassMethods
|
103
|
-
# @api private
|
104
|
-
#
|
105
102
|
# Wraps `setup` calls from within Rails' testing framework in `before`
|
106
103
|
# hooks.
|
107
104
|
def setup(*methods)
|
@@ -123,7 +120,6 @@ module RSpec
|
|
123
120
|
end
|
124
121
|
end
|
125
122
|
|
126
|
-
# @api private
|
127
123
|
def method_name
|
128
124
|
@example
|
129
125
|
end
|
@@ -133,9 +129,8 @@ module RSpec
|
|
133
129
|
module MinitestAssertionAdapter
|
134
130
|
extend ActiveSupport::Concern
|
135
131
|
|
132
|
+
# @private
|
136
133
|
module ClassMethods
|
137
|
-
# @api private
|
138
|
-
#
|
139
134
|
# Returns the names of assertion methods that we want to expose to
|
140
135
|
# examples without exposing non-assertion methods in Test::Unit or
|
141
136
|
# Minitest.
|
@@ -144,7 +139,6 @@ module RSpec
|
|
144
139
|
[:build_message]
|
145
140
|
end
|
146
141
|
|
147
|
-
# @api private
|
148
142
|
def define_assertion_delegators
|
149
143
|
assertion_method_names.each do |m|
|
150
144
|
define_method(m.to_sym) do |*args, &block|
|
@@ -154,13 +148,11 @@ module RSpec
|
|
154
148
|
end
|
155
149
|
end
|
156
150
|
|
157
|
-
# @api private
|
158
151
|
class AssertionDelegator
|
159
152
|
include ::RSpec::Rails::Assertions
|
160
153
|
include ::RSpec::Rails::MinitestCounters
|
161
154
|
end
|
162
155
|
|
163
|
-
# @api private
|
164
156
|
def assertion_delegator
|
165
157
|
@assertion_delegator ||= AssertionDelegator.new
|
166
158
|
end
|
@@ -173,7 +165,7 @@ module RSpec
|
|
173
165
|
# Backwards compatibility. It's unlikely that anyone is using this
|
174
166
|
# constant, but we had forgotten to mark it as `@private` earlier
|
175
167
|
#
|
176
|
-
# @
|
168
|
+
# @private
|
177
169
|
TestUnitAssertionAdapter = MinitestAssertionAdapter
|
178
170
|
end
|
179
171
|
end
|
@@ -1,5 +1,41 @@
|
|
1
1
|
module RSpec
|
2
|
+
|
2
3
|
module Rails
|
4
|
+
# Fake class to document RSpec Rails configuration options. In practice,
|
5
|
+
# these are dynamically added to the normal RSpec configuration object.
|
6
|
+
class Configuration
|
7
|
+
# @!method infer_spec_type_from_file_location!
|
8
|
+
# Automatically tag specs in conventional directories with matching `type`
|
9
|
+
# metadata so that they have relevant helpers available to them. See
|
10
|
+
# `RSpec::Rails::DIRECTORY_MAPPINGS` for details on which metadata is
|
11
|
+
# applied to each directory.
|
12
|
+
|
13
|
+
# @!method render_views=(val)
|
14
|
+
#
|
15
|
+
# When set to `true`, controller specs will render the relevant view as
|
16
|
+
# well. Defaults to `false`.
|
17
|
+
|
18
|
+
# @!method render_views(val)
|
19
|
+
# Enables view rendering for controllers specs.
|
20
|
+
|
21
|
+
# @!method render_views?
|
22
|
+
# Reader for currently value of `render_views` setting.
|
23
|
+
end
|
24
|
+
|
25
|
+
# Mappings used by `infer_spec_type_from_file_location!`.
|
26
|
+
#
|
27
|
+
# @api private
|
28
|
+
DIRECTORY_MAPPINGS = {
|
29
|
+
:controller => %w[spec controllers],
|
30
|
+
:helper => %w[spec helpers],
|
31
|
+
:mailer => %w[spec mailers],
|
32
|
+
:model => %w[spec models],
|
33
|
+
:request => %w[spec (requests|integration|api)],
|
34
|
+
:routing => %w[spec routing],
|
35
|
+
:view => %w[spec views],
|
36
|
+
:feature => %w[spec features]
|
37
|
+
}
|
38
|
+
|
3
39
|
# @private
|
4
40
|
def self.initialize_configuration(config)
|
5
41
|
config.backtrace_exclusion_patterns << /vendor\//
|
@@ -13,7 +49,7 @@ module RSpec
|
|
13
49
|
config.include RSpec::Rails::ViewExampleGroup, :type => :view
|
14
50
|
config.include RSpec::Rails::FeatureExampleGroup, :type => :feature
|
15
51
|
|
16
|
-
if defined?(
|
52
|
+
if defined?(ActionMailer)
|
17
53
|
config.include RSpec::Rails::MailerExampleGroup, :type => :mailer
|
18
54
|
end
|
19
55
|
|
@@ -27,11 +63,10 @@ module RSpec
|
|
27
63
|
config.add_setting :global_fixtures
|
28
64
|
config.add_setting :fixture_path
|
29
65
|
|
30
|
-
# view rendering settings
|
31
66
|
# This allows us to expose `render_views` as a config option even though it
|
32
67
|
# breaks the convention of other options by using `render_views` as a
|
33
|
-
# command (i.e. render_views = true), where it would normally be used
|
34
|
-
# getter. This makes it easier for rspec-rails users because we use
|
68
|
+
# command (i.e. `render_views = true`), where it would normally be used
|
69
|
+
# as a getter. This makes it easier for rspec-rails users because we use
|
35
70
|
# `render_views` directly in example groups, so this aligns the two APIs,
|
36
71
|
# but requires this workaround:
|
37
72
|
config.add_setting :rendering_views, :default => false
|
@@ -49,16 +84,7 @@ module RSpec
|
|
49
84
|
end
|
50
85
|
|
51
86
|
def config.infer_spec_type_from_file_location!
|
52
|
-
|
53
|
-
:controller => %w[spec controllers],
|
54
|
-
:helper => %w[spec helpers],
|
55
|
-
:mailer => %w[spec mailers],
|
56
|
-
:model => %w[spec models],
|
57
|
-
:request => %w[spec (requests|integration|api)],
|
58
|
-
:routing => %w[spec routing],
|
59
|
-
:view => %w[spec views],
|
60
|
-
:feature => %w[spec features]
|
61
|
-
}.each do |type, dir_parts|
|
87
|
+
DIRECTORY_MAPPINGS.each do |type, dir_parts|
|
62
88
|
escaped_path = Regexp.compile(dir_parts.join('[\\\/]') + '[\\\/]')
|
63
89
|
define_derived_metadata(:file_path => escaped_path) do |metadata|
|
64
90
|
metadata[:type] ||= type
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module RSpec::Rails
|
2
|
+
# Container module for controller spec functionality.
|
2
3
|
module ControllerExampleGroup
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
include RSpec::Rails::RailsExampleGroup
|
@@ -9,6 +10,7 @@ module RSpec::Rails
|
|
9
10
|
include RSpec::Rails::Matchers::RoutingMatchers
|
10
11
|
include RSpec::Rails::AssertionDelegator.new(ActionDispatch::Assertions::RoutingAssertions)
|
11
12
|
|
13
|
+
# Class-level DSL for controller specs.
|
12
14
|
module ClassMethods
|
13
15
|
# @private
|
14
16
|
def controller_class
|
@@ -20,7 +22,7 @@ module RSpec::Rails
|
|
20
22
|
# `body` in that context. Also sets up implicit routes for this
|
21
23
|
# controller, that are separate from those defined in "config/routes.rb".
|
22
24
|
#
|
23
|
-
# @note Due to Ruby 1.8 scoping rules in
|
25
|
+
# @note Due to Ruby 1.8 scoping rules in anonymous subclasses, constants
|
24
26
|
# defined in `ApplicationController` must be fully qualified (e.g.
|
25
27
|
# `ApplicationController::AccessDenied`) in the block passed to the
|
26
28
|
# `controller` method. Any instance methods, filters, etc, that are
|
@@ -28,7 +30,6 @@ module RSpec::Rails
|
|
28
30
|
# within the block.
|
29
31
|
#
|
30
32
|
# @example
|
31
|
-
#
|
32
33
|
# describe ApplicationController do
|
33
34
|
# controller do
|
34
35
|
# def index
|
@@ -66,7 +67,7 @@ module RSpec::Rails
|
|
66
67
|
end
|
67
68
|
end
|
68
69
|
end
|
69
|
-
new_controller_class.
|
70
|
+
new_controller_class.class_exec(&body)
|
70
71
|
(class << self; self; end).__send__(:define_method, :controller_class) { new_controller_class }
|
71
72
|
|
72
73
|
before do
|
@@ -97,7 +98,6 @@ module RSpec::Rails
|
|
97
98
|
# is most useful when testing Rails engines.
|
98
99
|
#
|
99
100
|
# @example
|
100
|
-
#
|
101
101
|
# describe MyEngine::PostsController do
|
102
102
|
# routes { MyEngine::Engine.routes }
|
103
103
|
#
|
@@ -112,12 +112,15 @@ module RSpec::Rails
|
|
112
112
|
|
113
113
|
attr_reader :controller, :routes
|
114
114
|
|
115
|
-
# @
|
115
|
+
# @private
|
116
|
+
#
|
117
|
+
# RSpec Rails uses this to make Rails routes easily available to specs.
|
116
118
|
def routes=(routes)
|
117
119
|
@routes = routes
|
118
120
|
assertion_instance.instance_variable_set(:@routes, routes)
|
119
121
|
end
|
120
122
|
|
123
|
+
# @private
|
121
124
|
module BypassRescue
|
122
125
|
def rescue_with_handler(exception)
|
123
126
|
raise exception
|
@@ -130,7 +133,6 @@ module RSpec::Rails
|
|
130
133
|
# conditions.
|
131
134
|
#
|
132
135
|
# @example
|
133
|
-
#
|
134
136
|
# describe ProfilesController do
|
135
137
|
# it "raises a 403 when a non-admin user tries to view another user's profile" do
|
136
138
|
# profile = create_profile
|
@@ -1,8 +1,10 @@
|
|
1
1
|
module RSpec::Rails
|
2
|
+
# Container module for routing spec functionality.
|
2
3
|
module FeatureExampleGroup
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
include RSpec::Rails::RailsExampleGroup
|
5
6
|
|
7
|
+
# Default host to be used in Rails route helpers if none is specified.
|
6
8
|
DEFAULT_HOST = "www.example.com"
|
7
9
|
|
8
10
|
included do
|
@@ -17,6 +19,9 @@ module RSpec::Rails
|
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
22
|
+
# Shim to check for presence of Capybara. Will delegate if present, raise
|
23
|
+
# if not. We assume here that in most cases `visit` will be the first
|
24
|
+
# Capybara method called in a spec.
|
20
25
|
def visit(*)
|
21
26
|
if defined?(super)
|
22
27
|
super
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'rspec/rails/view_assigns'
|
2
2
|
|
3
3
|
module RSpec::Rails
|
4
|
+
# Container module for helper specs.
|
4
5
|
module HelperExampleGroup
|
5
6
|
extend ActiveSupport::Concern
|
6
7
|
include RSpec::Rails::RailsExampleGroup
|
7
8
|
include ActionView::TestCase::Behavior
|
8
9
|
include RSpec::Rails::ViewAssigns
|
9
10
|
|
11
|
+
# @private
|
10
12
|
module ClassMethods
|
11
|
-
# @api private
|
12
13
|
def determine_default_helper_class(ignore)
|
13
14
|
described_class
|
14
15
|
end
|
@@ -1,5 +1,15 @@
|
|
1
|
+
module RSpec::Rails
|
2
|
+
# Container module for mailer spec functionality. It is only available if
|
3
|
+
# ActionMailer has been loaded before it.
|
4
|
+
module MailerExampleGroup
|
5
|
+
# This blank module is only necessary for YARD processing. It doesn't
|
6
|
+
# handle the conditional `defined?` check below very well.
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
1
10
|
if defined?(ActionMailer)
|
2
11
|
module RSpec::Rails
|
12
|
+
# Container module for mailer spec functionality.
|
3
13
|
module MailerExampleGroup
|
4
14
|
extend ActiveSupport::Concern
|
5
15
|
include RSpec::Rails::RailsExampleGroup
|
@@ -11,7 +21,9 @@ if defined?(ActionMailer)
|
|
11
21
|
options.each { |key, value| default_url_options[key] = value } if options
|
12
22
|
end
|
13
23
|
|
24
|
+
# Class-level DSL for mailer specs.
|
14
25
|
module ClassMethods
|
26
|
+
# Alias for `described_class`.
|
15
27
|
def mailer_class
|
16
28
|
described_class
|
17
29
|
end
|
@@ -1,4 +1,5 @@
|
|
1
1
|
module RSpec::Rails
|
2
|
+
# Container class for request spec functionality.
|
2
3
|
module RequestExampleGroup
|
3
4
|
extend ActiveSupport::Concern
|
4
5
|
include RSpec::Rails::RailsExampleGroup
|
@@ -8,6 +9,7 @@ module RSpec::Rails
|
|
8
9
|
include RSpec::Rails::Matchers::RenderTemplate
|
9
10
|
include ActionController::TemplateAssertions
|
10
11
|
|
12
|
+
# Delegates to `Rails.application`.
|
11
13
|
def app
|
12
14
|
::Rails.application
|
13
15
|
end
|