Update inheritance DSL to be more explicit

Convert the inheritance DSL so that it expects a hash for options which
includes an inheritanc key-value pair. This makes the inheritance
directive more explicit when someone view's the request file's code.
This commit is contained in:
Mark Maglana
2013-09-22 19:31:56 -07:00
parent e1e20e810b
commit 0831842032
3 changed files with 8 additions and 10 deletions

View File

@@ -26,8 +26,8 @@ module Aviator
class << self
def define_request(root_namespace, request_name, base_hierarchy=[:request], &block)
base_klass = get_request_class(root_namespace, base_hierarchy)
def define_request(root_namespace, request_name, options, &block)
base_klass = get_request_class(root_namespace, options[:inherit])
klass = Class.new(base_klass, &block)
@@ -80,8 +80,8 @@ module Aviator
class << self
def define_request(request_name, base_hierarchy=[:request], &block)
RequestBuilder.define_request self, request_name, base_hierarchy, &block
def define_request(request_name, options={ inherit: [:request] }, &block)
RequestBuilder.define_request self, request_name, options, &block
end
end # class << self

View File

@@ -1,8 +1,6 @@
module Aviator
base_request = [:openstack, :common, :v2, :public, :base]
define_request :list_hosts, base_request do
define_request :list_hosts, inherit: [:openstack, :common, :v2, :public, :base] do
meta :provider, :openstack
meta :service, :compute

View File

@@ -84,7 +84,7 @@ class Aviator::Test
base[:name]
]
builder.define_request :child_request, base_request do; end
builder.define_request :child_request, inherit: base_request do; end
child_req_hierarchy = [
base[:provider],
@@ -110,7 +110,7 @@ class Aviator::Test
non_existent_base = [:none, :existent, :base]
the_method = lambda do
builder.define_request :child, non_existent_base do; end
builder.define_request :child, inherit: non_existent_base do; end
end
the_method.must_raise Aviator::BaseRequestNotFoundError
@@ -161,7 +161,7 @@ class Aviator::Test
base_arr = [:openstack, :identity, :v2, :public, :root]
child_arr = base_arr.first(base_arr.length - 1) + [:child]
builder.define_request child_arr.last, base_arr do; end
builder.define_request child_arr.last, inherit: base_arr do; end
base_klass = base_arr.inject(builder) do |namespace, sym|
namespace.const_get(sym.to_s.camelize, false)