mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Secondary initializer for missing label
Label is set to actual/expected stringified value if omitted.
This commit is contained in:
parent
9a77f8b7fd
commit
7f4690b042
5 changed files with 41 additions and 11 deletions
|
@ -10,7 +10,7 @@ describe Spectator::Expectations::ValueExpectationPartial do
|
|||
end
|
||||
|
||||
describe "#label" do
|
||||
context "with a non-empty string" do
|
||||
context "when provided" do
|
||||
it "contains the value passed to the constructor" do
|
||||
actual = 777
|
||||
label = "lucky"
|
||||
|
@ -19,10 +19,10 @@ describe Spectator::Expectations::ValueExpectationPartial do
|
|||
end
|
||||
end
|
||||
|
||||
context "with an empty string" do
|
||||
context "when omitted" do
|
||||
it "contains a stringified version of #actual" do
|
||||
actual = 777
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new("", actual)
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new(actual)
|
||||
partial.label.should eq(actual.to_s)
|
||||
end
|
||||
end
|
||||
|
|
|
@ -85,6 +85,16 @@ describe Spectator::Matchers::EqualityMatcher do
|
|||
matcher = Spectator::Matchers::EqualityMatcher.new(label, value)
|
||||
matcher.message(partial).should contain(label)
|
||||
end
|
||||
|
||||
context "when expected label is omitted" do
|
||||
it "contains stringified form of expected value" do
|
||||
value1 = 42
|
||||
value2 = 777
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new(value1.to_s, value1)
|
||||
matcher = Spectator::Matchers::EqualityMatcher.new(value2)
|
||||
matcher.message(partial).should contain(value2.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
describe "#negated_message" do
|
||||
|
@ -100,7 +110,7 @@ describe Spectator::Matchers::EqualityMatcher do
|
|||
label = "everything"
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new(label, value)
|
||||
matcher = Spectator::Matchers::EqualityMatcher.new(value.to_s, value)
|
||||
matcher.message(partial).should contain(label)
|
||||
matcher.negated_message(partial).should contain(label)
|
||||
end
|
||||
|
||||
it "contains the expected label" do
|
||||
|
@ -108,7 +118,17 @@ describe Spectator::Matchers::EqualityMatcher do
|
|||
label = "everything"
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new(value.to_s, value)
|
||||
matcher = Spectator::Matchers::EqualityMatcher.new(label, value)
|
||||
matcher.message(partial).should contain(label)
|
||||
matcher.negated_message(partial).should contain(label)
|
||||
end
|
||||
|
||||
context "when expected label is omitted" do
|
||||
it "contains stringified form of expected value" do
|
||||
value1 = 42
|
||||
value2 = 777
|
||||
partial = Spectator::Expectations::ValueExpectationPartial.new(value1.to_s, value1)
|
||||
matcher = Spectator::Matchers::EqualityMatcher.new(value2)
|
||||
matcher.negated_message(partial).should contain(value2.to_s)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
|
@ -8,14 +8,17 @@ module Spectator::Expectations
|
|||
getter actual
|
||||
|
||||
# Creates the expectation partial.
|
||||
# The label should be a string representation of the actual value.
|
||||
# The actual value is stored for later use.
|
||||
protected def initialize(label : String, @actual : ActualType)
|
||||
super(label)
|
||||
end
|
||||
|
||||
# Returns the actual value as a string
|
||||
# if there's no label available.
|
||||
def label
|
||||
super.empty? ? actual.to_s : super
|
||||
# Creates the expectation partial.
|
||||
# The label is generated by calling `#to_s` on the actual value.
|
||||
# The actual value is stored for later use.
|
||||
protected def initialize(@actual : ActualType)
|
||||
super(@actual.to_s)
|
||||
end
|
||||
|
||||
# Asserts that the `#actual` value matches some criteria.
|
||||
|
|
|
@ -17,6 +17,13 @@ module Spectator::Matchers
|
|||
super(label)
|
||||
end
|
||||
|
||||
# Creates the value matcher.
|
||||
# The label is generated by calling `#to_s` on the expected value.
|
||||
# The expected value is stored for later use.
|
||||
def initialize(@expected : ExpectedType)
|
||||
super(@expected.to_s)
|
||||
end
|
||||
|
||||
# Determines whether the matcher is satisfied with the value given to it.
|
||||
# True is returned if the match was successful, false otherwise.
|
||||
abstract def match?(partial : ValueExpectationPartial(ActualType)) : Bool forall ActualType
|
||||
|
|
|
@ -20,7 +20,7 @@ class Object
|
|||
# First argument of the `Expectation` initializer is the expression label.
|
||||
# However, since this isn't a macro and we can't "look behind" this method call
|
||||
# to see what it was invoked on, the argument is an empty string.
|
||||
expectation = ::Spectator::Expectation.new("", self)
|
||||
expectation = ::Spectator::Expectation.new(self)
|
||||
unless matcher.match?(expectation)
|
||||
raise ::Spectator::ExpectationFailed.new(matcher.message(expectation))
|
||||
end
|
||||
|
@ -29,7 +29,7 @@ class Object
|
|||
# Works the same as `#should` except the condition is inverted.
|
||||
# When `#should` succeeds, this method will fail, and vice-versa.
|
||||
def should_not(matcher : ::Spectator::Matchers::Matcher)
|
||||
expectation = ::Spectator::Expectation.new("", self)
|
||||
expectation = ::Spectator::Expectation.new(self)
|
||||
if matcher.match?(expectation)
|
||||
raise ::Spectator::ExpectationFailed.new(matcher.message(expectation))
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue