This repository was archived by the owner on Nov 30, 2024. It is now read-only.
File tree 2 files changed +41
-0
lines changed
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)
14
14
elsif RSpec ::Support . is_a_matcher? ( object ) && object . respond_to? ( :description )
15
15
object . description
16
16
else
17
+ registered_klasses . each do |klass , inspector |
18
+ return inspector . call ( object ) if klass === object
19
+ end
20
+
17
21
object . inspect
18
22
end
19
23
end
@@ -43,6 +47,14 @@ def self.format_date_time(date_time)
43
47
date_time . inspect
44
48
end
45
49
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
46
58
end
47
59
end
48
60
end
Original file line number Diff line number Diff line change @@ -92,6 +92,35 @@ def with_date_loaded
92
92
matcher_without_a_description . inspect )
93
93
end
94
94
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
95
124
end
96
125
end
97
126
end
You can’t perform that action at this time.
0 commit comments