Skip to content

Commit 07fe200

Browse files
authored
Merge pull request #115 from joshuay03/raise-an-error-for-invalid-ranges
Raise an error when provided an invalid Range, or invalid :minimum and :maximum
2 parents c3d2e04 + a5dfe23 commit 07fe200

File tree

2 files changed

+19
-0
lines changed

2 files changed

+19
-0
lines changed

lib/rails/dom/testing/assertions/selector_assertions/html_selector.rb

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,6 +131,11 @@ def extract_equality_tests(refute)
131131
else
132132
comparisons[:minimum] ||= 1
133133
end
134+
135+
if comparisons[:minimum] && comparisons[:maximum] && comparisons[:minimum] > comparisons[:maximum]
136+
raise ArgumentError, "Range begin or :minimum cannot be greater than Range end or :maximum"
137+
end
138+
134139
comparisons
135140
end
136141
end

test/selector_assertions_test.rb

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,20 @@ def test_assert_select_text_match
223223
end
224224
end
225225

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+
226240
#
227241
# Test assert_not_select.
228242
#

0 commit comments

Comments
 (0)