From bfda05701a23328671a234e006d8803f66a5d0a4 Mon Sep 17 00:00:00 2001 From: Juan Pazmino Date: Fri, 5 May 2017 23:50:34 -0500 Subject: [PATCH] Support even more css selectors --- CHANGELOG.md | 3 +++ lib/jquery/assert_select.rb | 9 +++++++++ test/assert_select_jquery_test.rb | 6 ++++++ 3 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 62e2c3aa..f382ef8a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,6 @@ +- Add possibility to test HTML: all, attribute prefix, attribute contains, + attribute ends with, child, and class selectors + ## 4.3.1 - update jquery to 3.2.1 diff --git a/lib/jquery/assert_select.rb b/lib/jquery/assert_select.rb index 23e1a58f..2dfb23af 100644 --- a/lib/jquery/assert_select.rb +++ b/lib/jquery/assert_select.rb @@ -134,6 +134,15 @@ def escape_id(selector) id = selector.gsub('[', '\[') id.gsub!(']', '\]') + id.gsub!('*', '\*') + id.gsub!('(', '\(') + id.gsub!(')', '\)') + id.gsub!('.', '\.') + id.gsub!('|', '\|') + id.gsub!('^', '\^') + id.gsub!('$', '\$') + id.gsub!('+', "\\\\+") + id.gsub!(',', '\,') id end diff --git a/test/assert_select_jquery_test.rb b/test/assert_select_jquery_test.rb index 4ac60bb9..e3927d72 100644 --- a/test/assert_select_jquery_test.rb +++ b/test/assert_select_jquery_test.rb @@ -14,6 +14,9 @@ class AssertSelectJQueryTest < ActiveSupport::TestCase $('#id').remove(); jQuery("#id").hide(); $("[data-placeholder~=name]").remove(); + $("#cart tr:not(.total_line) > *").remove(); + $("[href|=\"val\"][href$=\"val\"][href^=\"val\"]").remove(); + $("tr + td, li").remove(); JS setup do @@ -30,6 +33,9 @@ def test_target_as_receiver assert_select 'p', 'something' end assert_select_jquery :remove, "[data-placeholder~=name]" + assert_select_jquery :remove, "#cart tr:not(.total_line) > *" + assert_select_jquery :remove, "[href|=\"val\"][href$=\"val\"][href^=\"val\"]" + assert_select_jquery :remove, "tr + td, li" end assert_raise Minitest::Assertion, "No JQuery call matches [:show, :some_wrong]" do