Sha256: 9f8e885f8132642cd52b7a9c1244b28984f5b7aed915b79c5bbe8379eac7d0de
Contents?: true
Size: 1.39 KB
Versions: 37
Compression:
Stored size: 1.39 KB
Contents
module RSpec module Core # Exposes {ExampleGroup}-level methods to a module, so you can include that # module in an {ExampleGroup}. # # @example # # module LoggedInAsAdmin # extend RSpec::Core::SharedContext # before(:each) do # log_in_as :admin # end # end # # describe "admin section" do # include LoggedInAsAdmin # # ... # end module SharedContext # @api private def included(group) __shared_context_recordings.each do |recording| recording.playback_onto(group) end end # @api private def __shared_context_recordings @__shared_context_recordings ||= [] end Recording = Struct.new(:method_name, :args, :block) do def playback_onto(group) group.__send__(method_name, *args, &block) end end # @api private def self.record(methods) methods.each do |meth| class_eval <<-EOS, __FILE__, __LINE__ + 1 def #{meth}(*args, &block) __shared_context_recordings << Recording.new(:#{meth}, args, block) end EOS end end record [:describe, :context] + Hooks.instance_methods(false) + MemoizedHelpers::ClassMethods.instance_methods(false) end end SharedContext = Core::SharedContext end
Version data entries
37 entries across 37 versions & 8 rubygems