class WithModel::ConstantStubber

Public Class Methods

new(const_name) click to toggle source
# File lib/with_model/constant_stubber.rb, line 5
def initialize(const_name)
  @const_name = const_name.to_sym
  @namespace = nil
  @original_value = nil
end

Public Instance Methods

stub_const(value) click to toggle source
# File lib/with_model/constant_stubber.rb, line 11
def stub_const(value)
  @namespace = namespace
  if @namespace.const_defined?(basename)
    @original_value = @namespace.const_get(basename)
    @namespace.__send__ :remove_const, basename
  end

  @namespace.const_set basename, value
end
unstub_const() click to toggle source
# File lib/with_model/constant_stubber.rb, line 21
def unstub_const
  if @namespace
    @namespace.__send__ :remove_const, basename
    @namespace.const_set basename, @original_value if @original_value
    @namespace = nil
  end
  @original_value = nil
end

Private Instance Methods

basename() click to toggle source
# File lib/with_model/constant_stubber.rb, line 43
def basename
  @basename ||= lookup_list.last
end
lookup_list() click to toggle source
# File lib/with_model/constant_stubber.rb, line 39
def lookup_list
  @const_name.to_s.split('::')
end
namespace() click to toggle source
# File lib/with_model/constant_stubber.rb, line 32
def namespace
  *namespace_parts, _ = lookup_list
  namespace_parts.reduce(Object) do |ns, ns_part|
    ns.const_get(ns_part.to_sym)
  end
end