Sha256: 06fbbf4bdec233fdf0a655a0b2a36e21a69be337208ffe9d6c12b7b979a7858c
Contents?: true
Size: 1.52 KB
Versions: 1
Compression:
Stored size: 1.52 KB
Contents
module TwirpRails module RSpec module Helper extend ActiveSupport::Concern module ClassMethods # 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)} def rpc(to_h: true, &block) let :rpc_args, &block subject do result = service.call_rpc(*rpc_args) to_h ? result.to_h : result end end def service_class_from_describe result = metadata[:service] result = result.constantize if result && !result.is_a?(Class) result end 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 def service_class @service_class ||= service_class_from_describe || infer_service_class end end def service_class self.class.service_class end included do let(:handler) { described_class.new } let(:service) { service_class.new(handler) } end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
twirp_rails-0.1.4 | lib/twirp_rails/rspec/helper.rb |