lib/bogus/shadow.rb in bogus-0.1.0 vs lib/bogus/shadow.rb in bogus-0.1.1

- old
+ new

@@ -3,58 +3,54 @@ attr_reader :calls def initialize @calls = [] @stubs = [] - @defaults = {} @required = Set.new end def run(method_name, *args) interaction = Interaction.new(method_name, args) @calls << interaction return_value(interaction) end def has_received(name, args) - @calls.include?(Interaction.new(name, args)) + @calls.any? { |i| Interaction.same?(recorded: i, stubbed: Interaction.new(name, args)) } end def stubs(name, *args, &return_value) interaction = Interaction.new(name, args) add_stub(interaction, return_value) - override_default(interaction, return_value) - @required.delete(interaction) + @required.reject! { |i| Interaction.same?(recorded: i, stubbed: interaction) } interaction end def mocks(name, *args, &return_value) interaction = stubs(name, *args, &return_value) @required.add(interaction) end def unsatisfied_interactions - @required.reject { |i| @calls.include?(i) } + @required.reject do |stubbed| + @calls.any? do |recorded| + Interaction.same?(recorded: recorded, stubbed: stubbed) + end + end end def self.has_shadow?(object) object.respond_to?(:__shadow__) end private - def override_default(interaction, return_value) - return unless interaction.any_args? - @defaults[interaction.method] = return_value || proc{nil} - end - def add_stub(interaction, return_value_block) @stubs << [interaction, return_value_block] if return_value_block end def return_value(interaction) - _, return_value = @stubs.reverse.find{|i, v| i == interaction} - return_value ||= @defaults[interaction.method] + _, return_value = @stubs.reverse.find{|i, v| Interaction.same?(recorded: interaction, stubbed: i)} return_value ||= proc{ UndefinedReturnValue.new(interaction) } return_value.call end end end