class Rohbau::Interface::Caller
Public Class Methods
new(domain)
click to toggle source
# File lib/rohbau/interface.rb, line 82 def initialize(domain) @domain = validate_and_return!(domain) end
Public Instance Methods
call(use_case, args, options = {})
click to toggle source
# File lib/rohbau/interface.rb, line 86 def call(use_case, args, options = {}) type = options[:stub_type] stubbed_result = options[:stub_result] use_case = get_use_case_for(use_case, args) if stubbed_result stub_use_case(use_case, type, stubbed_result) else call_use_case(use_case, args) end end
Private Instance Methods
call_use_case(use_case, args)
click to toggle source
# File lib/rohbau/interface.rb, line 100 def call_use_case(use_case, args) request = RequestCache.for[domain] input = get_input_for(use_case, args) use_case.new(request, input).call end
domain()
click to toggle source
# File lib/rohbau/interface.rb, line 134 def domain @domain end
get_input_for(use_case, args)
click to toggle source
# File lib/rohbau/interface.rb, line 114 def get_input_for(use_case, args) use_case.const_get(:Input).new(args) end
get_use_case_for(use_case, args)
click to toggle source
# File lib/rohbau/interface.rb, line 118 def get_use_case_for(use_case, args) [domain, :UseCases, use_case].inject(Object) do |ns, const| ns.const_get(const) end end
missing_domain_message(domain)
click to toggle source
# File lib/rohbau/interface.rb, line 129 def missing_domain_message(domain) "You tried to call a use case from the #{domain}, but that domain " \ "does not exist." end
stub_use_case(use_case, type, result)
click to toggle source
# File lib/rohbau/interface.rb, line 107 def stub_use_case(use_case, type, result) result_class = use_case.const_get type return result_class.new if result == true result_class.new(result) end
validate_and_return!(domain)
click to toggle source
# File lib/rohbau/interface.rb, line 124 def validate_and_return!(domain) return domain if Object.const_defined?(domain) raise ArgumentError, missing_domain_message(domain) end