lib/shoulda/private_helpers.rb



module ThoughtBot # :nodoc:
  module Shoulda # :nodoc:
    module Private # :nodoc:
      # Returns the values for the entries in the args hash who's keys are listed in the wanted array.
      # Will raise if there are keys in the args hash that aren't listed.
      def get_options!(args, *wanted)
        ret  = []
        opts = (args.last.is_a?(Hash) ? args.pop : {})
        wanted.each {|w| ret << opts.delete(w)}
        raise ArgumentError, "Unsupported options given: #{opts.keys.join(', ')}" unless opts.keys.empty?
        return *ret
      end

      # Returns the model class constant, as determined by the test class name.
      #
      #   class TestUser; model_class; end => User
      def model_class
        self.name.gsub(/Test$/, '').constantize
      end
    end
  end
end