rails-dom-testing 2.0.3 → 2.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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)
@@ -19,19 +20,19 @@ class AssertSelectTest < ActiveSupport::TestCase
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,57 @@ 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
 
124
125
  def test_substitution_values
125
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
126
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
126
127
  assert_select "div:match('id', ?)", /\d+/ do |elements|
127
128
  assert_equal 2, elements.size
128
129
  end
@@ -135,20 +136,40 @@ class AssertSelectTest < ActiveSupport::TestCase
135
136
  end
136
137
  end
137
138
 
139
+ def test_substitution_value_with_quotes
140
+ render_html '<input placeholder="placeholder with &quot;quotes&quot;" />'
141
+ assert_select "input[placeholder=?]", 'placeholder with "quotes"'
142
+ end
143
+
144
+ def test_multiple_substitution_values
145
+ render_html '<input name="foo[12]" value="34">'
146
+ assert_select ":match('name', ?):match('value', ?)", /\w+\[\d+\]/, /\d+/
147
+ end
148
+
149
+ def test_substitution_values_with_values_other_than_string_or_regexp
150
+ render_html '<div id="id_string">symbol</div><div id="1">numeric</div>'
151
+ assert_select "div:match('id', ?)", :id_string do |elements|
152
+ assert_equal 1, elements.size
153
+ end
154
+ assert_select "div:match('id', ?)", 1 do |elements|
155
+ assert_equal 1, elements.size
156
+ end
157
+ end
158
+
138
159
  def test_assert_select_root_html
139
- render_html '<a></a>'
160
+ render_html "<a></a>"
140
161
 
141
- assert_select 'a'
162
+ assert_select "a"
142
163
  end
143
164
 
144
165
  def test_assert_select_root_xml
145
166
  render_xml '<rss version="2.0"></rss>'
146
167
 
147
- assert_select 'rss'
168
+ assert_select "rss"
148
169
  end
149
170
 
150
171
  def test_nested_assert_select
151
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
172
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
152
173
  assert_select "div" do |elements|
153
174
  assert_equal 2, elements.size
154
175
  assert_select elements, "#1"
@@ -166,7 +187,7 @@ class AssertSelectTest < ActiveSupport::TestCase
166
187
  end
167
188
  end
168
189
 
