From 519836147e9ed5e47073ac9d09baa767cd452085 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Sat, 2 Apr 2022 10:50:27 -0600 Subject: [PATCH] Restructure stub modifiers --- src/spectator/mocks/null_stub.cr | 4 ---- src/spectator/mocks/stub.cr | 3 +++ src/spectator/mocks/stub_modifiers.cr | 5 +++++ src/spectator/mocks/value_stub.cr | 8 ++++++++ 4 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 src/spectator/mocks/stub_modifiers.cr diff --git a/src/spectator/mocks/null_stub.cr b/src/spectator/mocks/null_stub.cr index 8612e4d..b0cef54 100644 --- a/src/spectator/mocks/null_stub.cr +++ b/src/spectator/mocks/null_stub.cr @@ -7,9 +7,5 @@ module Spectator # Invokes the stubbed implementation. def call(_call : MethodCall) : Nil end - - def and_return(value) - ValueStub.new(method, value, constraint) - end end end diff --git a/src/spectator/mocks/stub.cr b/src/spectator/mocks/stub.cr index 486d429..c4d0737 100644 --- a/src/spectator/mocks/stub.cr +++ b/src/spectator/mocks/stub.cr @@ -1,10 +1,13 @@ require "./abstract_arguments" require "./arguments" require "./method_call" +require "./stub_modifiers" module Spectator # Untyped response to a method call (message). abstract class Stub + include StubModifiers + # Name of the method this stub is for. getter method : Symbol diff --git a/src/spectator/mocks/stub_modifiers.cr b/src/spectator/mocks/stub_modifiers.cr new file mode 100644 index 0000000..39b5c18 --- /dev/null +++ b/src/spectator/mocks/stub_modifiers.cr @@ -0,0 +1,5 @@ +module Spectator + # Mixin intended for `Stub` to return new, modified stubs. + module StubModifiers + end +end diff --git a/src/spectator/mocks/value_stub.cr b/src/spectator/mocks/value_stub.cr index d902be6..32b414f 100644 --- a/src/spectator/mocks/value_stub.cr +++ b/src/spectator/mocks/value_stub.cr @@ -1,5 +1,6 @@ require "../location" require "./arguments" +require "./stub_modifiers" require "./typed_stub" module Spectator @@ -15,4 +16,11 @@ module Spectator super(method, constraint, location) end end + + module StubModifiers + # Returns a new stub that returns a static value. + def and_return(value) + ValueStub.new(method, value, constraint, location) + end + end end