From 20f68e956d3d878360a39c89170192e0dfbdb0f3 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Mon, 11 Nov 2019 22:27:53 -0700 Subject: [PATCH] Add receive_messages macro to stub multiple methods --- src/spectator/dsl/mocks.cr | 9 +++++++++ src/spectator/mocks/allow.cr | 6 ++++++ src/spectator/mocks/allow_any_instance.cr | 6 ++++++ 3 files changed, 21 insertions(+) diff --git a/src/spectator/dsl/mocks.cr b/src/spectator/dsl/mocks.cr index b6c2dd2..0bd6320 100644 --- a/src/spectator/dsl/mocks.cr +++ b/src/spectator/dsl/mocks.cr @@ -49,4 +49,13 @@ module Spectator::DSL %source = ::Spectator::Source.new({{_source_file}}, {{_source_line}}) ::Spectator::Mocks::NilMethodStub.new({{method_name.id.symbolize}}, %source) end + + macro receive_messages(_source_file = __FILE__, _source_line = __LINE__, **stubs) + %source = ::Spectator::Source.new({{_source_file}}, {{_source_line}}) + %stubs = [] of ::Spectator::Mocks::MethodStub + {% for name, value in stubs %} + %stubs << ::Spectator::Mocks::ValueMethodStub.new({{name.id.symbolize}}, %source, {{value}}) + {% end %} + %stubs + end end diff --git a/src/spectator/mocks/allow.cr b/src/spectator/mocks/allow.cr index 1479e69..fb6b86f 100644 --- a/src/spectator/mocks/allow.cr +++ b/src/spectator/mocks/allow.cr @@ -8,5 +8,11 @@ module Spectator::Mocks def to(stub : MethodStub) : Nil Harness.current.mocks.add_stub(@mock, stub) end + + def to(stubs : Enumerable(MethodStub)) : Nil + stubs.each do |stub| + Harness.current.mocks.add_stub(@mock, stub) + end + end end end diff --git a/src/spectator/mocks/allow_any_instance.cr b/src/spectator/mocks/allow_any_instance.cr index 6cc892a..b652940 100644 --- a/src/spectator/mocks/allow_any_instance.cr +++ b/src/spectator/mocks/allow_any_instance.cr @@ -5,5 +5,11 @@ module Spectator::Mocks def to(stub : MethodStub) : Nil Harness.current.mocks.add_type_stub(T, stub) end + + def to(stubs : Enumerable(MethodStub)) : Nil + stubs.each do |stub| + Harness.current.mocks.add_type_stub(T, stub) + end + end end end