mini-quick-sys 0.0.1

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.
Files changed (103) hide show
  1. checksums.yaml +7 -0
  2. data/mini-quick-sys.gemspec +12 -0
  3. data/rspec-rails-8.0.4/Capybara.md +28 -0
  4. data/rspec-rails-8.0.4/Changelog.md +1408 -0
  5. data/rspec-rails-8.0.4/LICENSE.md +25 -0
  6. data/rspec-rails-8.0.4/README.md +386 -0
  7. data/rspec-rails-8.0.4/lib/generators/rspec/authentication/authentication_generator.rb +25 -0
  8. data/rspec-rails-8.0.4/lib/generators/rspec/authentication/templates/user_spec.rb +5 -0
  9. data/rspec-rails-8.0.4/lib/generators/rspec/authentication/templates/users.yml +11 -0
  10. data/rspec-rails-8.0.4/lib/generators/rspec/channel/channel_generator.rb +12 -0
  11. data/rspec-rails-8.0.4/lib/generators/rspec/channel/templates/channel_spec.rb.erb +7 -0
  12. data/rspec-rails-8.0.4/lib/generators/rspec/controller/controller_generator.rb +51 -0
  13. data/rspec-rails-8.0.4/lib/generators/rspec/controller/templates/controller_spec.rb +16 -0
  14. data/rspec-rails-8.0.4/lib/generators/rspec/controller/templates/request_spec.rb +19 -0
  15. data/rspec-rails-8.0.4/lib/generators/rspec/controller/templates/routing_spec.rb +13 -0
  16. data/rspec-rails-8.0.4/lib/generators/rspec/controller/templates/view_spec.rb +5 -0
  17. data/rspec-rails-8.0.4/lib/generators/rspec/feature/feature_generator.rb +29 -0
  18. data/rspec-rails-8.0.4/lib/generators/rspec/feature/templates/feature_singular_spec.rb +5 -0
  19. data/rspec-rails-8.0.4/lib/generators/rspec/feature/templates/feature_spec.rb +5 -0
  20. data/rspec-rails-8.0.4/lib/generators/rspec/generator/generator_generator.rb +24 -0
  21. data/rspec-rails-8.0.4/lib/generators/rspec/generator/templates/generator_spec.rb +5 -0
  22. data/rspec-rails-8.0.4/lib/generators/rspec/helper/helper_generator.rb +16 -0
  23. data/rspec-rails-8.0.4/lib/generators/rspec/helper/templates/helper_spec.rb +17 -0
  24. data/rspec-rails-8.0.4/lib/generators/rspec/install/install_generator.rb +80 -0
  25. data/rspec-rails-8.0.4/lib/generators/rspec/install/templates/spec/rails_helper.rb +91 -0
  26. data/rspec-rails-8.0.4/lib/generators/rspec/job/job_generator.rb +13 -0
  27. data/rspec-rails-8.0.4/lib/generators/rspec/job/templates/job_spec.rb.erb +7 -0
  28. data/rspec-rails-8.0.4/lib/generators/rspec/mailbox/mailbox_generator.rb +14 -0
  29. data/rspec-rails-8.0.4/lib/generators/rspec/mailbox/templates/mailbox_spec.rb.erb +7 -0
  30. data/rspec-rails-8.0.4/lib/generators/rspec/mailer/mailer_generator.rb +30 -0
  31. data/rspec-rails-8.0.4/lib/generators/rspec/mailer/templates/fixture +3 -0
  32. data/rspec-rails-8.0.4/lib/generators/rspec/mailer/templates/mailer_spec.rb +25 -0
  33. data/rspec-rails-8.0.4/lib/generators/rspec/mailer/templates/preview.rb +13 -0
  34. data/rspec-rails-8.0.4/lib/generators/rspec/model/model_generator.rb +37 -0
  35. data/rspec-rails-8.0.4/lib/generators/rspec/model/templates/fixtures.yml +19 -0
  36. data/rspec-rails-8.0.4/lib/generators/rspec/model/templates/model_spec.rb +7 -0
  37. data/rspec-rails-8.0.4/lib/generators/rspec/request/request_generator.rb +17 -0
  38. data/rspec-rails-8.0.4/lib/generators/rspec/request/templates/request_spec.rb +10 -0
  39. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/scaffold_generator.rb +136 -0
  40. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/api_controller_spec.rb +129 -0
  41. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/api_request_spec.rb +131 -0
  42. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/controller_spec.rb +145 -0
  43. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/edit_spec.rb +27 -0
  44. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/index_spec.rb +26 -0
  45. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/new_spec.rb +22 -0
  46. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/request_spec.rb +138 -0
  47. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/routing_spec.rb +46 -0
  48. data/rspec-rails-8.0.4/lib/generators/rspec/scaffold/templates/show_spec.rb +21 -0
  49. data/rspec-rails-8.0.4/lib/generators/rspec/system/system_generator.rb +24 -0
  50. data/rspec-rails-8.0.4/lib/generators/rspec/system/templates/system_spec.rb +9 -0
  51. data/rspec-rails-8.0.4/lib/generators/rspec/view/templates/view_spec.rb +5 -0
  52. data/rspec-rails-8.0.4/lib/generators/rspec/view/view_generator.rb +22 -0
  53. data/rspec-rails-8.0.4/lib/generators/rspec.rb +56 -0
  54. data/rspec-rails-8.0.4/lib/rspec/rails/active_record.rb +25 -0
  55. data/rspec-rails-8.0.4/lib/rspec/rails/adapters.rb +196 -0
  56. data/rspec-rails-8.0.4/lib/rspec/rails/configuration.rb +158 -0
  57. data/rspec-rails-8.0.4/lib/rspec/rails/example/channel_example_group.rb +93 -0
  58. data/rspec-rails-8.0.4/lib/rspec/rails/example/controller_example_group.rb +217 -0
  59. data/rspec-rails-8.0.4/lib/rspec/rails/example/feature_example_group.rb +53 -0
  60. data/rspec-rails-8.0.4/lib/rspec/rails/example/helper_example_group.rb +42 -0
  61. data/rspec-rails-8.0.4/lib/rspec/rails/example/job_example_group.rb +23 -0
  62. data/rspec-rails-8.0.4/lib/rspec/rails/example/mailbox_example_group.rb +80 -0
  63. data/rspec-rails-8.0.4/lib/rspec/rails/example/mailer_example_group.rb +38 -0
  64. data/rspec-rails-8.0.4/lib/rspec/rails/example/model_example_group.rb +11 -0
  65. data/rspec-rails-8.0.4/lib/rspec/rails/example/rails_example_group.rb +23 -0
  66. data/rspec-rails-8.0.4/lib/rspec/rails/example/request_example_group.rb +27 -0
  67. data/rspec-rails-8.0.4/lib/rspec/rails/example/routing_example_group.rb +61 -0
  68. data/rspec-rails-8.0.4/lib/rspec/rails/example/system_example_group.rb +177 -0
  69. data/rspec-rails-8.0.4/lib/rspec/rails/example/view_example_group.rb +214 -0
  70. data/rspec-rails-8.0.4/lib/rspec/rails/example.rb +13 -0
  71. data/rspec-rails-8.0.4/lib/rspec/rails/extensions/active_record/proxy.rb +11 -0
  72. data/rspec-rails-8.0.4/lib/rspec/rails/extensions.rb +1 -0
  73. data/rspec-rails-8.0.4/lib/rspec/rails/feature_check.rb +51 -0
  74. data/rspec-rails-8.0.4/lib/rspec/rails/file_fixture_support.rb +18 -0
  75. data/rspec-rails-8.0.4/lib/rspec/rails/fixture_file_upload_support.rb +39 -0
  76. data/rspec-rails-8.0.4/lib/rspec/rails/fixture_support.rb +58 -0
  77. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/action_cable/have_broadcasted_to.rb +180 -0
  78. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/action_cable/have_streams.rb +58 -0
  79. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/action_cable.rb +70 -0
  80. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/action_mailbox.rb +73 -0
  81. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/active_job.rb +534 -0
  82. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/base_matcher.rb +179 -0
  83. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/be_a_new.rb +83 -0
  84. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/be_new_record.rb +30 -0
  85. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/be_valid.rb +49 -0
  86. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/have_enqueued_mail.rb +259 -0
  87. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/have_http_status.rb +381 -0
  88. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/have_rendered.rb +64 -0
  89. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/redirect_to.rb +38 -0
  90. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/relation_match_array.rb +3 -0
  91. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/routing_matchers.rb +125 -0
  92. data/rspec-rails-8.0.4/lib/rspec/rails/matchers/send_email.rb +122 -0
  93. data/rspec-rails-8.0.4/lib/rspec/rails/matchers.rb +36 -0
  94. data/rspec-rails-8.0.4/lib/rspec/rails/tasks/rspec.rake +49 -0
  95. data/rspec-rails-8.0.4/lib/rspec/rails/vendor/capybara.rb +32 -0
  96. data/rspec-rails-8.0.4/lib/rspec/rails/version.rb +9 -0
  97. data/rspec-rails-8.0.4/lib/rspec/rails/view_assigns.rb +27 -0
  98. data/rspec-rails-8.0.4/lib/rspec/rails/view_path_builder.rb +29 -0
  99. data/rspec-rails-8.0.4/lib/rspec/rails/view_rendering.rb +166 -0
  100. data/rspec-rails-8.0.4/lib/rspec/rails/view_spec_methods.rb +56 -0
  101. data/rspec-rails-8.0.4/lib/rspec/rails.rb +18 -0
  102. data/rspec-rails-8.0.4/lib/rspec-rails.rb +91 -0
  103. metadata +142 -0
