mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Support double names
This commit is contained in:
parent
26deea3d20
commit
5644d54470
2 changed files with 26 additions and 6 deletions
|
@ -1,7 +1,7 @@
|
|||
require "../../spec_helper"
|
||||
|
||||
Spectator.describe Spectator::Double do
|
||||
subject(dbl) { Spectator::Double.new(foo: 42, bar: "baz") }
|
||||
subject(dbl) { Spectator::Double.new("foobar", foo: 42, bar: "baz") }
|
||||
|
||||
it "responds to defined messages" do
|
||||
aggregate_failures do
|
||||
|
@ -14,6 +14,18 @@ Spectator.describe Spectator::Double do
|
|||
expect { dbl.baz }.to raise_error(Spectator::UnexpectedMessage)
|
||||
end
|
||||
|
||||
it "reports the name in errors" do
|
||||
expect { dbl.baz }.to raise_error(/foobar/)
|
||||
end
|
||||
|
||||
context "without a double name" do
|
||||
subject(dbl) { Spectator::Double.new(foo: 42) }
|
||||
|
||||
it "reports as anonymous" do
|
||||
expect { dbl.baz }.to raise_error(/anonymous/i)
|
||||
end
|
||||
end
|
||||
|
||||
context "with common object methods" do
|
||||
subject(dbl) do
|
||||
Spectator::Double.new(
|
||||
|
|
|
@ -2,7 +2,7 @@ require "./unexpected_message"
|
|||
|
||||
module Spectator
|
||||
class Double(Messages)
|
||||
def initialize(**@messages : **Messages)
|
||||
def initialize(@name : String? = nil, **@messages : **Messages)
|
||||
end
|
||||
|
||||
# TODO: Define macro to redefine a type's method.
|
||||
|
@ -27,7 +27,7 @@ module Spectator
|
|||
@messages[{{meth.name.symbolize}}]
|
||||
{% end %}
|
||||
\{% else %}
|
||||
raise UnexpectedMessage.new("Received unexpected message {{meth.name}} on double <TODO:NAME> (masking ancestor).")
|
||||
raise UnexpectedMessage.new("Double<#{_name}> received unexpected message :{{meth.name}} (masking ancestor) with (<TODO: ARGS>).")
|
||||
\{% end %}
|
||||
end
|
||||
{% end %}
|
||||
|
@ -52,7 +52,7 @@ module Spectator
|
|||
@messages[{{meth.name.symbolize}}]
|
||||
{% end %}
|
||||
\{% else %}
|
||||
raise UnexpectedMessage.new("Received unexpected message {{meth.name}} on double <TODO:NAME> (masking ancestor).")
|
||||
raise UnexpectedMessage.new("Double<#{_name}> received unexpected message :{{meth.name}} (masking ancestor) with (<TODO: ARGS>).")
|
||||
\{% end %}
|
||||
end
|
||||
{% end %}
|
||||
|
@ -77,18 +77,26 @@ module Spectator
|
|||
@messages[{{meth.name.symbolize}}]
|
||||
{% end %}
|
||||
\{% else %}
|
||||
raise UnexpectedMessage.new("Received unexpected message {{meth.name}} on double <TODO:NAME> (masking ancestor).")
|
||||
raise UnexpectedMessage.new("Double<#{_name}> received unexpected message :{{meth.name}} (masking ancestor) with (<TODO: ARGS>).")
|
||||
\{% end %}
|
||||
end
|
||||
{% end %}
|
||||
{% end %}
|
||||
|
||||
private def _name
|
||||
if name = @name
|
||||
"\"#{name}\""
|
||||
else
|
||||
"Anonymous"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
macro method_missing(call)
|
||||
\{% if Messages.keys.includes?({{call.name.symbolize}}.id) %}
|
||||
@messages[{{call.name.symbolize}}]
|
||||
\{% else %}
|
||||
raise UnexpectedMessage.new("Received unexpected message {{call.name}} on double <TODO:NAME>.")
|
||||
raise UnexpectedMessage.new("Double<#{_name}> received unexpected message :{{call.name}} with (<TODO: ARGS>).")
|
||||
\{% end %}
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue