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/ripple_spec.rb
Gerard Caulfield c5e8669e9c
Simplify matching logic in tests
Simplify matching logic by adding a custom matcher which
handles the task of normalisation of object IDs instead of
calling gsub many times throughout the test code.

This allows our tests to focus more on what needs to be tested
instead obfuscating the tests with logic unrelated to what
the test is trying to cover.

It also allows making the normalisation code more robust so
there is less chance of an accidental match or typo slipping
in.

The change also replaces the arbitary default object IDs with a
string that makes it very obvious that it is just a placeholder.
2016-05-10 04:32:36 +10:00

49 lines
1.1 KiB
Ruby

require 'spec_helper'
RSpec.describe 'AwesomePrint/Ripple', skip: ->{ !ExtVerifier.has_ripple? }.call do
if ExtVerifier.has_ripple?
before :all do
class RippleUser
include Ripple::Document
key_on :_id
property :_id, String
property :first_name, String
property :last_name, String
end
end
after :all do
Object.instance_eval { remove_const :RippleUser }
end
end
before do
stub_dotfile!
@ap = AwesomePrint::Inspector.new :plain => true, :sort_keys => true
end
it "should print class instance" do
user = RippleUser.new :_id => "12345", :first_name => "Al", :last_name => "Capone"
out = @ap.send :awesome, user
expect(out).to be_similar_to <<-EOS.strip
#<RippleUser:placeholder_id> {
:_id => "12345",
:first_name => "Al",
:last_name => "Capone"
}
EOS
end
it "should print the class" do
expect(@ap.send(:awesome, RippleUser)).to eq <<-EOS.strip
class RippleUser < Object {
:_id => :string,
:first_name => :string,
:last_name => :string
}
EOS
end
end