require 'spec_helper' module RSpec module Mocks module ArgumentMatchers describe HashExcludingMatcher do it "describes itself properly" do HashExcludingMatcher.new(:a => 5).description.should eq "hash_not_including(:a=>5)" end describe "passing" do it "matches a hash without the specified key" do hash_not_including(:c).should eq({:a => 1, :b => 2}) end it "matches a hash with the specified key, but different value" do hash_not_including(:b => 3).should eq({:a => 1, :b => 2}) end it "matches a hash without the specified key, given as anything()" do hash_not_including(:c => anything).should eq({:a => 1, :b => 2}) end it "matches an empty hash" do hash_not_including(:a).should eq({}) end it "matches a hash without any of the specified keys" do hash_not_including(:a, :b, :c).should eq({ :d => 7}) end end describe "failing" do it "does not match a non-hash" do hash_not_including(:a => 1).should_not == 1 end it "does not match a hash with a specified key" do hash_not_including(:b).should_not == {:b => 2} end it "does not match a hash with the specified key/value pair" do hash_not_including(:b => 2).should_not == {:a => 1, :b => 2} end it "does not match a hash with the specified key" do hash_not_including(:a, :b => 3).should_not == {:a => 1, :b => 2} end it "does not match a hash with one of the specified keys" do hash_not_including(:a, :b).should_not == {:b => 2} end it "does not match a hash with some of the specified keys" do hash_not_including(:a, :b, :c).should_not == {:a => 1, :b => 2} end it "does not match a hash with one key/value pair included" do hash_not_including(:a, :b, :c, :d => 7).should_not == { :d => 7} end end end end end end