diff --git a/lib/mongoid/criteria.rb b/lib/mongoid/criteria.rb index a34e5c5474..e429f2c823 100644 --- a/lib/mongoid/criteria.rb +++ b/lib/mongoid/criteria.rb @@ -298,7 +298,7 @@ def search(*args) # # @since 2.0.0 def raise_invalid - raise Errors::InvalidOptions.new(:calling_document_find_with_nil_is_invalid, {}) + raise Errors::InvalidFind.new end protected diff --git a/lib/mongoid/errors.rb b/lib/mongoid/errors.rb index 5f5371161c..2c403e3b57 100644 --- a/lib/mongoid/errors.rb +++ b/lib/mongoid/errors.rb @@ -5,6 +5,7 @@ require "mongoid/errors/invalid_collection" require "mongoid/errors/invalid_database" require "mongoid/errors/invalid_field" +require "mongoid/errors/invalid_find" require "mongoid/errors/invalid_options" require "mongoid/errors/invalid_type" require "mongoid/errors/mixed_relations" diff --git a/lib/mongoid/errors/invalid_find.rb b/lib/mongoid/errors/invalid_find.rb new file mode 100644 index 0000000000..cf530d2c16 --- /dev/null +++ b/lib/mongoid/errors/invalid_find.rb @@ -0,0 +1,19 @@ +# encoding: utf-8 +module Mongoid #:nodoc + module Errors #:nodoc + + # Raised when invalid arguments are passed to #find. + class InvalidFind < MongoidError + + # Create the new invalid find error. + # + # @example Create the error. + # InvalidFind.new + # + # @since 2.2.0 + def initialize + super(translate("calling_document_find_with_nil_is_invalid", {})) + end + end + end +end diff --git a/spec/unit/mongoid/criteria_spec.rb b/spec/unit/mongoid/criteria_spec.rb index 58e7289eab..0b620b5942 100644 --- a/spec/unit/mongoid/criteria_spec.rb +++ b/spec/unit/mongoid/criteria_spec.rb @@ -945,6 +945,15 @@ context "with a single argument" do + context "when the arg is nil" do + + it "adds the id selector" do + expect { + criteria.search(nil) + }.to raise_error(Mongoid::Errors::InvalidFind) + end + end + context "when the arg is a string" do let(:id) do diff --git a/spec/unit/mongoid/errors/invalid_find_spec.rb b/spec/unit/mongoid/errors/invalid_find_spec.rb new file mode 100644 index 0000000000..174664e368 --- /dev/null +++ b/spec/unit/mongoid/errors/invalid_find_spec.rb @@ -0,0 +1,17 @@ +require "spec_helper" + +describe Mongoid::Errors::InvalidFind do + + describe "#message" do + + let(:error) do + described_class.new + end + + it "returns the warning find with nil" do + error.message.should include( + "Calling Document#find with nil is invalid" + ) + end + end +end