shard-spectator/spec/expectations/expectation_spec.cr
Michael Miller c156c55c72 Inspect the underlying value
This is needed because MatchDataValue is now a class instead of a 
struct.
2019-03-22 11:55:04 -06:00

149 lines
5.5 KiB
Crystal

require "../spec_helper"
describe Spectator::Expectations::Expectation do
describe "#satisifed?" do
context "with a successful match" do
it "is true" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.satisfied?.should be_true
end
context "when negated" do
it "is false" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.satisfied?.should be_false
end
end
end
context "with an unsuccessful match" do
it "is false" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.satisfied?.should be_false
end
context "when negated" do
it "is true" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.satisfied?.should be_true
end
end
end
end
describe "#values" do
it "is the same as the match data values" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation_values = expectation.values
match_data.values.zip(expectation_values).each do |m, e|
m.label.should eq(e.label)
m.value.value.should eq(e.value.value)
end
end
context "when negated" do
it "negates all negatable values" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.values.each do |labeled_value|
value = labeled_value.value
value.to_s.should start_with(/not/i) if value.responds_to?(:negate)
end
end
end
end
describe "#actual_message" do
context "with a successful match" do
it "equals the matcher's #message" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.actual_message.should eq(match_data.message)
end
context "when negated" do
it "equals the matcher's #message" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.actual_message.should eq(match_data.message)
end
end
end
context "with an unsuccessful match" do
it "equals the matcher's #negated_message" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.actual_message.should eq(match_data.negated_message)
end
context "when negated" do
it "equals the matcher's #negated_message" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.actual_message.should eq(match_data.negated_message)
end
end
end
end
describe "#expected_message" do
context "with a successful match" do
it "equals the matcher's #message" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.expected_message.should eq(match_data.message)
end
context "when negated" do
it "equals the matcher's #negated_message" do
value = 42
match_data = new_matcher(value).match(new_partial(value))
match_data.matched?.should be_true # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.expected_message.should eq(match_data.negated_message)
end
end
end
context "with an unsuccessful match" do
it "equals the matcher's #message" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, false)
expectation.expected_message.should eq(match_data.message)
end
context "when negated" do
it "equals the matcher's #negated_message" do
match_data = new_matcher(42).match(new_partial(777))
match_data.matched?.should be_false # Sanity check.
expectation = Spectator::Expectations::Expectation.new(match_data, true)
expectation.expected_message.should eq(match_data.negated_message)
end
end
end
end
end