1
0
Fork 0
mirror of https://github.com/awesome-print/awesome_print synced 2023-03-27 23:22:34 -04:00
awesome_print/spec/ext/mongoid_spec.rb
Mauro George 526f907629 Improves spec runner harness, switches to better env detection.
Does not run rails specs when running mongoid specs

WIP Start of remove BRE to check tests

Remove old helper of active record

Use RSpec skip to skip AR specs

Run ActionView only when needed

Run ActiveSupport only when needed

Run Mongoid only when needed

Create ExtVerifier.require_dependencies

Run MongoMapper only when needed

Always load nokogiri specs

Always load ostruct specs

Run Ripple only when needed

Remove :: when check for defined constants

Require spec_helper directly

Remove 1.8.6 old monkey patch

Add some RSpec configs
2015-01-02 13:20:18 -05:00

106 lines
2.6 KiB
Ruby

require 'spec_helper'
RSpec.describe "AwesomePrint/Mongoid", skip: ->{ !ExtVerifier.has_mongoid? }.call do
if ExtVerifier.has_mongoid?
before :all do
class MongoUser
include Mongoid::Document
field :first_name, :type => String
field :last_name, :type => String
end
end
after :all do
Object.instance_eval{ remove_const :MongoUser }
Object.instance_eval{ remove_const :Chamelion }
end
end
before do
stub_dotfile!
@ap = AwesomePrint::Inspector.new :plain => true, :sort_keys => true
end
it "should print class instance" do
user = MongoUser.new :first_name => "Al", :last_name => "Capone"
out = @ap.send :awesome, user
object_id = user.id.inspect
str = <<-EOS.strip
#<MongoUser:0x01234567> {
:_id => #{object_id},
:first_name => "Al",
:last_name => "Capone"
}
EOS
out.gsub!(/0x([a-f\d]+)/, "0x01234567")
expect(out).to eq(str)
end
it "should print the class" do
class_spec = if mongoid_3_0?
<<-EOS.strip
class MongoUser < Object {
:_id => :"moped/bson/object_id",
:_type => :string,
:first_name => :string,
:last_name => :string
}
EOS
elsif mongoid_3_1?
<<-EOS.strip
class MongoUser < Object {
:_id => :"moped/bson/object_id",
:first_name => :string,
:last_name => :string
}
EOS
elsif mongoid_4_0?
<<-EOS.strip
class MongoUser < Object {
:_id => :"bson/object_id",
:first_name => :string,
:last_name => :string
}
EOS
end
expect(@ap.send(:awesome, MongoUser)).to eq class_spec
end
it "should print the class when type is undefined" do
class Chamelion
include Mongoid::Document
field :last_attribute
end
class_spec = if mongoid_3_0?
<<-EOS.strip
class Chamelion < Object {
:_id => :"moped/bson/object_id",
:_type => :string,
:last_attribute => :object
}
EOS
elsif mongoid_3_1?
<<-EOS.strip
class Chamelion < Object {
:_id => :"moped/bson/object_id",
:last_attribute => :object
}
EOS
elsif mongoid_4_0?
<<-EOS.strip
class Chamelion < Object {
:_id => :"bson/object_id",
:last_attribute => :object
}
EOS
end
expect(@ap.send(:awesome, Chamelion)).to eq class_spec
end
end