169
- assert_failure(/Expected at least 1 element matching \"#4\", found 0\./) do
190
+ assert_failure(/Expected at least 1 element matching "#4", found 0\./) do
170
191
  assert_select "div" do
171
192
  assert_select "#4"
172
193
  end
@@ -174,18 +195,18 @@ class AssertSelectTest < ActiveSupport::TestCase
174
195
  end
175
196
 
176
197
  def test_assert_select_text_match
177
- render_html %Q{<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>}
198
+ render_html '<div id="1"><span>foo</span></div><div id="2"><span>bar</span></div>'
178
199
  assert_select "div" do
179
200
  assert_nothing_raised { assert_select "div", "foo" }
180
201
  assert_nothing_raised { assert_select "div", "bar" }
181
202
  assert_nothing_raised { assert_select "div", /\w*/ }
182
- assert_nothing_raised { assert_select "div", :text => /\w*/, :count=>2 }
183
- assert_raise(Assertion) { assert_select "div", :text=>"foo", :count=>2 }
184
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
185
- assert_nothing_raised { assert_select "div", :html=>"<span>bar</span>" }
186
- assert_nothing_raised { assert_select "div", :html=>/\w*/ }
187
- assert_nothing_raised { assert_select "div", :html=>/\w*/, :count=>2 }
188
- assert_raise(Assertion) { assert_select "div", :html=>"<span>foo</span>", :count=>2 }
203
+ assert_nothing_raised { assert_select "div", text: /\w*/, count: 2 }
204
+ assert_raise(Assertion) { assert_select "div", text: "foo", count: 2 }
205
+ assert_nothing_raised { assert_select "div", html: "<span>bar</span>" }
206
+ assert_nothing_raised { assert_select "div", html: "<span>bar</span>" }
207
+ assert_nothing_raised { assert_select "div", html: /\w*/ }
208
+ assert_nothing_raised { assert_select "div", html: /\w*/, count: 2 }
209
+ assert_raise(Assertion) { assert_select "div", html: "<span>foo</span>", count: 2 }
189
210
  end
190
211
  end
191
212
 
@@ -194,13 +215,13 @@ class AssertSelectTest < ActiveSupport::TestCase
194
215
  #
195
216
 
196
217
  def test_css_select
197
- render_html %Q{<div id="1"></div><div id="2"></div>}
218
+ render_html '<div id="1"></div><div id="2"></div>'
198
219
  assert_equal 2, css_select("div").size
199
220
  assert_equal 0, css_select("p").size
200
221
  end
201
222
 
202
223
  def test_nested_css_select
203
- render_html %Q{<div id="1">foo</div><div id="2">foo</div>}
224
+ render_html '<div id="1">foo</div><div id="2">foo</div>'
204
225
  assert_select "div:match('id', ?)", /\d+/ do |elements|
205
226
  assert_equal 1, css_select(elements[0], "div").size
206
227
  assert_equal 1, css_select(elements[1], "div").size
@@ -209,10 +230,10 @@ class AssertSelectTest < ActiveSupport::TestCase
209
230
  assert_equal 2, css_select("div").size
210
231
  css_select("div").each do |element|
211
232
  # Testing as a group is one thing
212
- assert !css_select("#1,#2").empty?
233
+ assert_not css_select("#1,#2").empty?
213
234
  # Testing individually is another
214
- assert !css_select("#1").empty?
215
- assert !css_select("#2").empty?
235
+ assert_not css_select("#1").empty?
236
+ assert_not css_select("#2").empty?
216
237
  end
217
238
  end
218
239
  end
@@ -233,13 +254,13 @@ class AssertSelectTest < ActiveSupport::TestCase
233
254
  end
234
255
 
235
256
  def test_nested_assert_select_with_match_failure_shows_nice_regex
236
- render_html %Q{<div id="1">foo</div>}
257
+ render_html '<div id="1">foo</div>'
237
258
 
238
259
  error = assert_raises Minitest::Assertion do
239
260
  assert_select "div:match('id', ?)", /wups/
240
261
  end
241
262
 
242
- assert_match %Q{div:match('id', /wups/)}, error.message
263
+ assert_match "div:match('id', /wups/)", error.message
243
264
  end
244
265
 
245
266
  def test_feed_item_encoded
@@ -260,12 +281,11 @@ class AssertSelectTest < ActiveSupport::TestCase
260
281
  </item>
261
282
  </channel>
262
283
  </rss>
263
- EOF
284
+ EOF
264
285
 
265
286
  assert_select "channel item description" do
266
-
267
287
  assert_select_encoded do
268
- assert_select "p", :count=>2, :text=>/Test/
288
+ assert_select "p", count: 2, text: /Test/
269
289
  end
270
290
 
271
291
  # Test individually.
@@ -287,19 +307,83 @@ EOF
287
307
  end
288
308
  end
289
309
 
310
+ def test_feed_item_encoded_with_html_version
311
+ # https://html.spec.whatwg.org/multipage/parsing.html#an-introduction-to-error-handling-and-strange-cases-in-the-parser
312
+ # we use these results to assert that we're invoking the expected parser.
313
+ input = CGI.escapeHTML("<p>1<b>2<i>3</b>4</i>5</p>")
314
+ 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>"
315
+ html5_result = jruby? ? nil : "<p>1<b>2<i>3</i></b><i>4</i>5</p>"
316
+
317
+ render_xml(<<~XML)
318
+ <root>
319
+ <contents>#{input}</contents>
320
+ </root>
321
+ XML
322
+
323
+ with_default_html_version(:html4) do
324
+ assert_select "root contents" do
325
+ assert_select_encoded do |contents|
326
+ assert_equal(html4_result, contents.to_html)
327
+ end
328
+
329
+ assert_select_encoded(html_version: :html4) do |contents|
330
+ assert_equal(html4_result, contents.to_html)
331
+ end
332
+
333
+ assert_select_encoded(html_version: :html5) do |contents|
334
+ assert_equal(html5_result, contents.to_html)
335
+ end if Rails::Dom::Testing.html5_support?
336
+ end
337
+ end
338
+
339
+ with_default_html_version(:html5) do
340
+ assert_select "root contents" do
341
+ assert_select_encoded do |contents|
342
+ assert_equal(html5_result, contents.to_html)
343
+ end if Rails::Dom::Testing.html5_support?
344
+
345
+ assert_select_encoded(html_version: :html4) do |contents|
346
+ assert_equal(html4_result, contents.to_html)
347
+ end
348
+
349
+ assert_select_encoded(html_version: :html5) do |contents|
350
+ assert_equal(html5_result, contents.to_html)
351
+ end if Rails::Dom::Testing.html5_support?
352
+ end
353
+ end
354
+ end
355
+
290
356
  def test_body_not_present_in_empty_document
291
- render_html '<div></div>'
292
- assert_select 'body', 0
357
+ render_html "<div></div>"
358
+ assert_select "body", 0
293
359
  end
294
360
 
295
361
  def test_body_class_can_be_tested
296
362
  render_html '<body class="foo"></body>'
297
- assert_select '.foo'
363
+ assert_select ".foo"
298
364
  end
299
365
 
300
366
  def test_body_class_can_be_tested_with_html
301
367
  render_html '<html><body class="foo"><div></div></body></html>'
302
- assert_select '.foo'
368
+ assert_select ".foo"
369
+ end
370
+
371
+ def test_assert_select_with_extra_argument
372
+ render_html "<html><head><title>Welcome</title></head><body><div></div></body></html>"
373
+
374
+ assert_raises ArgumentError do
375
+ assert_select "title", "Welcome", count: 1
376
+ end
377
+
378
+ assert_select "title", text: "Welcome", count: 1
379
+ end
380
+
381
+ def test_assert_select_on_blank_response
382
+ render_html ""
383
+ assert_select "div", 0
384
+ assert_failure(/Expected exactly 1 element matching "div", found 0./) do
385
+ assert_select "div", 1
386
+ end
303
387
  end
304
388
 
305
389
  protected
@@ -315,7 +399,7 @@ EOF
315
399
  @html_document = if content_type == :xml
316
400
  Nokogiri::XML::Document.parse(content)
317
401
  else
318
- Nokogiri::HTML::Document.parse(content)
402
+ Rails::Dom::Testing.html_document.parse(content)
319
403
  end
320
404
  end
321
405
 
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,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-dom-testing
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.3
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rafael Mendonça França
@@ -9,50 +9,50 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-05-10 00:00:00.000000000 Z
12
+ date: 2023-08-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: nokogiri
15
+ name: activesupport
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: '1.6'
20
+ version: 5.0.0
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
- version: '1.6'
27
+ version: 5.0.0
28
28
  - !ruby/object:Gem::Dependency
29
- name: activesupport
29
+ name: minitest
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
32
  - - ">="
33
33
  - !ruby/object:Gem::Version
34
- version: 4.2.0
34
+ version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
39
  - - ">="
40
40
  - !ruby/object:Gem::Version
41
- version: 4.2.0
41
+ version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
- name: bundler
43
+ name: nokogiri
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
46
  - - ">="
47
47
  - !ruby/object:Gem::Version
48
- version: '1.3'
49
- type: :development
48
+ version: '1.6'
49
+ type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
53
  - - ">="
54
54
  - !ruby/object:Gem::Version
55
- version: '1.3'
55
+ version: '1.6'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: rake
58
58
  requirement: !ruby/object:Gem::Requirement
@@ -67,22 +67,8 @@ dependencies:
67
67
  - - ">="
68
68
  - !ruby/object:Gem::Version
69
69
  version: '0'
70
- - !ruby/object:Gem::Dependency
71
- name: minitest
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: '0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: '0'
84
- description: " This gem can compare doms and assert certain elements exists in doms
85
- using Nokogiri. "
70
+ description: This gem can compare doms and assert certain elements exists in doms
71
+ using Nokogiri.
86
72
  email:
87
73
  - rafaelmfranca@gmail.com
88
74
  - kaspth@gmail.com
@@ -93,14 +79,16 @@ files:
93
79
  - MIT-LICENSE
94
80
  - README.md
95
81
  - lib/rails-dom-testing.rb
82
+ - lib/rails/dom/testing.rb
96
83
  - lib/rails/dom/testing/assertions.rb
97
84
  - lib/rails/dom/testing/assertions/dom_assertions.rb
98
85
  - lib/rails/dom/testing/assertions/selector_assertions.rb
99
- - lib/rails/dom/testing/assertions/selector_assertions/count_describable.rb
100
86
  - lib/rails/dom/testing/assertions/selector_assertions/html_selector.rb
101
87
  - lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb
88
+ - lib/rails/dom/testing/railtie.rb
102
89
  - lib/rails/dom/testing/version.rb
103
90
  - test/dom_assertions_test.rb
91
+ - test/parser_selection_test.rb
104
92
  - test/selector_assertions_test.rb
105
93
  - test/test_helper.rb
106
94
  homepage: https://github.com/rails/rails-dom-testing
@@ -115,19 +103,19 @@ required_ruby_version: !ruby/object:Gem::Requirement
115
103
  requirements:
116
104
  - - ">="
117
105
  - !ruby/object:Gem::Version
118
- version: '0'
106
+ version: 2.5.0
119
107
  required_rubygems_version: !ruby/object:Gem::Requirement
120
108
  requirements:
121
109
  - - ">="
122
110
  - !ruby/object:Gem::Version
123
111
  version: '0'
124
112
  requirements: []
125
- rubyforge_project:
126
- rubygems_version: 2.6.8
113
+ rubygems_version: 3.4.10
127
114
  signing_key:
128
115
  specification_version: 4
129
116
  summary: Dom and Selector assertions for Rails applications
130
117
  test_files:
131
118
  - test/dom_assertions_test.rb
119
+ - test/parser_selection_test.rb
132
120
  - test/selector_assertions_test.rb
133
121
  - test/test_helper.rb
@@ -1,32 +0,0 @@
1
- require 'active_support/concern'
2
-
3
- module Rails
4
- module Dom
5
- module Testing
6
- module Assertions
7
- module SelectorAssertions
8
- module CountDescribable
9
- extend ActiveSupport::Concern
10
-
11
- private
12
- def count_description(min, max, count) #:nodoc:
13
- if min && max && (max != min)
14
- "between #{min} and #{max} elements"
15
- elsif min && max && max == min && count
16
- "exactly #{count} #{pluralize_element(min)}"
17
- elsif min && !(min == 1 && max == 1)
18
- "at least #{min} #{pluralize_element(min)}"
19
- elsif max
20
- "at most #{max} #{pluralize_element(max)}"
21
- end
22
- end
23
-
24
- def pluralize_element(quantity)
25
- quantity == 1 ? 'element' : 'elements'
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end