spec/exceptions_spec.rb in egregious-0.2.2 vs spec/exceptions_spec.rb in egregious-0.2.3
- old
+ new
@@ -38,6 +38,51 @@
end
end
end
X::Y::Z.new.exception_type.should == 'Z'
end
+end
+
+if defined?(Mongoid)
+ class TestModel
+ include Mongoid::Document
+
+ field :foo
+ validates_presence_of :foo
+ end
+
+
+ describe Mongoid::Errors::MongoidError do
+ let(:exception) { Mongoid::Errors::InvalidFind.new }
+ let(:error_message) { "Calling Document.find with nil is invalid." }
+
+ it "should output json with a short problem description" do
+ result = JSON.parse(exception.to_json)
+ result['error'].should =~ /#{error_message}/
+ end
+
+ it "should output xml with a short problem description" do
+ doc = Hpricot.XML(exception.to_xml)
+ (doc/:errors).each do |error|
+ HTMLEntities.new.decode((error/:error).inner_html).should =~ /#{error_message}/
+ end
+ end
+ end
+
+ describe Mongoid::Errors::Validations do
+ let(:model) { TestModel.create }
+ let(:exception) { Mongoid::Errors::Validations.new(model) }
+ let(:error_message) { model.errors.full_messages.first }
+
+ it "should output json with a short summary" do
+ result = JSON.parse(exception.to_json)
+ result['error'].should == error_message
+ end
+
+ it "should output xml with a short problem description" do
+ doc = Hpricot.XML(exception.to_xml)
+ (doc/:errors).each do |error|
+ HTMLEntities.new.decode((error/:error).inner_html).should == error_message
+ end
+ end
+ end
end
\ No newline at end of file