|
|
|
@ -50,6 +50,8 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
include RenderERBUtils
|
|
|
|
|
|
|
|
|
|
setup :_prepare_context
|
|
|
|
|
setup { ActionView::Helpers::UrlHelper.button_to_generates_button_tag = @button_to_generates_button_tag = true }
|
|
|
|
|
teardown { ActionView::Helpers::UrlHelper.button_to_generates_button_tag = @button_to_generates_button_tag }
|
|
|
|
|
|
|
|
|
|
def hash_for(options = {})
|
|
|
|
|
{ controller: "foo", action: "bar" }.merge!(options)
|
|
|
|
@ -140,7 +142,7 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
def test_button_to_without_protect_against_forgery_method
|
|
|
|
|
self.class.undef_method(:protect_against_forgery?)
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com")
|
|
|
|
|
)
|
|
|
|
|
ensure
|
|
|
|
@ -148,12 +150,12 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_straight_url
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /></form>}, button_to("Hello", "http://www.example.com")
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="button_to"><button type="submit">Hello</button></form>}, button_to("Hello", "http://www.example.com")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_path
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="/article/Hello" class="button_to"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="/article/Hello" class="button_to"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", article_path("Hello"))
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
@ -162,7 +164,7 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
self.request_forgery = true
|
|
|
|
|
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /><input name="form_token" type="hidden" value="secret" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button type="submit">Hello</button><input name="form_token" type="hidden" value="secret" /></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com")
|
|
|
|
|
)
|
|
|
|
|
ensure
|
|
|
|
@ -170,88 +172,92 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_form_class
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="custom-class"><input type="submit" value="Hello" /></form>}, button_to("Hello", "http://www.example.com", form_class: "custom-class")
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="custom-class"><button type="submit">Hello</button></form>}, button_to("Hello", "http://www.example.com", form_class: "custom-class")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_form_class_escapes
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="<script>evil_js</script>"><input type="submit" value="Hello" /></form>}, button_to("Hello", "http://www.example.com", form_class: "<script>evil_js</script>")
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="<script>evil_js</script>"><button type="submit">Hello</button></form>}, button_to("Hello", "http://www.example.com", form_class: "<script>evil_js</script>")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_query
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com/q1=v1&q2=v2" class="button_to"><input type="submit" value="Hello" /></form>}, button_to("Hello", "http://www.example.com/q1=v1&q2=v2")
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com/q1=v1&q2=v2" class="button_to"><button type="submit">Hello</button></form>}, button_to("Hello", "http://www.example.com/q1=v1&q2=v2")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_value
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com" class="button_to"><button type="submit" name="key" value="value">Hello</button></form>}, button_to("Hello", "http://www.example.com", name: "key", value: "value")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_html_safe_URL
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com/q1=v1&q2=v2" class="button_to"><input type="submit" value="Hello" /></form>}, button_to("Hello", raw("http://www.example.com/q1=v1&q2=v2"))
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com/q1=v1&q2=v2" class="button_to"><button type="submit">Hello</button></form>}, button_to("Hello", raw("http://www.example.com/q1=v1&q2=v2"))
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_query_and_no_name
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com?q1=v1&q2=v2" class="button_to"><input type="submit" value="http://www.example.com?q1=v1&q2=v2" /></form>}, button_to(nil, "http://www.example.com?q1=v1&q2=v2")
|
|
|
|
|
assert_dom_equal %{<form method="post" action="http://www.example.com?q1=v1&q2=v2" class="button_to"><button type="submit">http://www.example.com?q1=v1&q2=v2</button></form>}, button_to(nil, "http://www.example.com?q1=v1&q2=v2")
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_javascript_confirm
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input data-confirm="Are you sure?" type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button data-confirm="Are you sure?" type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", data: { confirm: "Are you sure?" })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_javascript_disable_with
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input data-disable-with="Greeting..." type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button data-disable-with="Greeting..." type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", data: { disable_with: "Greeting..." })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_remote_and_form_options
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="custom-class" data-remote="true" data-type="json"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="custom-class" data-remote="true" data-type="json"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", remote: true, form: { class: "custom-class", "data-type" => "json" })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_remote_and_javascript_confirm
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to" data-remote="true"><input data-confirm="Are you sure?" type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to" data-remote="true"><button data-confirm="Are you sure?" type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", remote: true, data: { confirm: "Are you sure?" })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_remote_and_javascript_disable_with
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to" data-remote="true"><input data-disable-with="Greeting..." type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to" data-remote="true"><button data-disable-with="Greeting..." type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", remote: true, data: { disable_with: "Greeting..." })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_remote_false
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", remote: false)
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_enabled_disabled
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", disabled: false)
|
|
|
|
|
)
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input disabled="disabled" type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><button disabled="disabled" type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", disabled: true)
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_method_delete
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="hidden" name="_method" value="delete" /><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="hidden" name="_method" value="delete" /><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", method: :delete)
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_method_get
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="get" action="http://www.example.com" class="button_to"><input type="submit" value="Hello" /></form>},
|
|
|
|
|
%{<form method="get" action="http://www.example.com" class="button_to"><button type="submit">Hello</button></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", method: :get)
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
@ -265,11 +271,23 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_params
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><input type="submit" value="Hello" /><input type="hidden" name="baz" value="quux" /><input type="hidden" name="foo" value="bar" /></form>},
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><button type="submit">Hello</button><input type="hidden" name="baz" value="quux" /><input type="hidden" name="foo" value="bar" /></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", params: { foo: :bar, baz: "quux" })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_generates_input_when_button_to_generates_button_tag_false
|
|
|
|
|
old_value = ActionView::Helpers::UrlHelper.button_to_generates_button_tag
|
|
|
|
|
ActionView::Helpers::UrlHelper.button_to_generates_button_tag = false
|
|
|
|
|
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form method="post" action="http://www.example.com" class="button_to"><input type="submit" value="Save"/></form>},
|
|
|
|
|
button_to("Save", "http://www.example.com")
|
|
|
|
|
)
|
|
|
|
|
ensure
|
|
|
|
|
ActionView::Helpers::UrlHelper.button_to_generates_button_tag = old_value
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
class FakeParams
|
|
|
|
|
def initialize(permitted = true)
|
|
|
|
|
@permitted = permitted
|
|
|
|
@ -290,7 +308,7 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_permitted_strong_params
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><input type="submit" value="Hello" /><input type="hidden" name="baz" value="quux" /><input type="hidden" name="foo" value="bar" /></form>},
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><button type="submit">Hello</button><input type="hidden" name="baz" value="quux" /><input type="hidden" name="foo" value="bar" /></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", params: FakeParams.new)
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
@ -303,14 +321,14 @@ class UrlHelperTest < ActiveSupport::TestCase
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_nested_hash_params
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><input type="submit" value="Hello" /><input type="hidden" name="foo[bar]" value="baz" /></form>},
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><button type="submit">Hello</button><input type="hidden" name="foo[bar]" value="baz" /></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", params: { foo: { bar: "baz" } })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def test_button_to_with_nested_array_params
|
|
|
|
|
assert_dom_equal(
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><input type="submit" value="Hello" /><input type="hidden" name="foo[]" value="bar" /></form>},
|
|
|
|
|
%{<form action="http://www.example.com" class="button_to" method="post"><button type="submit">Hello</button><input type="hidden" name="foo[]" value="bar" /></form>},
|
|
|
|
|
button_to("Hello", "http://www.example.com", params: { foo: ["bar"] })
|
|
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|