Sha256: 85b8f4f2ba91c4d54e7e92a7e6ba70eefe6d044899254f81143439e14f3ab28f
Contents?: true
Size: 1.21 KB
Versions: 1
Compression:
Stored size: 1.21 KB
Contents
# typed: strict require_relative "replaces_type/redefines_new" require_relative "replaces_type/redefines_singleton_methods" require_relative "replaces_type/runs_sorbet_sig_blocks_before_replacement" module Mocktail class ReplacesType extend T::Sig sig { void } def initialize @top_shelf = T.let(TopShelf.instance, TopShelf) @runs_sorbet_sig_blocks_before_replacement = T.let(RunsSorbetSigBlocksBeforeReplacement.new, RunsSorbetSigBlocksBeforeReplacement) @redefines_new = T.let(RedefinesNew.new, RedefinesNew) @redefines_singleton_methods = T.let(RedefinesSingletonMethods.new, RedefinesSingletonMethods) end sig { params(type: T.any(T::Class[T.anything], Module)).void } def replace(type) unless T.unsafe(type).is_a?(Class) || T.unsafe(type).is_a?(Module) raise UnsupportedMocktail.new("Mocktail.replace() only supports classes and modules") end @runs_sorbet_sig_blocks_before_replacement.run(type) if type.is_a?(Class) @top_shelf.register_new_replacement!(type) @redefines_new.redefine(type) end @top_shelf.register_singleton_method_replacement!(type) @redefines_singleton_methods.redefine(type) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
mocktail-2.0.0 | lib/mocktail/sorbet/mocktail/replaces_type.rb |