module TwirpRails::RSpec::Helper
Public Instance Methods
infer_service_class()
click to toggle source
# File lib/twirp_rails/rspec/helper.rb, line 46 def infer_service_class service_class_name = described_class.name.gsub(/Handler$/, '') + 'Service' service_class_name.constantize rescue NameError msg = "Cannot infer Service class from handler #{described_class.name}." msg += " Inferred name #{service_class_name}" if service_class_name raise msg end
rpc(to_h: true, &block)
click to toggle source
places to subject service method returned value converted to_h @param [Boolean] to_h - default true, set to false to use pure result @param [Proc] block - should return array with method name and arguments @example
rpc { [:get, id: 1] } it { should match(id: 1)}
# File lib/twirp_rails/rspec/helper.rb, line 17 def rpc(to_h: true, &block) let :rpc_args, &block subject do method, *args = rpc_args unless service.class.rpcs[method.to_s] camelized_method = method.to_s.camelize if service.class.rpcs[camelized_method] method = camelized_method else raise "Methods #{method}/#{camelized_method} is not found in the service #{service.class}" end end result = service.call_rpc(method, *args) to_h ? result.to_h : result end end
service_class()
click to toggle source
# File lib/twirp_rails/rspec/helper.rb, line 57 def service_class @service_class ||= service_class_from_describe || infer_service_class end
service_class_from_describe()
click to toggle source
# File lib/twirp_rails/rspec/helper.rb, line 38 def service_class_from_describe result = metadata[:service] result = result.constantize if result && !result.is_a?(Class) result end