module MotionSpec::ContextHelper::MemoizedHelpers
Attributes
__memoized[RW]
Public Instance Methods
is_expected()
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 37 def is_expected # rubocop:disable Style/PredicateName expect(subject) end
let(name, &block)
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 6 def let(name, &block) fail '#let or #subject called without a block' unless block_given? (class << self; self; end).class_eval do define_method(name) do self.__memoized ||= {} __memoized.fetch(name) { __memoized[name] = block.call } end end # The way that nested contexts are implemented requires us to manually # reset any memoized values after each spec via an 'after'. after { reset_memoized } end
let!(name, &block)
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 21 def let!(name, &block) let(name, &block) before { __send__(name) } end
reset_memoized()
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 41 def reset_memoized @__memoized = nil parent_context.reset_memoized if respond_to?(:parent_context) end
subject(name = nil, &block)
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 26 def subject(name = nil, &block) let(name, &block) if name let(:subject, &block) end
subject!(name = nil, &block)
click to toggle source
# File lib/motion-spec/context_helper/memoized_helpers.rb, line 32 def subject!(name = nil, &block) subject(name, &block) before { subject } end