Sha256: 2ca409a30e9f225e4f195052b6133e63a87dd7bec5a971b39bece86d6d10f70d

Contents?: true

Size: 1.86 KB

Versions: 66

Compression:

Stored size: 1.86 KB

Contents

module RSpec
  module Rails
    # Adds methods (generally to ActionView::TestCase::TestController).
    # Intended for use in view specs.
    module ViewSpecMethods
      module_function

      # 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.
      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

      # Removes methods `extra_params=` and `extra_params` from the indicated class.
      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
    end
  end
end

Version data entries

66 entries across 63 versions & 8 rubygems

Version Path
rspec-rails-7.1.1 lib/rspec/rails/view_spec_methods.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.1.0/gems/rspec-rails-7.1.0/lib/rspec/rails/view_spec_methods.rb
trusty-cms-7.0.9.1 vendor/bundle/ruby/3.3.0/gems/rspec-rails-7.1.0/lib/rspec/rails/view_spec_methods.rb
rspec-rails-7.1.0 lib/rspec/rails/view_spec_methods.rb
rspec-rails-7.0.2 lib/rspec/rails/view_spec_methods.rb
rspec-rails-7.0.1 lib/rspec/rails/view_spec_methods.rb
rspec-rails-7.0.0 lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.5 lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.4 lib/rspec/rails/view_spec_methods.rb
blacklight-spotlight-3.6.0.beta8 vendor/bundle/ruby/3.2.0/gems/rspec-rails-6.1.3/lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.3 lib/rspec/rails/view_spec_methods.rb
tinymce-rails-7.1.2 vendor/bundle/ruby/3.3.0/gems/rspec-rails-6.0.4/lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.2 lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.1 lib/rspec/rails/view_spec_methods.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/rspec-rails-5.1.1/lib/rspec/rails/view_spec_methods.rb
scrapbook-0.3.2 vendor/ruby/2.7.0/gems/rspec-rails-5.1.2/lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.1.0 lib/rspec/rails/view_spec_methods.rb
rspec-rails-6.0.4 lib/rspec/rails/view_spec_methods.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/rspec-rails-5.1.2/lib/rspec/rails/view_spec_methods.rb
scrapbook-0.3.1 vendor/ruby/2.7.0/gems/rspec-rails-5.1.1/lib/rspec/rails/view_spec_methods.rb