draper/spec/support/shared_examples/decoratable_equality.rb

41 lines
1.1 KiB
Ruby

shared_examples_for "decoration-aware #==" do |subject|
it "is true for itself" do
expect(subject == subject).to be_truthy
end
it "is false for another object" do
expect(subject == Object.new).to be_falsey
end
it "is true for a decorated version of itself" do
decorated = double(object: subject, decorated?: true)
expect(subject == decorated).to be_truthy
end
it "is false for a decorated other object" do
decorated = double(object: Object.new, decorated?: true)
expect(subject == decorated).to be_falsey
end
it "is false for a decoratable object with a `object` association" do
decoratable = double(object: subject, decorated?: false)
expect(subject == decoratable).to be_falsey
end
it "is false for an undecoratable object with a `object` association" do
undecoratable = double(object: subject)
expect(subject == undecoratable).to be_falsey
end
it "is true for a multiply-decorated version of itself" do
decorated = double(object: subject, decorated?: true)
redecorated = double(object: decorated, decorated?: true)
expect(subject == redecorated).to be_truthy
end
end