Module: RSpec::Rails::ViewSpecMethods
- Defined in:
- lib/rspec/rails/view_spec_methods.rb
Overview
Adds methods (generally to ActionView::TestCase::TestController). Intended for use in view specs.
Class Method Summary collapse
-
.add_to(klass) ⇒ Object
Adds methods
extra_params=
andextra_params
to the indicated class. -
.remove_from(klass) ⇒ Object
Removes methods
extra_params=
andextra_params
from the indicated class.
Class Method Details
.add_to(klass) ⇒ Object
Adds methods extra_params=
and extra_params
to the indicated class.
When class is ::ActionView::TestCase::TestController
, these methods
are exposed in view specs on the controller
object.
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/rspec/rails/view_spec_methods.rb', line 11 def add_to(klass) return if klass.method_defined?(:extra_params) && klass.method_defined?(:extra_params=) klass.module_exec do # Set any extra parameters that rendering a URL for this view # would require. # # @example # # # In "spec/views/widgets/show.html.erb_spec.rb": # before do # widget = Widget.create!(:name => "slicer") # controller.extra_params = { :id => widget.id } # end def extra_params=(hash) @extra_params = hash request.path = ViewPathBuilder.new(::Rails.application.routes).path_for( extra_params.merge(request.path_parameters) ) end # Use to read extra parameters that are set in the view spec. # # @example # # # After the before in the above example: # controller.extra_params # # => { :id => 4 } def extra_params @extra_params ||= {} @extra_params.dup.freeze end end end |
.remove_from(klass) ⇒ Object
Removes methods extra_params=
and extra_params
from the indicated class.
48 49 50 51 52 53 |
# File 'lib/rspec/rails/view_spec_methods.rb', line 48 def remove_from(klass) klass.module_exec do undef extra_params= if klass.method_defined?(:extra_params=) undef extra_params if klass.method_defined?(:extra_params) end end |