@@ -30,13 +30,16 @@ class MinitestAssertions < Base
30
30
RESTRICT_ON_SEND = %i[
31
31
assert_equal
32
32
assert_not_equal
33
+ assert_instance_of
34
+ assert_not_instance_of
33
35
assert_includes
34
36
assert_not_includes
35
37
assert_nil
36
38
assert_not_nil
37
39
assert_empty
38
40
assert_not_empty
39
41
refute_equal
42
+ refute_instance_of
40
43
refute_includes
41
44
refute_nil
42
45
refute_empty
@@ -47,6 +50,11 @@ class MinitestAssertions < Base
47
50
(send nil? {:assert_equal :assert_not_equal :refute_equal} $_ $_ $_?)
48
51
PATTERN
49
52
53
+ # @!method minitest_instance_of(node)
54
+ def_node_matcher :minitest_instance_of , <<~PATTERN
55
+ (send nil? {:assert_instance_of :assert_not_instance_of :refute_instance_of} $_ $_ $_?)
56
+ PATTERN
57
+
50
58
# @!method minitest_includes(node)
51
59
def_node_matcher :minitest_includes , <<~PATTERN
52
60
(send nil? {:assert_includes :assert_not_includes :refute_includes} $_ $_ $_?)
@@ -68,18 +76,23 @@ def on_send(node) # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
68
76
failure_message . first ) )
69
77
end
70
78
79
+ minitest_instance_of ( node ) do |expected , actual , failure_message |
80
+ on_assertion ( node , InstanceOfAssertion . new ( expected , actual ,
81
+ failure_message . first ) )
82
+ end
83
+
71
84
minitest_includes ( node ) do |collection , expected , failure_message |
72
- on_assertion ( node , IncludesAssertion . new ( collection , expected ,
85
+ on_assertion ( node , IncludesAssertion . new ( expected , collection ,
73
86
failure_message . first ) )
74
87
end
75
88
76
89
minitest_nil ( node ) do |actual , failure_message |
77
- on_assertion ( node , NilAssertion . new ( actual ,
90
+ on_assertion ( node , NilAssertion . new ( nil , actual ,
78
91
failure_message . first ) )
79
92
end
80
93
81
94
minitest_empty ( node ) do |actual , failure_message |
82
- on_assertion ( node , EmptyAssertion . new ( actual ,
95
+ on_assertion ( node , EmptyAssertion . new ( nil , actual ,
83
96
failure_message . first ) )
84
97
end
85
98
end
@@ -96,79 +109,75 @@ def message(preferred)
96
109
end
97
110
98
111
# :nodoc:
99
- class EqualAssertion
112
+ class BasicAssertion
100
113
def initialize ( expected , actual , fail_message )
101
- @expected = expected
102
- @actual = actual
103
- @fail_message = fail_message
114
+ @expected = expected &. source
115
+ @actual = actual . source
116
+ @fail_message = fail_message &. source
104
117
end
105
118
106
119
def replaced ( node )
107
- runner = node . method? ( :assert_equal ) ? 'to ' : 'not_to '
120
+ runner = negated? ( node ) ? 'not_to ' : 'to '
108
121
if @fail_message . nil?
109
- "expect(#{ @actual . source } ).#{ runner } eq( #{ @expected . source } ) "
122
+ "expect(#{ @actual } ).#{ runner } #{ assertion } "
110
123
else
111
- "expect(#{ @actual . source } ).#{ runner } (eq(#{ @expected . source } )," \
112
- " #{ @fail_message . source } )"
124
+ "expect(#{ @actual } ).#{ runner } (#{ assertion } , #{ @fail_message } )"
113
125
end
114
126
end
115
127
end
116
128
117
129
# :nodoc:
118
- class IncludesAssertion
119
- def initialize ( collection , expected , fail_message )
120
- @collection = collection
121
- @expected = expected
122
- @fail_message = fail_message
130
+ class EqualAssertion < BasicAssertion
131
+ def negated? ( node )
132
+ !node . method? ( :assert_equal )
123
133
end
124
134
125
- def replaced ( node )
126
- a_source = @collection . source
127
- b_source = @expected . source
135
+ def assertion
136
+ "eq(#{ @expected } )"
137
+ end
138
+ end
128
139
129
- runner = node . method? ( :assert_includes ) ? 'to' : 'not_to'
130
- if @fail_message . nil?
131
- "expect(#{ a_source } ).#{ runner } include(#{ b_source } )"
132
- else
133
- "expect(#{ a_source } ).#{ runner } (include(#{ b_source } )," \
134
- " #{ @fail_message . source } )"
135
- end
140
+ # :nodoc:
141
+ class InstanceOfAssertion < BasicAssertion
142
+ def negated? ( node )
143
+ !node . method? ( :assert_instance_of )
144
+ end
145
+
146
+ def assertion
147
+ "be_an_instance_of(#{ @expected } )"
136
148
end
137
149
end
138
150
139
151
# :nodoc:
140
- class NilAssertion
141
- def initialize ( actual , fail_message )
142
- @actual = actual
143
- @fail_message = fail_message
152
+ class IncludesAssertion < BasicAssertion
153
+ def negated? ( node )
154
+ !node . method? ( :assert_includes )
144
155
end
145
156
146
- def replaced ( node )
147
- runner = node . method? ( :assert_nil ) ? 'to' : 'not_to'
148
- if @fail_message . nil?
149
- "expect(#{ @actual . source } ).#{ runner } eq(nil)"
150
- else
151
- "expect(#{ @actual . source } ).#{ runner } (eq(nil), " \
152
- "#{ @fail_message . source } )"
153
- end
157
+ def assertion
158
+ "include(#{ @expected } )"
154
159
end
155
160
end
156
161
157
162
# :nodoc:
158
- class EmptyAssertion
159
- def initialize ( actual , fail_message )
160
- @actual = actual
161
- @fail_message = fail_message
163
+ class NilAssertion < BasicAssertion
164
+ def negated? ( node )
165
+ !node . method? ( :assert_nil )
162
166
end
163
167
164
- def replaced ( node )
165
- runner = node . method? ( :assert_empty ) ? 'to' : 'not_to'
166
- if @fail_message . nil?
167
- "expect(#{ @actual . source } ).#{ runner } be_empty"
168
- else
169
- "expect(#{ @actual . source } ).#{ runner } (be_empty, " \
170
- "#{ @fail_message . source } )"
171
- end
168
+ def assertion
169
+ 'eq(nil)'
170
+ end
171
+ end
172
+
173
+ # :nodoc:
174
+ class EmptyAssertion < BasicAssertion
175
+ def negated? ( node )
176
+ !node . method? ( :assert_empty )
177
+ end
178
+
179
+ def assertion
180
+ 'be_empty'
172
181
end
173
182
end
174
183
end
0 commit comments