This repository was archived by the owner on Nov 30, 2024. It is now read-only.
File tree Expand file tree Collapse file tree 2 files changed +41
-0
lines changed
Expand file tree Collapse file tree 2 files changed +41
-0
lines changed Original file line number Diff line number Diff line change @@ -14,6 +14,10 @@ def self.inspect(object)
1414 elsif RSpec ::Support . is_a_matcher? ( object ) && object . respond_to? ( :description )
1515 object . description
1616 else
17+ registered_klasses . each do |klass , inspector |
18+ return inspector . call ( object ) if klass === object
19+ end
20+
1721 object . inspect
1822 end
1923 end
@@ -43,6 +47,14 @@ def self.format_date_time(date_time)
4347 date_time . inspect
4448 end
4549 end
50+
51+ def self . register ( klass , &block )
52+ registered_klasses [ klass ] = block
53+ end
54+
55+ def self . registered_klasses
56+ @registered_klasses ||= { }
57+ end
4658 end
4759 end
4860end
Original file line number Diff line number Diff line change @@ -92,6 +92,35 @@ def with_date_loaded
9292 matcher_without_a_description . inspect )
9393 end
9494 end
95+
96+ context "with arbitary types" do
97+ class User
98+ attr_accessor :name
99+
100+ def initialize ( name )
101+ @name = name
102+ end
103+ end
104+
105+ before ( :context ) do
106+ ObjectInspector . register User do |user |
107+ "User (#{ user . name } )"
108+ end
109+ end
110+
111+ it "works with custom class" do
112+ user = User . new ( "FooBar" )
113+ expect ( ObjectInspector . inspect ( user ) ) . to eq ( "User (FooBar)" )
114+ end
115+
116+ it "works with subclasses" do
117+ class Admin < User
118+ end
119+
120+ admin = Admin . new ( "FooBar" )
121+ expect ( ObjectInspector . inspect ( admin ) ) . to eq ( "User (FooBar)" )
122+ end
123+ end
95124 end
96125 end
97126end
You can’t perform that action at this time.
0 commit comments