From 1c29ed53c79cf99311531f2c2243b381f4c2697a Mon Sep 17 00:00:00 2001 From: Jon Rowe Date: Thu, 24 Oct 2013 14:43:25 +1100 Subject: [PATCH] fix regression with multiple calls to ordered expectations, fixes rspec/rspec-core --- lib/rspec/mocks/order_group.rb | 2 +- spec/rspec/mocks/mock_ordering_spec.rb | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lib/rspec/mocks/order_group.rb b/lib/rspec/mocks/order_group.rb index 8b6f07df8..52f882ed9 100644 --- a/lib/rspec/mocks/order_group.rb +++ b/lib/rspec/mocks/order_group.rb @@ -35,7 +35,7 @@ def consume # @private def handle_order_constraint(expectation) - return unless expectation.ordered? && @expectations.include?(expectation) + return unless expectation.ordered? && remaining_expectations.include?(expectation) return consume if ready_for?(expectation) expectation.raise_out_of_order_error end diff --git a/spec/rspec/mocks/mock_ordering_spec.rb b/spec/rspec/mocks/mock_ordering_spec.rb index f87218922..3754d65e5 100644 --- a/spec/rspec/mocks/mock_ordering_spec.rb +++ b/spec/rspec/mocks/mock_ordering_spec.rb @@ -16,6 +16,17 @@ module Mocks @double.three end + it "passes when messages are received in order" do + @double.stub(:something) + @double.should_receive(:one).ordered + @double.should_receive(:two).ordered + @double.should_receive(:three).at_least(:once).ordered + @double.one + @double.two + @double.three + @double.three + end + it "passes when messages are received in order across objects" do a = double("a") b = double("b")