1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
require 'spec_helper'
describe 'a null object with predicates_return(false)' do
subject(:null) { null_class.new }
let(:null_class) do
Naught.build do |config|
config.predicates_return false
end
end
it 'responds to predicate-style methods with false' do
expect(null.too_much_coffee?).to be(false)
end
it 'responds to other methods with nil' do
expect(null.foobar).to be(nil)
end
describe '(black hole)' do
let(:null_class) do
Naught.build do |config|
config.black_hole
config.predicates_return false
end
end
it 'responds to predicate-style methods with false' do
expect(null.too_much_coffee?).to be(false)
end
it 'responds to other methods with self' do
expect(null.foobar).to be(null)
end
end
describe '(black hole, reverse order config)' do
let(:null_class) do
Naught.build do |config|
config.predicates_return false
config.black_hole
end
end
it 'responds to predicate-style methods with false' do
expect(null.too_much_coffee?).to be(false)
end
it 'responds to other methods with self' do
expect(null.foobar).to be(null)
end
end
class Coffee
attr_reader :origin
def black?; end
end
describe '(mimic)' do
let(:null_class) do
Naught.build do |config|
config.mimic Coffee
config.predicates_return false
end
end
it 'responds to predicate-style methods with false' do
expect(null.black?).to be(false)
end
it 'responds to other methods with nil' do
expect(null.origin).to be(nil)
end
it 'does not respond to undefined methods' do
expect(null).not_to respond_to(:leaf_variety)
expect { null.leaf_variety }.to raise_error(NoMethodError)
end
end
end
|