Sha256: b0159c031d013b4b1dca62486db6f7ade40deb1ed21300b769f901b9876ea712

Contents?: true

Size: 1.88 KB

Versions: 48

Compression:

Stored size: 1.88 KB

Contents

module ThoughtBot # :nodoc:
  module Shoulda # :nodoc:
    module Controller # :nodoc:
      module Helpers # :nodoc:
        private # :enddoc:

        SPECIAL_INSTANCE_VARIABLES = %w{
          _cookies
          _flash
          _headers
          _params
          _request
          _response
          _session
          action_name
          before_filter_chain_aborted
          cookies
          flash
          headers
          ignore_missing_templates
          logger
          params
          request
          request_origin
          response
          session
          template
          template_class
          template_root
          url
          variables_added
        }.map(&:to_s)

        def instantiate_variables_from_assigns(*names, &blk)
          old = {}
          names = (@response.template.assigns.keys - SPECIAL_INSTANCE_VARIABLES) if names.empty?
          names.each do |name|
            old[name] = instance_variable_get("@#{name}")
            instance_variable_set("@#{name}", assigns(name.to_sym))
          end
          blk.call
          names.each do |name|
            instance_variable_set("@#{name}", old[name])
          end
        end

        def get_existing_record(res) # :nodoc:
          returning(instance_variable_get("@#{res.object}")) do |record|
            assert(record, "This test requires you to set @#{res.object} in your setup block")
          end
        end

        def make_parent_params(resource, record = nil, parent_names = nil) # :nodoc:
          parent_names ||= resource.parents.reverse
          return {} if parent_names == [] # Base case
          parent_name = parent_names.shift
          parent = record ? record.send(parent_name) : parent_name.to_s.classify.constantize.find(:first)

          { :"#{parent_name}_id" => parent.to_param }.merge(make_parent_params(resource, parent, parent_names))
        end
      end
    end
  end
end

Version data entries

48 entries across 48 versions & 11 rubygems

Version Path
emschwar-shoulda-2.0.6.1 lib/shoulda/controller/helpers.rb
francois-shoulda-2.0.5.1 lib/shoulda/controller/helpers.rb
francois-shoulda-2.0.5.2 lib/shoulda/controller/helpers.rb
francois-shoulda-2.0.5.4 lib/shoulda/controller/helpers.rb
gsterndale-warrant-0.2.0 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller/helpers.rb
gsterndale-warrant-0.3.0 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.6/lib/shoulda/controller/helpers.rb
hashrocket-clearance-0.4.0 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb
hashrocket-clearance-0.4.1 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb
hashrocket-clearance-0.4.2 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb
hashrocket-clearance-0.4.3 test/rails_root/vendor/gems/thoughtbot-shoulda-2.0.4/lib/shoulda/controller/helpers.rb
mattknox-goaloc-0.3.0 lib/goaloc/generators/resources/shoulda/lib/shoulda/controller/helpers.rb
mattknox-goaloc-0.4.0 lib/goaloc/generators/resources/shoulda/lib/shoulda/controller/helpers.rb
mjankowski-shoulda-2.0.4 lib/shoulda/controller/helpers.rb
mjankowski-shoulda-2.0.5 lib/shoulda/controller/helpers.rb
rmm5t-shoulda-2.0.2 lib/shoulda/controller/helpers.rb
rmm5t-shoulda-2.0.5 lib/shoulda/controller/helpers.rb
rmm5t-shoulda-2.0.6 lib/shoulda/controller/helpers.rb
technicalpickles-shoulda-2.0.0 lib/shoulda/controller/helpers.rb
technicalpickles-shoulda-2.0.1 lib/shoulda/controller/helpers.rb
technicalpickles-shoulda-2.0.2 lib/shoulda/controller/helpers.rb