Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
tree: 81d1751e88
Fetching contributors…

Cannot retrieve contributors at this time

463 lines (389 sloc) 13.363 kb
require 'spec_helper'
describe "should be_predicate" do
it "should pass when actual returns true for :predicate?" do
actual = stub("actual", :happy? => true)
actual.should be_happy
end
it "should pass when actual returns true for :predicates? (present tense)" do
actual = stub("actual", :exists? => true, :exist? => true)
actual.should be_exist
end
it "should fail when actual returns false for :predicate?" do
actual = stub("actual", :happy? => false)
lambda {
actual.should be_happy
}.should fail_with("expected happy? to return true, got false")
end
it "should fail when actual returns false for :predicate?" do
actual = stub("actual", :happy? => nil)
lambda {
actual.should be_happy
}.should fail_with("expected happy? to return true, got nil")
end
it "should fail when actual does not respond to :predicate?" do
lambda {
Object.new.should be_happy
}.should raise_error(NameError, /happy\?/)
end
it "should fail on error other than NameError" do
actual = stub("actual")
actual.should_receive(:foo?).and_raise("aaaah")
lambda {
actual.should be_foo
}.should raise_error(/aaaah/)
end
it "should fail on error other than NameError (with the present tense predicate)" do
actual = Object.new
actual.should_receive(:foos?).and_raise("aaaah")
lambda {
actual.should be_foo
}.should raise_error(/aaaah/)
end
end
describe "should_not be_predicate" do
it "should pass when actual returns false for :sym?" do
actual = stub("actual", :happy? => false)
actual.should_not be_happy
end
it "should pass when actual returns nil for :sym?" do
actual = stub("actual", :happy? => nil)
actual.should_not be_happy
end
it "should fail when actual returns true for :sym?" do
actual = stub("actual", :happy? => true)
lambda {
actual.should_not be_happy
}.should fail_with("expected happy? to return false, got true")
end
it "should fail when actual does not respond to :sym?" do
lambda {
Object.new.should_not be_happy
}.should raise_error(NameError)
end
end
describe "should be_predicate(*args)" do
it "should pass when actual returns true for :predicate?(*args)" do
actual = mock("actual")
actual.should_receive(:older_than?).with(3).and_return(true)
actual.should be_older_than(3)
end
it "should fail when actual returns false for :predicate?(*args)" do
actual = mock("actual")
actual.should_receive(:older_than?).with(3).and_return(false)
lambda {
actual.should be_older_than(3)
}.should fail_with("expected older_than?(3) to return true, got false")
end
it "should fail when actual does not respond to :predicate?" do
lambda {
Object.new.should be_older_than(3)
}.should raise_error(NameError)
end
end
describe "should_not be_predicate(*args)" do
it "should pass when actual returns false for :predicate?(*args)" do
actual = mock("actual")
actual.should_receive(:older_than?).with(3).and_return(false)
actual.should_not be_older_than(3)
end
it "should fail when actual returns true for :predicate?(*args)" do
actual = mock("actual")
actual.should_receive(:older_than?).with(3).and_return(true)
lambda {
actual.should_not be_older_than(3)
}.should fail_with("expected older_than?(3) to return false, got true")
end
it "should fail when actual does not respond to :predicate?" do
lambda {
Object.new.should_not be_older_than(3)
}.should raise_error(NameError)
end
end
describe "should be_predicate(&block)" do
it "should pass when actual returns true for :predicate?(&block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:happy?).and_yield
delegate.should_receive(:check_happy).and_return(true)
actual.should be_happy { delegate.check_happy }
end
it "should fail when actual returns false for :predicate?(&block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:happy?).and_yield
delegate.should_receive(:check_happy).and_return(false)
lambda {
actual.should be_happy { delegate.check_happy }
}.should fail_with("expected happy? to return true, got false")
end
it "should fail when actual does not respond to :predicate?" do
delegate = mock("delegate", :check_happy => true)
lambda {
Object.new.should be_happy { delegate.check_happy }
}.should raise_error(NameError)
end
end
describe "should_not be_predicate(&block)" do
it "should pass when actual returns false for :predicate?(&block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:happy?).and_yield
delegate.should_receive(:check_happy).and_return(false)
actual.should_not be_happy { delegate.check_happy }
end
it "should fail when actual returns true for :predicate?(&block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:happy?).and_yield
delegate.should_receive(:check_happy).and_return(true)
lambda {
actual.should_not be_happy { delegate.check_happy }
}.should fail_with("expected happy? to return false, got true")
end
it "should fail when actual does not respond to :predicate?" do
delegate = mock("delegate", :check_happy => true)
lambda {
Object.new.should_not be_happy { delegate.check_happy }
}.should raise_error(NameError)
end
end
describe "should be_predicate(*args, &block)" do
it "should pass when actual returns true for :predicate?(*args, &block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:older_than?).with(3).and_yield(3)
delegate.should_receive(:check_older_than).with(3).and_return(true)
actual.should be_older_than(3) { |age| delegate.check_older_than(age) }
end
it "should fail when actual returns false for :predicate?(*args, &block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:older_than?).with(3).and_yield(3)
delegate.should_receive(:check_older_than).with(3).and_return(false)
lambda {
actual.should be_older_than(3) { |age| delegate.check_older_than(age) }
}.should fail_with("expected older_than?(3) to return true, got false")
end
it "should fail when actual does not respond to :predicate?" do
delegate = mock("delegate", :check_older_than => true)
lambda {
Object.new.should be_older_than(3) { |age| delegate.check_older_than(age) }
}.should raise_error(NameError)
end
end
describe "should_not be_predicate(*args, &block)" do
it "should pass when actual returns false for :predicate?(*args, &block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:older_than?).with(3).and_yield(3)
delegate.should_receive(:check_older_than).with(3).and_return(false)
actual.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
end
it "should fail when actual returns true for :predicate?(*args, &block)" do
actual = mock("actual")
delegate = mock("delegate")
actual.should_receive(:older_than?).with(3).and_yield(3)
delegate.should_receive(:check_older_than).with(3).and_return(true)
lambda {
actual.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
}.should fail_with("expected older_than?(3) to return false, got true")
end
it "should fail when actual does not respond to :predicate?" do
delegate = mock("delegate", :check_older_than => true)
lambda {
Object.new.should_not be_older_than(3) { |age| delegate.check_older_than(age) }
}.should raise_error(NameError)
end
end
describe "should be_true" do
it "should pass when actual equal?(true)" do
true.should be_true
end
it "should pass when actual is 1" do
1.should be_true
end
it "should fail when actual equal?(false)" do
lambda {
false.should be_true
}.should fail_with("expected false to be true")
end
end
describe "should be_false" do
it "should pass when actual equal?(false)" do
false.should be_false
end
it "should pass when actual equal?(nil)" do
nil.should be_false
end
it "should fail when actual equal?(true)" do
lambda {
true.should be_false
}.should fail_with("expected true to be false")
end
end
describe "should be_nil" do
it "should pass when actual is nil" do
nil.should be_nil
end
it "should fail when actual is not nil" do
lambda {
:not_nil.should be_nil
}.should fail_with("expected nil, got :not_nil")
end
end
describe "should_not be_nil" do
it "should pass when actual is not nil" do
:not_nil.should_not be_nil
end
it "should fail when actual is nil" do
lambda {
nil.should_not be_nil
}.should fail_with("expected not nil, got nil")
end
end
describe "should be <" do
it "should pass when < operator returns true" do
3.should be < 4
end
it "should fail when < operator returns false" do
lambda { 3.should be < 3 }.should fail_with("expected < 3, got 3")
end
it "should describe itself" do
be.<(4).description.should == "be < 4"
end
end
describe "should be <=" do
it "should pass when <= operator returns true" do
3.should be <= 4
4.should be <= 4
end
it "should fail when <= operator returns false" do
lambda { 3.should be <= 2 }.should fail_with("expected <= 2, got 3")
end
end
describe "should be >=" do
it "should pass when >= operator returns true" do
4.should be >= 4
5.should be >= 4
end
it "should fail when >= operator returns false" do
lambda { 3.should be >= 4 }.should fail_with("expected >= 4, got 3")
end
end
describe "should be >" do
it "should pass when > operator returns true" do
5.should be > 4
end
it "should fail when > operator returns false" do
lambda { 3.should be > 4 }.should fail_with("expected > 4, got 3")
end
end
describe "should be ==" do
it "should pass when == operator returns true" do
5.should be == 5
end
it "should fail when == operator returns false" do
lambda { 3.should be == 4 }.should fail_with("expected == 4, got 3")
end
end
describe "should be ===" do
it "should pass when === operator returns true" do
Hash.should be === Hash.new
end
it "should fail when === operator returns false" do
lambda { Hash.should be === "not a hash" }.should fail_with(%[expected === not a hash, got Hash])
end
end
describe "should_not with operators" do
it "should coach user to stop using operators with should_not" do
lambda {
5.should_not be < 6
}.should raise_error(/not only FAILED,\nit is a bit confusing./m)
end
end
describe "should be" do
it "should pass if actual is truthy" do
true.should be
1.should be
end
it "should fail if actual is false" do
lambda {false.should be}.should fail_with("expected false to evaluate to true")
end
it "should fail if actual is nil" do
lambda {nil.should be}.should fail_with("expected nil to evaluate to true")
end
it "should describe itself" do
be.description.should == "be"
end
end
describe "should_not be" do
it "should pass if actual is falsy" do
false.should_not be
nil.should_not be
end
it "should fail on true" do
lambda {true.should_not be}.should fail_with("expected true to evaluate to false")
end
end
describe "should be(value)" do
it "should pass if actual.equal?(value)" do
5.should be(5)
end
it "should fail if !actual.equal?(value)" do
lambda { 5.should be(6) }.should fail_with("expected 6, got 5")
end
it "should describe itself" do
be(5).description.should == "be 5"
end
end
describe "should_not be(value)" do
it "should pass if !actual.equal?(value)" do
5.should_not be(6)
end
it "should fail if !actual.equal?(value)" do
lambda { 5.should_not be(5) }.should fail_with("expected not 5, got 5")
end
end
describe "'should be' with operator" do
it "should include 'be' in the description" do
(be > 6).description.should =~ /be > 6/
(be >= 6).description.should =~ /be >= 6/
(be <= 6).description.should =~ /be <= 6/
(be < 6).description.should =~ /be < 6/
end
end
describe "arbitrary predicate with DelegateClass" do
it "should access methods defined in the delegating class (LH[#48])" do
pending("this fails in 1.9.2-preview3") unless RUBY_VERSION.to_s =~ /^1.8/
require 'delegate'
class ArrayDelegate < DelegateClass(Array)
def initialize(array)
@internal_array = array
super(@internal_array)
end
def large?
@internal_array.size >= 5
end
end
delegate = ArrayDelegate.new([1,2,3,4,5,6])
delegate.should be_large
end
end
describe "be_a, be_an" do
it "should pass when class matches" do
"foobar".should be_a(String)
[1,2,3].should be_an(Array)
end
it "should fail when class does not match" do
"foobar".should_not be_a(Hash)
[1,2,3].should_not be_an(Integer)
end
end
describe "be_an_instance_of" do
it "passes when direct class matches" do
5.should be_an_instance_of(Fixnum)
end
it "fails when class is higher up hierarchy" do
5.should_not be_an_instance_of(Numeric)
end
end
Jump to Line
Something went wrong with that request. Please try again.