From 1f2f7f2214eafa5421938832433511aa87b3ed99 Mon Sep 17 00:00:00 2001 From: Michael Miller Date: Tue, 5 Feb 2019 19:37:41 -0700 Subject: [PATCH] Add spec for `have_value` matcher --- spec/matchers/have_value_matcher_spec.cr | 85 ++++++++++++++++++++++++ 1 file changed, 85 insertions(+) create mode 100644 spec/matchers/have_value_matcher_spec.cr diff --git a/spec/matchers/have_value_matcher_spec.cr b/spec/matchers/have_value_matcher_spec.cr new file mode 100644 index 0000000..f43e8ef --- /dev/null +++ b/spec/matchers/have_value_matcher_spec.cr @@ -0,0 +1,85 @@ +require "../spec_helper" + +describe Spectator::Matchers::HaveValueMatcher do + describe "#match?" do + context "with an existing value" do + it "is true" do + hash = Hash{"foo" => "bar"} + value = "bar" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.match?(partial).should be_true + end + end + + context "with a non-existent value" do + it "is false" do + hash = Hash{"foo" => "bar"} + value = "baz" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.match?(partial).should be_false + end + end + end + + describe "#message" do + it "contains the actual label" do + hash = Hash{"foo" => "bar"} + value = "bar" + label = "blah" + partial = Spectator::Expectations::ValueExpectationPartial.new(label, hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.message(partial).should contain(label) + end + + it "contains the expected label" do + hash = Hash{"foo" => "bar"} + value = "bar" + label = "blah" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(label, value) + matcher.message(partial).should contain(label) + end + + context "when the expected label is omitted" do + it "contains the stringified key" do + hash = Hash{"foo" => "bar"} + value = "bar" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.message(partial).should contain(value.to_s) + end + end + end + + describe "#negated_message" do + it "contains the actual label" do + hash = Hash{"foo" => "bar"} + value = "bar" + label = "blah" + partial = Spectator::Expectations::ValueExpectationPartial.new(label, hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.negated_message(partial).should contain(label) + end + + it "contains the expected label" do + hash = Hash{"foo" => "bar"} + value = "bar" + label = "blah" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(label, value) + matcher.negated_message(partial).should contain(label) + end + + context "when the expected label is omitted" do + it "contains the stringified key" do + hash = Hash{"foo" => "bar"} + value = "bar" + partial = Spectator::Expectations::ValueExpectationPartial.new(hash) + matcher = Spectator::Matchers::HaveValueMatcher.new(value) + matcher.negated_message(partial).should contain(value.to_s) + end + end + end +end