diff --git a/lib/rspec_api_documentation/dsl/resource.rb b/lib/rspec_api_documentation/dsl/resource.rb index 3d92a4b2..98db83e7 100644 --- a/lib/rspec_api_documentation/dsl/resource.rb +++ b/lib/rspec_api_documentation/dsl/resource.rb @@ -6,7 +6,7 @@ module Resource module ClassMethods def self.define_action(method) define_method method do |*args, &block| - options = if args.last.is_a?(Hash) then args.pop else {} end + options = args.extract_options! options[:method] = method options[:route] = args.first options[:api_doc_dsl] = :endpoint @@ -38,7 +38,10 @@ def callback(*args, &block) context(*args, &block) end - def parameter(name, description, options = {}) + def parameter(name, *args) + options = args.extract_options! + description = args.pop || "#{Array(options[:scope]).join(" ")} #{name}".humanize + parameters.push(options.merge(:name => name.to_s, :description => description)) end @@ -89,7 +92,7 @@ def no_doc(&block) requests = example.metadata[:requests] example.metadata[:requests] = [] - instance_eval &block + instance_eval(&block) example.metadata[:requests] = requests end diff --git a/spec/dsl_spec.rb b/spec/dsl_spec.rb index f69dbb2e..a03ed1c4 100644 --- a/spec/dsl_spec.rb +++ b/spec/dsl_spec.rb @@ -57,6 +57,7 @@ parameter :type, "The type of drink you want.", :required => true parameter :size, "The size of drink you want.", :required => true parameter :note, "Any additional notes about your order." + parameter :name, :scope => :order response_field :type, "The type of drink you ordered.", :scope => :order response_field :size, "The size of drink you ordered.", :scope => :order @@ -74,7 +75,8 @@ [ { :name => "type", :description => "The type of drink you want.", :required => true }, { :name => "size", :description => "The size of drink you want.", :required => true }, - { :name => "note", :description => "Any additional notes about your order." } + { :name => "note", :description => "Any additional notes about your order." }, + { :name => "name", :description => "Order name", :scope => :order}, ] ) end