Add "should.include?" for test/spec
I have done the following one too many times:
[ruby]collection.should.include?(object)[/ruby]
Only to have it fail because test/spec’s should doesn’t know about include? (or .not.include?)
However, as Chris points out in the comments, test/spec does allow .should.include (without the “?”), but does not have a should.not version of it. So the following adds a alias with the question mark, and also adds the should.not complement.
[ruby]module Test::Spec::Rails::ShouldInclude def self.included(base) base.class_eval { alias_method :include?, :include } end end
module Test::Spec::Rails::ShouldNotInclude def self.included(base) base.class_eval { alias_method :include?, :include } end
def include(value) msg = build_message(@message, “< ?> expected to not include ?, but it did.”, @object, value) assert_block(msg) { !@object.include?(value) } end end
Test::Spec::Should.send(:include, Test::Spec::Rails::ShouldInclude) Test::Spec::ShouldNot.send(:include, Test::Spec::Rails::ShouldNotInclude) [/ruby]
(updated 8/8)