@@ -0,0 +1,217 @@
1
+ module RSpec
2
+ module Rails
3
+ # @private
4
+ ControllerAssertionDelegator = RSpec::Rails::AssertionDelegator.new(
5
+ ActionDispatch::Assertions::RoutingAssertions
6
+ )
7
+
8
+ # @api public
9
+ # Container module for controller spec functionality.
10
+ module ControllerExampleGroup
11
+ extend ActiveSupport::Concern
12
+ include RSpec::Rails::RailsExampleGroup
13
+ include ActionController::TestCase::Behavior
14
+ include RSpec::Rails::ViewRendering
15
+ include RSpec::Rails::Matchers::RedirectTo
16
+ include RSpec::Rails::Matchers::RenderTemplate
17
+ include RSpec::Rails::Matchers::RoutingMatchers
18
+ include ControllerAssertionDelegator
19
+
20
+ # Class-level DSL for controller specs.
21
+ module ClassMethods
22
+ # @private
23
+ def controller_class
24
+ described_class
25
+ end
26
+
27
+ # Supports a simple DSL for specifying behavior of ApplicationController.
28
+ # Creates an anonymous subclass of ApplicationController and evals the
29
+ # `body` in that context. Also sets up implicit routes for this
30
+ # controller, that are separate from those defined in "config/routes.rb".
31
+ #
32
+ # @note Due to Ruby 1.8 scoping rules in anonymous subclasses, constants
33
+ # defined in `ApplicationController` must be fully qualified (e.g.
34
+ # `ApplicationController::AccessDenied`) in the block passed to the
35
+ # `controller` method. Any instance methods, filters, etc, that are
36
+ # defined in `ApplicationController`, however, are accessible from
37
+ # within the block.
38
+ #
39
+ # @example
40
+ # describe ApplicationController do
41
+ # controller do
42
+ # def index
43
+ # raise ApplicationController::AccessDenied
44
+ # end
45
+ # end
46
+ #
47
+ # describe "handling AccessDenied exceptions" do
48
+ # it "redirects to the /401.html page" do
49
+ # get :index
50
+ # response.should redirect_to("/401.html")
51
+ # end
52
+ # end
53
+ # end
54
+ #
55
+ # If you would like to spec a subclass of ApplicationController, call
56
+ # controller like so:
57
+ #
58
+ # controller(ApplicationControllerSubclass) do
59
+ # # ....
60
+ # end
61
+ def controller(base_class = nil, &body)
62
+ if RSpec.configuration.infer_base_class_for_anonymous_controllers?
63
+ base_class ||= controller_class
64
+ end
65
+ base_class ||= defined?(ApplicationController) ? ApplicationController : ActionController::Base
66
+
67
+ new_controller_class = Class.new(base_class) do
68
+ def self.name
69
+ root_controller = defined?(ApplicationController) ? ApplicationController : ActionController::Base
70
+ if superclass == root_controller || superclass.abstract?
71
+ "AnonymousController"
72
+ else
73
+ superclass.name
74
+ end
75
+ end
76
+ end
77
+ new_controller_class.class_exec(&body)
78
+ (class << self; self; end).__send__(:define_method, :controller_class) { new_controller_class }
79
+
80
+ before do
81
+ @orig_routes = routes
82
+ resource_name = if @controller.respond_to?(:controller_name)
83
+ @controller.controller_name.to_sym
84
+ else
85
+ :anonymous
86
+ end
87
+ resource_path = if @controller.respond_to?(:controller_path)
88
+ @controller.controller_path
89
+ else
90
+ resource_name.to_s
91
+ end
92
+ resource_module = resource_path.rpartition('/').first.presence
93
+ resource_as = 'anonymous_' + resource_path.tr('/', '_')
94
+ self.routes = ActionDispatch::Routing::RouteSet.new.tap do |r|
95
+ r.draw do
96
+ resources resource_name,
97
+ as: resource_as,
98
+ module: resource_module,
99
+ path: resource_path
100
+ end
101
+ end
102
+ end
103
+
104
+ after do
105
+ self.routes = @orig_routes
106
+ @orig_routes = nil
107
+ end
108
+ end
109
+
110
+ # Specifies the routeset that will be used for the example group. This
111
+ # is most useful when testing Rails engines.
112
+ #
113
+ # @example
114
+ # describe MyEngine::PostsController do
115
+ # routes { MyEngine::Engine.routes }
116
+ #
117
+ # # ...
118
+ # end
119
+ def routes
120
+ before do
121
+ self.routes = yield
122
+ end
123
+ end
124
+ end
125
+
126
+ # @!attribute [r]
127
+ # Returns the controller object instance under test.
128
+ attr_reader :controller
129
+
130
+ # @!attribute [r]
131
+ # Returns the Rails routes used for the spec.
132
+ attr_reader :routes
133
+
134
+ # @private
135
+ #
136
+ # RSpec Rails uses this to make Rails routes easily available to specs.
137
+ def routes=(routes)
138
+ @routes = routes
139
+ assertion_instance.instance_variable_set(:@routes, routes)
140
+ end
141
+
142
+ # @private
143
+ module BypassRescue
144
+ def rescue_with_handler(exception)
145
+ raise exception
146
+ end
147
+ end
148
+
149
+ # Extends the controller with a module that overrides
150
+ # `rescue_with_handler` to raise the exception passed to it. Use this to
151
+ # specify that an action _should_ raise an exception given appropriate
152
+ # conditions.
153
+ #
154
+ # @example
155
+ # describe ProfilesController do
156
+ # it "raises a 403 when a non-admin user tries to view another user's profile" do
157
+ # profile = create_profile
158
+ # login_as profile.user
159
+ #
160
+ # expect do
161
+ # bypass_rescue
162
+ # get :show, id: profile.id + 1
163
+ # end.to raise_error(/403 Forbidden/)
164
+ # end
165
+ # end
166
+ def bypass_rescue
167
+ controller.extend(BypassRescue)
168
+ end
169
+
170
+ # If method is a named_route, delegates to the RouteSet associated with
171
+ # this controller.
172
+ def method_missing(method, *args, &block)
173
+ if route_available?(method)
174
+ controller.send(method, *args, &block)
175
+ else
176
+ super
177
+ end
178
+ end
179
+ ruby2_keywords :method_missing if respond_to?(:ruby2_keywords, true)
180
+
181
+ included do
182
+ subject { controller }
183
+
184
+ before do
185
+ self.routes = ::Rails.application.routes
186
+ end
187
+
188
+ around do |ex|
189
+ previous_allow_forgery_protection_value = ActionController::Base.allow_forgery_protection
190
+ begin
191
+ ActionController::Base.allow_forgery_protection = false
192
+ ex.call
193
+ ensure
194
+ ActionController::Base.allow_forgery_protection = previous_allow_forgery_protection_value
195
+ end
196
+ end
197
+ end
198
+
199
+ private
200
+
201
+ def route_available?(method)
202
+ (defined?(@routes) && route_defined?(routes, method)) ||
203
+ (defined?(@orig_routes) && route_defined?(@orig_routes, method))
204
+ end
205
+
206
+ def route_defined?(routes, method)
207
+ return false if routes.nil?
208
+
209
+ if routes.named_routes.respond_to?(:route_defined?)
210
+ routes.named_routes.route_defined?(method)
211
+ else
212
+ routes.named_routes.helpers.include?(method)
213
+ end
214
+ end
215
+ end
216
+ end
217
+ end
@@ -0,0 +1,53 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container module for routing spec functionality.
5
+ module FeatureExampleGroup
6
+ extend ActiveSupport::Concern
7
+ include RSpec::Rails::RailsExampleGroup
8
+
9
+ # Default host to be used in Rails route helpers if none is specified.
10
+ DEFAULT_HOST = "www.example.com"
11
+
12
+ included do
13
+ app = ::Rails.application
14
+ if app.respond_to?(:routes)
15
+ include app.routes.url_helpers if app.routes.respond_to?(:url_helpers)
16
+ include app.routes.mounted_helpers if app.routes.respond_to?(:mounted_helpers)
17
+
18
+ if respond_to?(:default_url_options)
19
+ default_url_options[:host] ||= ::RSpec::Rails::FeatureExampleGroup::DEFAULT_HOST
20
+ end
21
+ end
22
+ end
23
+
24
+ # Shim to check for presence of Capybara. Will delegate if present, raise
25
+ # if not. We assume here that in most cases `visit` will be the first
26
+ # Capybara method called in a spec.
27
+ def visit(*)
28
+ if defined?(super)
29
+ super
30
+ else
31
+ raise "Capybara not loaded, please add it to your Gemfile:\n\ngem \"capybara\""
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
37
+
38
+ unless RSpec.respond_to?(:feature)
39
+ opts = {
40
+ capybara_feature: true,
41
+ type: :feature,
42
+ skip: <<-EOT.squish
43
+ Feature specs require the Capybara (https://github.com/teamcapybara/capybara)
44
+ gem, version 2.13.0 or later.
45
+ EOT
46
+ }
47
+
48
+ RSpec.configure do |c|
49
+ c.alias_example_group_to :feature, opts
50
+ c.alias_example_to :scenario
51
+ c.alias_example_to :xscenario, skip: 'Temporarily skipped with xscenario'
52
+ end
53
+ end
@@ -0,0 +1,42 @@
1
+ require 'rspec/rails/view_assigns'
2
+
3
+ module RSpec
4
+ module Rails
5
+ # @api public
6
+ # Container module for helper specs.
7
+ module HelperExampleGroup
8
+ extend ActiveSupport::Concern
9
+ include RSpec::Rails::RailsExampleGroup
10
+ include ActionView::TestCase::Behavior
11
+ include RSpec::Rails::ViewAssigns
12
+
13
+ # @private
14
+ module ClassMethods
15
+ def determine_constant_from_test_name(_ignore)
16
+ described_class if yield(described_class)
17
+ end
18
+ end
19
+
20
+ # Returns an instance of ActionView::Base with the helper being specified
21
+ # mixed in, along with any of the built-in rails helpers.
22
+ def helper
23
+ _view.tap do |v|
24
+ v.extend(ApplicationHelper) if defined?(ApplicationHelper)
25
+ v.assign(view_assigns)
26
+ end
27
+ end
28
+
29
+ private
30
+
31
+ def _controller_path(example)
32
+ example.example_group.described_class.to_s.sub(/Helper/, '').underscore
33
+ end
34
+
35
+ included do
36
+ before do |example|
37
+ controller.controller_path = _controller_path(example)
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,23 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container module for job spec functionality. It is only available if
5
+ # ActiveJob has been loaded before it.
6
+ module JobExampleGroup
7
+ # This blank module is only necessary for YARD processing. It doesn't
8
+ # handle the conditional `defined?` check below very well.
9
+ end
10
+ end
11
+ end
12
+
13
+ if defined?(ActiveJob)
14
+ module RSpec
15
+ module Rails
16
+ # Container module for job spec functionality.
17
+ module JobExampleGroup
18
+ extend ActiveSupport::Concern
19
+ include RSpec::Rails::RailsExampleGroup
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,80 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container module for mailbox spec functionality.
5
+ module MailboxExampleGroup
6
+ extend ActiveSupport::Concern
7
+
8
+ if RSpec::Rails::FeatureCheck.has_action_mailbox?
9
+ require 'action_mailbox/test_helper'
10
+ extend ::ActionMailbox::TestHelper
11
+
12
+ # @private
13
+ def self.create_inbound_email(arg)
14
+ case arg
15
+ when Hash
16
+ create_inbound_email_from_mail(**arg)
17
+ else
18
+ create_inbound_email_from_source(arg.to_s)
19
+ end
20
+ end
21
+ else
22
+ def self.create_inbound_email(_arg)
23
+ raise "Could not load ActionMailer::TestHelper"
24
+ end
25
+ end
26
+
27
+ class_methods do
28
+ # @private
29
+ def mailbox_class
30
+ described_class
31
+ end
32
+ end
33
+
34
+ included do
35
+ subject { described_class }
36
+ end
37
+
38
+ # @api public
39
+ # Passes if the inbound email was delivered
40
+ #
41
+ # @example
42
+ # inbound_email = process(args)
43
+ # expect(inbound_email).to have_been_delivered
44
+ def have_been_delivered
45
+ satisfy('have been delivered', &:delivered?)
46
+ end
47
+
48
+ # @api public
49
+ # Passes if the inbound email bounced during processing
50
+ #
51
+ # @example
52
+ # inbound_email = process(args)
53
+ # expect(inbound_email).to have_bounced
54
+ def have_bounced
55
+ satisfy('have bounced', &:bounced?)
56
+ end
57
+
58
+ # @api public
59
+ # Passes if the inbound email failed to process
60
+ #
61
+ # @example
62
+ # inbound_email = process(args)
63
+ # expect(inbound_email).to have_failed
64
+ def have_failed
65
+ satisfy('have failed', &:failed?)
66
+ end
67
+
68
+ # Process an inbound email message directly, bypassing routing.
69
+ #
70
+ # @param message [Hash, Mail::Message] a mail message or hash of
71
+ # attributes used to build one
72
+ # @return [ActionMailbox::InboundMessage]
73
+ def process(message)
74
+ MailboxExampleGroup.create_inbound_email(message).tap do |mail|
75
+ self.class.mailbox_class.receive(mail)
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
@@ -0,0 +1,38 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container module for mailer spec functionality. It is only available if
5
+ # ActionMailer has been loaded before it.
6
+ module MailerExampleGroup
7
+ # This blank module is only necessary for YARD processing. It doesn't
8
+ # handle the conditional `defined?` check below very well.
9
+ end
10
+ end
11
+ end
12
+
13
+ if defined?(ActionMailer)
14
+ module RSpec
15
+ module Rails
16
+ # Container module for mailer spec functionality.
17
+ module MailerExampleGroup
18
+ extend ActiveSupport::Concern
19
+ include RSpec::Rails::RailsExampleGroup
20
+ include ActionMailer::TestCase::Behavior
21
+
22
+ included do
23
+ include ::Rails.application.routes.url_helpers
24
+ options = ::Rails.configuration.action_mailer.default_url_options || {}
25
+ options.each { |key, value| default_url_options[key] = value }
26
+ end
27
+
28
+ # Class-level DSL for mailer specs.
29
+ module ClassMethods
30
+ # Alias for `described_class`.
31
+ def mailer_class
32
+ described_class
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,11 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container class for model spec functionality. Does not provide anything
5
+ # special over the common RailsExampleGroup currently.
6
+ module ModelExampleGroup
7
+ extend ActiveSupport::Concern
8
+ include RSpec::Rails::RailsExampleGroup
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,23 @@
1
+ # Temporary workaround to resolve circular dependency between rspec-rails' spec
2
+ # suite and ammeter.
3
+ require 'rspec/rails/matchers'
4
+
5
+ require 'active_support/current_attributes/test_helper'
6
+ require 'active_support/execution_context/test_helper'
7
+
8
+ module RSpec
9
+ module Rails
10
+ # @api public
11
+ # Common rails example functionality.
12
+ module RailsExampleGroup
13
+ extend ActiveSupport::Concern
14
+ include RSpec::Rails::SetupAndTeardownAdapter
15
+ include RSpec::Rails::MinitestLifecycleAdapter
16
+ include RSpec::Rails::MinitestAssertionAdapter
17
+ include RSpec::Rails::FixtureSupport
18
+ include RSpec::Rails::TaggedLoggingAdapter
19
+ include ActiveSupport::CurrentAttributes::TestHelper
20
+ include ActiveSupport::ExecutionContext::TestHelper
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,27 @@
1
+ module RSpec
2
+ module Rails
3
+ # @api public
4
+ # Container class for request spec functionality.
5
+ module RequestExampleGroup
6
+ extend ActiveSupport::Concern
7
+ include RSpec::Rails::RailsExampleGroup
8
+ include ActionDispatch::Integration::Runner
9
+ include ActionDispatch::Assertions
10
+ include RSpec::Rails::Matchers::RedirectTo
11
+ include RSpec::Rails::Matchers::RenderTemplate
12
+ include ActionController::TemplateAssertions
13
+ include ActionDispatch::IntegrationTest::Behavior
14
+
15
+ # Delegates to `Rails.application`.
16
+ def app
17
+ ::Rails.application
18
+ end
19
+
20
+ included do
21
+ before do
22
+ @routes = ::Rails.application.routes
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,61 @@
1
+ module RSpec
2
+ module Rails
3
+ # @private
4
+ RoutingAssertionDelegator = RSpec::Rails::AssertionDelegator.new(
5
+ ActionDispatch::Assertions::RoutingAssertions
6
+ )
7
+
8
+ # @api public
9
+ # Container module for routing spec functionality.
10
+ module RoutingExampleGroup
11
+ extend ActiveSupport::Concern
12
+ include RSpec::Rails::RailsExampleGroup
13
+ include RSpec::Rails::Matchers::RoutingMatchers
14
+ include RSpec::Rails::Matchers::RoutingMatchers::RouteHelpers
15
+ include RSpec::Rails::RoutingAssertionDelegator
16
+
17
+ # Class-level DSL for route specs.
18
+ module ClassMethods
19
+ # Specifies the routeset that will be used for the example group. This
20
+ # is most useful when testing Rails engines.
21
+ #
22
+ # @example
23
+ # describe MyEngine::PostsController do
24
+ # routes { MyEngine::Engine.routes }
25
+ #
26
+ # it "routes posts#index" do
27
+ # expect(:get => "/posts").to
28
+ # route_to(:controller => "my_engine/posts", :action => "index")
29
+ # end
30
+ # end
31
+ def routes
32
+ before do
33
+ self.routes = yield
34
+ end
35
+ end
36
+ end
37
+
38
+ included do
39
+ before do
40
+ self.routes = ::Rails.application.routes
41
+ end
42
+ end
43
+
44
+ # @!attribute [r]
45
+ # @private
46
+ attr_reader :routes
47
+
48
+ # @private
49
+ def routes=(routes)
50
+ @routes = routes
51
+ assertion_instance.instance_variable_set(:@routes, routes)
52
+ end
53
+
54
+ private
55
+
56
+ def method_missing(m, *args, &block)
57
+ routes.url_helpers.respond_to?(m) ? routes.url_helpers.send(m, *args) : super
58
+ end
59
+ end
60
+ end
61
+ end