mirror of
https://github.com/awesome-print/awesome_print
synced 2023-03-27 23:22:34 -04:00
c5e8669e9c
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.
129 lines
3 KiB
Ruby
129 lines
3 KiB
Ruby
require 'spec_helper'
|
|
|
|
RSpec.describe "Objects" do
|
|
before do
|
|
stub_dotfile!
|
|
end
|
|
|
|
after do
|
|
Object.instance_eval{ remove_const :Hello } if defined?(Hello)
|
|
end
|
|
|
|
describe "Formatting an object" do
|
|
it "attributes" do
|
|
class Hello
|
|
attr_reader :abra
|
|
attr_writer :ca
|
|
attr_accessor :dabra
|
|
|
|
def initialize
|
|
@abra, @ca, @dabra = 1, 2, 3
|
|
end
|
|
end
|
|
|
|
hello = Hello.new
|
|
out = hello.ai(:plain => true, :raw => true)
|
|
str = <<-EOS.strip
|
|
#<Hello:placeholder_id
|
|
attr_accessor :dabra = 3,
|
|
attr_reader :abra = 1,
|
|
attr_writer :ca = 2
|
|
>
|
|
EOS
|
|
expect(out).to be_similar_to(str)
|
|
expect(hello.ai(:plain => true, :raw => false)).to eq(hello.inspect)
|
|
end
|
|
|
|
it "instance variables" do
|
|
class Hello
|
|
def initialize
|
|
@abra, @ca, @dabra = 1, 2, 3
|
|
end
|
|
end
|
|
|
|
hello = Hello.new
|
|
out = hello.ai(:plain => true, :raw => true)
|
|
str = <<-EOS.strip
|
|
#<Hello:placeholder_id
|
|
@abra = 1,
|
|
@ca = 2,
|
|
@dabra = 3
|
|
>
|
|
EOS
|
|
expect(out).to be_similar_to(str)
|
|
expect(hello.ai(:plain => true, :raw => false)).to eq(hello.inspect)
|
|
end
|
|
|
|
it "attributes and instance variables" do
|
|
class Hello
|
|
attr_reader :abra
|
|
attr_writer :ca
|
|
attr_accessor :dabra
|
|
|
|
def initialize
|
|
@abra, @ca, @dabra = 1, 2, 3
|
|
@scooby, @dooby, @doo = 3, 2, 1
|
|
end
|
|
end
|
|
|
|
hello = Hello.new
|
|
out = hello.ai(:plain => true, :raw => true)
|
|
str = <<-EOS.strip
|
|
#<Hello:placeholder_id
|
|
@doo = 1,
|
|
@dooby = 2,
|
|
@scooby = 3,
|
|
attr_accessor :dabra = 3,
|
|
attr_reader :abra = 1,
|
|
attr_writer :ca = 2
|
|
>
|
|
EOS
|
|
expect(out).to be_similar_to(str)
|
|
expect(hello.ai(:plain => true, :raw => false)).to eq(hello.inspect)
|
|
end
|
|
|
|
it "without the plain options print the colorized values" do
|
|
class Hello
|
|
attr_reader :abra
|
|
attr_writer :ca
|
|
|
|
def initialize
|
|
@abra, @ca = 1, 2
|
|
@dabra = 3
|
|
end
|
|
end
|
|
|
|
hello = Hello.new
|
|
out = hello.ai(:raw => true)
|
|
str = <<-EOS.strip
|
|
#<Hello:placeholder_id
|
|
\e[0;36m@dabra\e[0m\e[0;37m = \e[0m\e[1;34m3\e[0m,
|
|
\e[1;36mattr_reader\e[0m \e[0;35m:abra\e[0m\e[0;37m = \e[0m\e[1;34m1\e[0m,
|
|
\e[1;36mattr_writer\e[0m \e[0;35m:ca\e[0m\e[0;37m = \e[0m\e[1;34m2\e[0m
|
|
>
|
|
EOS
|
|
expect(out).to be_similar_to(str)
|
|
expect(hello.ai(:plain => true, :raw => false)).to eq(hello.inspect)
|
|
end
|
|
|
|
it "with multine as false show inline values" do
|
|
class Hello
|
|
attr_reader :abra
|
|
attr_writer :ca
|
|
|
|
def initialize
|
|
@abra, @ca = 1, 2
|
|
@dabra = 3
|
|
end
|
|
end
|
|
|
|
hello = Hello.new
|
|
out = hello.ai(:multiline => false, :plain => true, :raw => true)
|
|
str = <<-EOS.strip
|
|
#<Hello:placeholder_id @dabra = 3, attr_reader :abra = 1, attr_writer :ca = 2>
|
|
EOS
|
|
expect(out).to be_similar_to(str)
|
|
expect(hello.ai(:plain => true, :raw => false)).to eq(hello.inspect)
|
|
end
|
|
end
|
|
end
|