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:
@@ -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
|
||||
|
@@ -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
|
||||
|
@@ -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)
|
||||
|
Reference in New Issue
Block a user