rails-dom-testing 2.1.1 → 2.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,11 +1,12 @@
1
1
  # encoding: utf-8
2
+ # frozen_string_literal: true
2
3
 
3
- require 'test_helper'
4
- require 'rails/dom/testing/assertions/selector_assertions'
4
+ require "test_helper"
5
5
 
6
6
  class AssertSelectTest < ActiveSupport::TestCase
7
7
  Assertion = Minitest::Assertion
8
8
 
9
+ include DomTestingHelpers
9
10
  include Rails::Dom::Testing::Assertions::SelectorAssertions
10
11
 
11
12
  def assert_failure(message, &block)
@@ -15,23 +16,23 @@ class AssertSelectTest < ActiveSupport::TestCase
15
16
  end
16
17
 
17
18
  #
18
- # Test assert select.
19
+ # Test assert_select.
19
20
  #
20
21
 
21
22
  def test_assert_select
22
- render_html %Q{<div id="1"></div><div id="2"></div>}
23
+ render_html '<div id="1"></div><div id="2"></div>'
23
24
  assert_select "div", 2
24
- assert_failure(/Expected at least 1 element matching \"p\", found 0/) { assert_select "p" }
25
+ assert_failure(/Expected at least 1 element matching "p", found 0/) { assert_select "p" }
25
26
  end
26
27
 
27
28
  def test_equality_integer
28
- render_html %Q{<div id="1"></div><div id="2"></div>}
29
- assert_failure(/Expected exactly 3 elements matching \"div\", found 2/) { assert_select "div", 3 }
30
- assert_failure(/Expected exactly 0 elements matching \"div\", found 2/) { assert_select "div", 0 }
29
+ render_html '<div id="1"></div><div id="2"></div>'
30
+ assert_failure(/Expected exactly 3 elements matching "div", found 2/) { assert_select "div", 3 }
31
+ assert_failure(/Expected exactly 0 elements matching "div", found 2/) { assert_select "div", 0 }
31
32
  end
32
33
 
33
34
  def test_equality_true_false
34
- render_html %Q{<div id="1"></div><div id="2"></div>}
35
+ render_html '<div id="1"></div><div id="2"></div>'
35
36
  assert_nothing_raised { assert_select "div" }
36
37
  assert_raise(Assertion) { assert_select "p" }
37
38
  assert_nothing_raised { assert_select "div", true }
@@ -49,21 +50,21 @@ class AssertSelectTest < ActiveSupport::TestCase
49
50
  end
50
51
 
51
52
  def test_equality_false_message
52
- render_html %Q{<div id="1"></div><div id="2"></div>}
53
- assert_failure(/Expected exactly 0 elements matching \"div\", found 2/) { assert_select "div", false }
53
+ render_html '<div id="1"></div><div id="2"></div>'
54
+ assert_failure(/Expected exactly 0 elements matching "div", found 2/) { assert_select "div", false }
54
55
  end
55
56
 
56
57
  def test_equality_string_and_regexp
57
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
58
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
58
59
  assert_nothing_raised { assert_select "div", "foo" }
59
60
  assert_raise(Assertion) { assert_select "div", "bar" }
60
- assert_nothing_raised { assert_select "div", :text=>"foo" }
61
- assert_raise(Assertion) { assert_select "div", :text=>"bar" }
61
+ assert_nothing_raised { assert_select "div", text: "foo" }
62
+ assert_raise(Assertion) { assert_select "div", text: "bar" }
62
63
  assert_nothing_raised { assert_select "div", /(foo|bar)/ }
63
64
  assert_raise(Assertion) { assert_select "div", /foobar/ }
64
- assert_nothing_raised { assert_select "div", :text=>/(foo|bar)/ }
65
- assert_raise(Assertion) { assert_select "div", :text=>/foobar/ }
66
- assert_raise(Assertion) { assert_select "p", :text=>/foobar/ }
65
+ assert_nothing_raised { assert_select "div", text: /(foo|bar)/ }
66
+ assert_raise(Assertion) { assert_select "div", text: /foobar/ }
67
+ assert_raise(Assertion) { assert_select "p", text: /foobar/ }
67
68
  end
68
69
 
69
70
  def test_equality_of_html
@@ -72,57 +73,70 @@ class AssertSelectTest < ActiveSupport::TestCase
72
73
  html = "<em>\"This is <strong>not</strong> a big problem,\"</em> he said."
73
74
  assert_nothing_raised { assert_select "p", text }
74
75
  assert_raise(Assertion) { assert_select "p", html }
75
- assert_nothing_raised { assert_select "p", :html=>html }
76
- assert_raise(Assertion) { assert_select "p", :html=>text }
76
+ assert_nothing_raised { assert_select "p", html: html }
77
+ assert_raise(Assertion) { assert_select "p", html: text }
77
78
  # No stripping for pre.
78
79
  render_html %Q{<pre>\n<em>"This is <strong>not</strong> a big problem,"</em> he said.\n</pre>}
79
80
  text = "\n\"This is not a big problem,\" he said.\n"
80
81
  html = "\n<em>\"This is <strong>not</strong> a big problem,\"</em> he said.\n"
81
82
  assert_nothing_raised { assert_select "pre", text }
82
83
  assert_raise(Assertion) { assert_select "pre", html }
83
- assert_nothing_raised { assert_select "pre", :html=>html }
84
- assert_raise(Assertion) { assert_select "pre", :html=>text }
84
+ assert_nothing_raised { assert_select "pre", html: html }
85
+ assert_raise(Assertion) { assert_select "pre", html: text }
85
86
  end
86
87
 
87
88
  def test_strip_textarea
88
- render_html %Q{<textarea>\n\nfoo\n</textarea>}
89
+ render_html "<textarea>\n\nfoo\n</textarea>"
89
90
  assert_select "textarea", "\nfoo\n"
90
- render_html %Q{<textarea>\nfoo</textarea>}
91
+ render_html "<textarea>\nfoo</textarea>"
91
92
  assert_select "textarea", "foo"
92
93
  end
93
94
 
94
95
  def test_counts
95
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
96
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
96
97
  assert_nothing_raised { assert_select "div", 2 }
97
- assert_failure(/Expected exactly 3 elements matching \"div\", found 2/) do
98
+ assert_failure(/Expected exactly 3 elements matching "div", found 2/) do
98
99
  assert_select "div", 3
99
100
  end
100
101
  assert_nothing_raised { assert_select "div", 1..2 }
101
- assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
102
+ assert_failure(/Expected between 3 and 4 elements matching "div", found 2/) do
102
103
  assert_select "div", 3..4
103
104
  end
104
- assert_nothing_raised { assert_select "div", :count=>2 }
105
- assert_failure(/Expected exactly 3 elements matching \"div\", found 2/) do
106
- assert_select "div", :count=>3
105
+ assert_nothing_raised { assert_select "div", count: 2 }
106
+ assert_failure(/Expected exactly 3 elements matching "div", found 2/) do
107
+ assert_select "div", count: 3
107
108
  end
108
- assert_nothing_raised { assert_select "div", :minimum=>1 }
109
- assert_nothing_raised { assert_select "div", :minimum=>2 }
110
- assert_failure(/Expected at least 3 elements matching \"div\", found 2/) do
111
- assert_select "div", :minimum=>3
109
+ assert_nothing_raised { assert_select "div", minimum: 1 }
110
+ assert_nothing_raised { assert_select "div", minimum: 2 }
111
+ assert_failure(/Expected at least 3 elements matching "div", found 2/) do
112
+ assert_select "div", minimum: 3
112
113
  end
113
- assert_nothing_raised { assert_select "div", :maximum=>2 }
114
- assert_nothing_raised { assert_select "div", :maximum=>3 }
115
- assert_failure(/Expected at most 1 element matching \"div\", found 2/) do
116
- assert_select "div", :maximum=>1
114
+ assert_nothing_raised { assert_select "div", maximum: 2 }
115
+ assert_nothing_raised { assert_select "div", maximum: 3 }
116
+ assert_failure(/Expected at most 1 element matching "div", found 2/) do
117
+ assert_select "div", maximum: 1
117
118
  end
118
- assert_nothing_raised { assert_select "div", :minimum=>1, :maximum=>2 }
119
- assert_failure(/Expected between 3 and 4 elements matching \"div\", found 2/) do
120
- assert_select "div", :minimum=>3, :maximum=>4
119
+ assert_nothing_raised { assert_select "div", minimum: 1, maximum: 2 }
120
+ assert_failure(/Expected between 3 and 4 elements matching "div", found 2/) do
121
+ assert_select "div", minimum: 3, maximum: 4
121
122
  end
122
123
  end
123
124
 
125
+ def test_zero_counts_with_block
126
+ render_html "<div>foo</div>"
127
+
128
+ errors = [
129
+ assert_raises(ArgumentError) { assert_select("p", false) { nil } },
130
+ assert_raises(ArgumentError) { assert_select("p", 0) { nil } },
131
+ assert_raises(ArgumentError) { assert_select("p", count: 0) { nil } },
132
+ assert_raises(ArgumentError) { assert_select("p", 0..0) { nil } },
133
+ assert_raises(ArgumentError) { assert_select("p", minimum: 0, maximum: 0) { nil } }
134
+ ]
135
+ assert_equal ["Cannot be called with a block when asserting that a selector does not match"], errors.map(&:message).uniq
136
+ end
137
+
124
138
  def test_substitution_values
125
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
139
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
126
140
  assert_select "div:match('id', ?)", /\d+/ do |elements|
127
141
  assert_equal 2, elements.size
128
142
  end
@@ -135,13 +149,18 @@ class AssertSelectTest < ActiveSupport::TestCase
135
149
  end
136
150
  end
137
151
 
152
+ def test_substitution_value_with_quotes
153
+ render_html '<input placeholder="placeholder with &quot;quotes&quot;" />'
154
+ assert_select "input[placeholder=?]", 'placeholder with "quotes"'
155
+ end
156
+
138
157
  def test_multiple_substitution_values
139
158
  render_html '<input name="foo[12]" value="34">'
140
159
  assert_select ":match('name', ?):match('value', ?)", /\w+\[\d+\]/, /\d+/
141
160
  end
142
161
 
143
162
  def test_substitution_values_with_values_other_than_string_or_regexp
144
- render_html %Q{<div id="id_string">symbol</div><div id="1">numeric</div>}
163
+ render_html '<div id="id_string">symbol</div><div id="1">numeric</div>'
145
164
  assert_select "div:match('id', ?)", :id_string do |elements|
146
165
  assert_equal 1, elements.size
147
166
  end
@@ -151,19 +170,19 @@ class AssertSelectTest < ActiveSupport::TestCase
151
170
  end
152
171
 
153
172
  def test_assert_select_root_html
154
- render_html '<a></a>'
173
+ render_html "<a></a>"
155
174
 
156
- assert_select 'a'
175
+ assert_select "a"
157
176
  end
158
177
 
159
178
  def test_assert_select_root_xml
160
179
  render_xml '<rss version="2.0"></rss>'
161
180
 
162
- assert_select 'rss'
181
+ assert_select "rss"
163
182
  end
164
183
 
165
184
  def test_nested_assert_select
166
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
185
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
167
186
  assert_select "div" do |elements|
168
187
  assert_equal 2, elements.size
169
188
  assert_select elements, "#1"
@@ -181,7 +200,7 @@ class AssertSelectTest < ActiveSupport::TestCase
181
200
  end
182
201
  end
183
202
 
184
- assert_failure(/Expected at least 1 element matching \"#4\", found 0\./) do
203
+ assert_failure(/Expected at least 1 element matching "#4", found 0\./) do
185
204
  assert_select "div" do
186
205
  assert_select "#4"
187
206
  end
@@ -189,19 +208,128 @@ class AssertSelectTest < ActiveSupport::TestCase
189
208
  end
190
209
 
191
210
  def test_assert_select_text_match
192
- render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
211
+ render_html '<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>'
193
212
  assert_select "div" do
194
213
  assert_nothing_raised { assert_select "div", "foo" }
195
214
  assert_nothing_raised { assert_select "div", "bar" }
196
215
  assert_nothing_raised { assert_select "div", /\w*/ }
197
- assert_nothing_raised { assert_select "div", :text => /\w*/, :count=>2 }
198
- assert_raise(Assertion) { assert_select "div", :text=>"foo", :count=>2 }
199
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
200
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
201
- assert_nothing_raised { assert_select "div", :html=>/\w*/ }
202
- assert_nothing_raised { assert_select "div", :html=>/\w*/, :count=>2 }
203
- assert_raise(Assertion) { assert_select "div", :html=>"<span>foo</span>", :count=>2 }
216
+ assert_nothing_raised { assert_select "div", text: /\w*/, count: 2 }
217
+ assert_raise(Assertion) { assert_select "div", text: "foo", count: 2 }
218
+ assert_nothing_raised { assert_select "div", html: "<span>bar</span>" }
219
+ assert_nothing_raised { assert_select "div", html: "<span>bar</span>" }
220
+ assert_nothing_raised { assert_select "div", html: /\w*/ }
221
+ assert_nothing_raised { assert_select "div", html: /\w*/, count: 2 }
222
+ assert_raise(Assertion) { assert_select "div", html: "<span>foo</span>", count: 2 }
223
+ end
224
+ end
225
+
226
+ def test_assert_select_with_invalid_range
227
+ render_html "<div>foo</div>"
228
+ error = assert_raises(ArgumentError) { assert_select("div", 2..1) { nil } }
229
+ assert_equal "Range begin or :minimum cannot be greater than Range end or :maximum", error.message
230
+ end
231
+
232
+ def test_assert_select_with_invalid_minimum_and_maximum
233
+ render_html "<div>foo</div>"
234
+ error = assert_raises(ArgumentError) { assert_select("div", maximum: 0) { nil } }
235
+ assert_equal "Range begin or :minimum cannot be greater than Range end or :maximum", error.message
236
+ error = assert_raises(ArgumentError) { assert_select("div", minimum: 2, maximum: 1) { nil } }
237
+ assert_equal "Range begin or :minimum cannot be greater than Range end or :maximum", error.message
238
+ end
239
+
240
+ def test_assert_select_text_equality_collapses_whitespace
241
+ render_html "<p>Some\n line-broken\n text</p>"
242
+
243
+ assert_nothing_raised do
244
+ assert_select "p", {
245
+ text: "Some line-broken text",
246
+ }, "Whitespace was not collapsed from text"
204
247
  end
248
+
249
+ render_html "<p>Some<br><br>line-broken<br><br>text</p>"
250
+
251
+ assert_nothing_raised do
252
+ assert_select "p", {
253
+ text: "Someline-brokentext",
254
+ }, "<br> was not removed from text"
255
+ end
256
+ end
257
+
258
+ def test_assert_select_html_equality_respects_whitespace
259
+ render_html "<p>Some\n line-broken\n text</p>"
260
+
261
+ assert_nothing_raised do
262
+ assert_select "p", {
263
+ html: "Some\n line-broken\n text",
264
+ }, "Whitespace was collapsed from html"
265
+ end
266
+
267
+ render_html "<p>Some<br><br>line-broken<br><br>text</p>"
268
+
269
+ assert_nothing_raised do
270
+ assert_select "p", {
271
+ html: "Some<br><br>line-broken<br><br>text",
272
+ }, "<br> was removed from html"
273
+ end
274
+ end
275
+
276
+ #
277
+ # Test assert_not_select.
278
+ #
279
+
280
+ def test_assert_not_select
281
+ render_html '<div id="1"></div>'
282
+ assert_not_select "p"
283
+ assert_failure(/Expected exactly 0 elements matching "div", found 1/) { assert_not_select "div" }
284
+ assert_failure(/Expected exactly 0 elements matching "div#1", found 1/) { assert_not_select "div#1" }
285
+ end
286
+
287
+ def test_assert_not_select_with_true
288
+ render_html '<div id="1"></div>'
289
+ error = assert_raises(ArgumentError) { assert_not_select "div", true }
290
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
291
+ end
292
+
293
+ def test_assert_not_select_with_false
294
+ render_html '<div id="1"></div>'
295
+ error = assert_raises(ArgumentError) { assert_not_select "div", false }
296
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
297
+ end
298
+
299
+ def test_assert_not_select_with_integer
300
+ render_html '<div id="1"></div>'
301
+ error = assert_raises(ArgumentError) { assert_not_select "div", 1 }
302
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
303
+ end
304
+
305
+ def test_assert_not_select_with_range
306
+ render_html '<div id="1"></div>'
307
+ error = assert_raises(ArgumentError) { assert_not_select "div", 1..5 }
308
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
309
+ end
310
+
311
+ def test_assert_not_select_with_count
312
+ render_html '<div id="1"></div>'
313
+ error = assert_raises(ArgumentError) { assert_not_select "div", count: 1 }
314
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
315
+ end
316
+
317
+ def test_assert_not_select_with_minimum
318
+ render_html '<div id="1"></div>'
319
+ error = assert_raises(ArgumentError) { assert_not_select "div", minimum: 1 }
320
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
321
+ end
322
+
323
+ def test_assert_not_select_with_maximum
324
+ render_html '<div id="1"></div>'
325
+ error = assert_raises(ArgumentError) { assert_not_select "div", maximum: 1 }
326
+ assert_equal "Cannot use true, false, Integer, Range, :count, :minimum and :maximum when asserting that a selector does not match", error.message
327
+ end
328
+
329
+ def test_assert_not_select_with_block
330
+ render_html "<div>foo</div>"
331
+ error = assert_raises(ArgumentError) { assert_not_select("p") { nil } }
332
+ assert_equal "Cannot be called with a block when asserting that a selector does not match", error.message
205
333
  end
206
334
 
207
335
  #
@@ -209,13 +337,13 @@ class AssertSelectTest < ActiveSupport::TestCase
209
337
  #
210
338
 
211
339
  def test_css_select
212
- render_html %Q{<div id="1"></div><div id="2"></div>}
340
+ render_html '<div id="1"></div><div id="2"></div>'
213
341
  assert_equal 2, css_select("div").size
214
342
  assert_equal 0, css_select("p").size
215
343
  end
216
344
 
217
345
  def test_nested_css_select
218
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
346
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
219
347
  assert_select "div:match('id', ?)", /\d+/ do |elements|
220
348
  assert_equal 1, css_select(elements[0], "div").size
221
349
  assert_equal 1, css_select(elements[1], "div").size
@@ -224,10 +352,10 @@ class AssertSelectTest < ActiveSupport::TestCase
224
352
  assert_equal 2, css_select("div").size
225
353
  css_select("div").each do |element|
226
354
  # Testing as a group is one thing
227
- assert !css_select("#1,#2").empty?
355
+ assert_not css_select("#1,#2").empty?
228
356
  # Testing individually is another
229
- assert !css_select("#1").empty?
230
- assert !css_select("#2").empty?
357
+ assert_not css_select("#1").empty?
358
+ assert_not css_select("#2").empty?
231
359
  end
232
360
  end
233
361
  end
@@ -248,13 +376,13 @@ class AssertSelectTest < ActiveSupport::TestCase
248
376
  end
249
377
 
250
378
  def test_nested_assert_select_with_match_failure_shows_nice_regex
251
- render_html %Q{<div id="1">foo</div>}
379
+ render_html '<div id="1">foo</div>'
252
380
 
253
381
  error = assert_raises Minitest::Assertion do
254
382
  assert_select "div:match('id', ?)", /wups/
255
383
  end
256
384
 
257
- assert_match %Q{div:match('id', /wups/)}, error.message
385
+ assert_match "div:match('id', /wups/)", error.message
258
386
  end
259
387
 
260
388
  def test_feed_item_encoded
@@ -275,12 +403,11 @@ class AssertSelectTest < ActiveSupport::TestCase
275
403
  </item>
276
404
  </channel>
277
405
  </rss>
278
- EOF
406
+ EOF
279
407
 
280
408
  assert_select "channel item description" do
281
-
282
409
  assert_select_encoded do
283
- assert_select "p", :count=>2, :text=>/Test/
410
+ assert_select "p", count: 2, text: /Test/
284
411
  end
285
412
 
286
413
  # Test individually.
@@ -302,23 +429,69 @@ EOF
302
429
  end
303
430
  end
304
431
 
432
+ def test_feed_item_encoded_with_html_version
433
+ # https://html.spec.whatwg.org/multipage/parsing.html#an-introduction-to-error-handling-and-strange-cases-in-the-parser
434
+ # we use these results to assert that we're invoking the expected parser.
435
+ input = CGI.escapeHTML("<p>1<b>2<i>3</b>4</i>5</p>")
436
+ html4_result = jruby? ? "<p>1<b>2<i>3</i></b><i>4</i>5</p>" : "<p>1<b>2<i>3</i></b>45</p>"
437
+ html5_result = jruby? ? nil : "<p>1<b>2<i>3</i></b><i>4</i>5</p>"
438
+
439
+ render_xml(<<~XML)
440
+ <root>
441
+ <contents>#{input}</contents>
442
+ </root>
443
+ XML
444
+
445
+ with_default_html_version(:html4) do
446
+ assert_select "root contents" do
447
+ assert_select_encoded do |contents|
448
+ assert_equal(html4_result, contents.to_html)
449
+ end
450
+
451
+ assert_select_encoded(html_version: :html4) do |contents|
452
+ assert_equal(html4_result, contents.to_html)
453
+ end
454
+
455
+ assert_select_encoded(html_version: :html5) do |contents|
456
+ assert_equal(html5_result, contents.to_html)
457
+ end if Rails::Dom::Testing.html5_support?
458
+ end
459
+ end
460
+
461
+ with_default_html_version(:html5) do
462
+ assert_select "root contents" do
463
+ assert_select_encoded do |contents|
464
+ assert_equal(html5_result, contents.to_html)
465
+ end if Rails::Dom::Testing.html5_support?
466
+
467
+ assert_select_encoded(html_version: :html4) do |contents|
468
+ assert_equal(html4_result, contents.to_html)
469
+ end
470
+
471
+ assert_select_encoded(html_version: :html5) do |contents|
472
+ assert_equal(html5_result, contents.to_html)
473
+ end if Rails::Dom::Testing.html5_support?
474
+ end
475
+ end
476
+ end
477
+
305
478
  def test_body_not_present_in_empty_document
306
- render_html '<div></div>'
307
- assert_select 'body', 0
479
+ render_html "<div></div>"
480
+ assert_select "body", 0
308
481
  end
309
482
 
310
483
  def test_body_class_can_be_tested
311
484
  render_html '<body class="foo"></body>'
312
- assert_select '.foo'
485
+ assert_select ".foo"
313
486
  end
314
487
 
315
488
  def test_body_class_can_be_tested_with_html
316
489
  render_html '<html><body class="foo"><div></div></body></html>'
317
- assert_select '.foo'
490
+ assert_select ".foo"
318
491
  end
319
492
 
320
493
  def test_assert_select_with_extra_argument
321
- render_html '<html><head><title>Welcome</title></head><body><div></div></body></html>'
494
+ render_html "<html><head><title>Welcome</title></head><body><div></div></body></html>"
322
495
 
323
496
  assert_raises ArgumentError do
324
497
  assert_select "title", "Welcome", count: 1
@@ -330,7 +503,7 @@ EOF
330
503
  def test_assert_select_on_blank_response
331
504
  render_html ""
332
505
  assert_select "div", 0
333
- assert_failure(/Expected exactly 1 element matching \"div\", found 0./) do
506
+ assert_failure(/Expected exactly 1 element matching "div", found 0./) do
334
507
  assert_select "div", 1
335
508
  end
336
509
  end
@@ -348,7 +521,7 @@ EOF
348
521
  @html_document = if content_type == :xml
349
522
  Nokogiri::XML::Document.parse(content)
350
523
  else
351
- Nokogiri::HTML::Document.parse(content)
524
+ Rails::Dom::Testing.html_document.parse(content)
352
525
  end
353
526
  end
354
527
 
data/test/test_helper.rb CHANGED
@@ -1,6 +1,23 @@
1
- require 'nokogiri'
2
- require 'active_support'
3
- require 'active_support/test_case'
4
- require 'minitest/autorun'
1
+ # frozen_string_literal: true
2
+
3
+ require "rails-dom-testing"
4
+ require "active_support/test_case"
5
+ require "minitest/autorun"
5
6
 
6
7
  ActiveSupport::TestCase.test_order = :random
8
+
9
+ module DomTestingHelpers
10
+ def jruby?
11
+ !! Nokogiri.jruby?
12
+ end
13
+
14
+ def with_default_html_version(version)
15
+ old_version = Rails::Dom::Testing.default_html_version
16
+ begin
17
+ Rails::Dom::Testing.default_html_version = version
18
+ yield
19
+ ensure
20
+ Rails::Dom::Testing.default_html_version = old_version
21
+ end
22
+ end
23
+ end
metadata CHANGED
@@ -1,30 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-dom-testing
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Mendonça França
8
8
  - Kasper Timm Hansen
9
- autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2023-06-30 00:00:00.000000000 Z
11
+ date: 1980-01-02 00:00:00.000000000 Z
13
12
  dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: nokogiri
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '1.6'
21
- type: :runtime
22
- prerelease: false
23
- version_requirements: !ruby/object:Gem::Requirement
24
- requirements:
25
- - - ">="
26
- - !ruby/object:Gem::Version
27
- version: '1.6'
28
13
  - !ruby/object:Gem::Dependency
29
14
  name: activesupport
30
15
  requirement: !ruby/object:Gem::Requirement
@@ -54,19 +39,19 @@ dependencies:
54
39
  - !ruby/object:Gem::Version
55
40
  version: '0'
56
41
  - !ruby/object:Gem::Dependency
57
- name: bundler
42
+ name: nokogiri
58
43
  requirement: !ruby/object:Gem::Requirement
59
44
  requirements:
60
45
  - - ">="
61
46
  - !ruby/object:Gem::Version
62
- version: '1.3'
63
- type: :development
47
+ version: '1.6'
48
+ type: :runtime
64
49
  prerelease: false
65
50
  version_requirements: !ruby/object:Gem::Requirement
66
51
  requirements:
67
52
  - - ">="
68
53
  - !ruby/object:Gem::Version
69
- version: '1.3'
54
+ version: '1.6'
70
55
  - !ruby/object:Gem::Dependency
71
56
  name: rake
72
57
  requirement: !ruby/object:Gem::Requirement
@@ -81,22 +66,8 @@ dependencies:
81
66
  - - ">="
82
67
  - !ruby/object:Gem::Version
83
68
  version: '0'
84
- - !ruby/object:Gem::Dependency
85
- name: minitest
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- description: " This gem can compare doms and assert certain elements exists in doms
99
- using Nokogiri. "
69
+ description: This gem can compare doms and assert certain elements exists in doms
70
+ using Nokogiri.
100
71
  email:
101
72
  - rafaelmfranca@gmail.com
102
73
  - kaspth@gmail.com
@@ -107,21 +78,22 @@ files:
107
78
  - MIT-LICENSE
108
79
  - README.md
109
80
  - lib/rails-dom-testing.rb
81
+ - lib/rails/dom/testing.rb
110
82
  - lib/rails/dom/testing/assertions.rb
111
83
  - lib/rails/dom/testing/assertions/dom_assertions.rb
112
84
  - lib/rails/dom/testing/assertions/selector_assertions.rb
113
- - lib/rails/dom/testing/assertions/selector_assertions/count_describable.rb
114
85
  - lib/rails/dom/testing/assertions/selector_assertions/html_selector.rb
115
86
  - lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb
87
+ - lib/rails/dom/testing/railtie.rb
116
88
  - lib/rails/dom/testing/version.rb
117
89
  - test/dom_assertions_test.rb
90
+ - test/parser_selection_test.rb
118
91
  - test/selector_assertions_test.rb
119
92
  - test/test_helper.rb
120
93
  homepage: https://github.com/rails/rails-dom-testing
121
94
  licenses:
122
95
  - MIT
123
96
  metadata: {}
124
- post_install_message:
125
97
  rdoc_options: []
126
98
  require_paths:
127
99
  - lib
@@ -129,18 +101,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
101
  requirements:
130
102
  - - ">="
131
103
  - !ruby/object:Gem::Version
132
- version: '0'
104
+ version: 2.5.0
133
105
  required_rubygems_version: !ruby/object:Gem::Requirement
134
106
  requirements:
135
107
  - - ">="
136
108
  - !ruby/object:Gem::Version
137
109
  version: '0'
138
110
  requirements: []
139
- rubygems_version: 3.4.10
140
- signing_key:
111
+ rubygems_version: 3.6.7
141
112
  specification_version: 4
142
113
  summary: Dom and Selector assertions for Rails applications
143
114
  test_files:
144
115
  - test/dom_assertions_test.rb
116
+ - test/parser_selection_test.rb
145
117
  - test/selector_assertions_test.rb
146
118
  - test/test_helper.rb