From b8822574ecb55afc8f07599cb25e54a397e782c6 Mon Sep 17 00:00:00 2001 From: Mike Dvorkin Date: Fri, 13 May 2011 21:07:34 -0700 Subject: [PATCH] Refactored MongoMapper extension and its specs --- lib/awesome_print/ext/mongo_mapper.rb | 6 +-- spec/ext/active_record_spec.rb | 4 +- spec/ext/mongo_mapper_spec.rb | 60 ++++++++++++++++++++++----- 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/lib/awesome_print/ext/mongo_mapper.rb b/lib/awesome_print/ext/mongo_mapper.rb index 4ac3c7e..dc38e12 100644 --- a/lib/awesome_print/ext/mongo_mapper.rb +++ b/lib/awesome_print/ext/mongo_mapper.rb @@ -15,7 +15,7 @@ module AwesomePrint #------------------------------------------------------------------------------ def cast_with_mongo_mapper(object, type) cast = cast_without_mongo_mapper(object, type) - if defined?(MongoMapper::Document) && object.is_a?(Class) && (object.ancestors & [ MongoMapper::Document, MongoMapper::EmbeddedDocument ]).size > 0 + if defined?(::MongoMapper::Document) && object.is_a?(Class) && (object.ancestors & [ ::MongoMapper::Document, ::MongoMapper::EmbeddedDocument ]).size > 0 cast = :mongo_mapper_class end cast @@ -24,9 +24,9 @@ module AwesomePrint # Format MongoMapper class object. #------------------------------------------------------------------------------ def awesome_mongo_mapper_class(object) - return object.inspect if !defined?(ActiveSupport::OrderedHash) || !object.respond_to?(:keys) + return object.inspect if !defined?(::ActiveSupport::OrderedHash) || !object.respond_to?(:keys) - data = object.keys.sort_by{|k| k}.inject(ActiveSupport::OrderedHash.new) do |hash, c| + data = object.keys.sort.inject(::ActiveSupport::OrderedHash.new) do |hash, c| hash[c.first] = (c.last.type || "undefined").to_s.underscore.intern hash end diff --git a/spec/ext/active_record_spec.rb b/spec/ext/active_record_spec.rb index 2cf759b..e48acba 100644 --- a/spec/ext/active_record_spec.rb +++ b/spec/ext/active_record_spec.rb @@ -33,13 +33,13 @@ begin end describe "AwesomePrint/ActiveRecord" do - before(:each) do + before do stub_dotfile! end #------------------------------------------------------------------------------ describe "ActiveRecord instance" do - before(:each) do + before do ActiveRecord::Base.default_timezone = :utc @diana = User.new(:name => "Diana", :rank => 1, :admin => false, :created_at => "1992-10-10 12:30:00") @laura = User.new(:name => "Laura", :rank => 2, :admin => true, :created_at => "2003-05-26 14:15:00") diff --git a/spec/ext/mongo_mapper_spec.rb b/spec/ext/mongo_mapper_spec.rb index f877c18..2168556 100644 --- a/spec/ext/mongo_mapper_spec.rb +++ b/spec/ext/mongo_mapper_spec.rb @@ -14,26 +14,64 @@ begin end end - before :each do - @ap = AwesomePrint::Inspector.new(:plain => true) + before do + @ap = AwesomePrint::Inspector.new(:plain => true, :sort_keys => true) end - it "should print for a class instance" do + it "should print class instance" do user = MongoUser.new(:first_name => "Al", :last_name => "Capone") out = @ap.send(:awesome, user) str = <<-EOS.strip -# { - "_id" => BSON::ObjectId('4d9183739a546f6806000001'), - "first_name" => "Al", - "last_name" => "Capone" -} +#, + attr_accessor :first_name = "Al", + attr_accessor :last_name = "Capone", + attr_reader :_id_before_type_cast = #, + attr_reader :changed_attributes = { + "first_name" => nil, + "last_name" => nil + }, + attr_reader :first_name_before_type_cast = "Al", + attr_reader :last_name_before_type_cast = "Capone" +> EOS - out.gsub!(/'([\w]+){23}'/, "'4d9183739a546f6806000001'") out.gsub!(/0x([a-f\d]+)/, "0x01234567") + out.gsub!(/(\[\s?\d+\])\s\d+/, "\\1 42") out.should == str end - it "should print for a class" do + it "should print the class" do @ap.send(:awesome, MongoUser).should == <<-EOS.strip class MongoUser < Object { "_id" => :object_id, @@ -43,7 +81,7 @@ class MongoUser < Object { EOS end - it "should print for a class when type is undefined" do + it "should print the class when type is undefined" do class Chamelion include MongoMapper::Document key :last_attribute