diff options
author | Rafael França <rafaelmfranca@gmail.com> | 2018-09-27 21:00:29 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-27 21:00:29 -0400 |
commit | a27c78427a3cef06235ea2d05a689b7309d52334 (patch) | |
tree | c338116d55f28ea682a662f2de06c3165c98d57e /actionview/test | |
parent | 47f2686148bcaa04f24c1ed895d75ff877be12e9 (diff) | |
parent | 8e07711d65a10be697020cc775e966bc2df87b7e (diff) | |
download | rails-a27c78427a3cef06235ea2d05a689b7309d52334.tar.gz rails-a27c78427a3cef06235ea2d05a689b7309d52334.tar.bz2 rails-a27c78427a3cef06235ea2d05a689b7309d52334.zip |
Merge pull request #31441 from mrhead/rails-ujs-xhr-redirects
Do not enable disabled elements for XHR redirects
Diffstat (limited to 'actionview/test')
-rw-r--r-- | actionview/test/ujs/public/test/data-disable.js | 17 | ||||
-rw-r--r-- | actionview/test/ujs/public/test/settings.js | 4 | ||||
-rw-r--r-- | actionview/test/ujs/server.rb | 7 |
3 files changed, 27 insertions, 1 deletions
diff --git a/actionview/test/ujs/public/test/data-disable.js b/actionview/test/ujs/public/test/data-disable.js index e9919764b6..88dc801b2f 100644 --- a/actionview/test/ujs/public/test/data-disable.js +++ b/actionview/test/ujs/public/test/data-disable.js @@ -320,3 +320,20 @@ asyncTest('button[data-remote][data-disable] re-enables when `ajax:error` event start() }, 30) }) + +asyncTest('do not enable elements for XHR redirects', 6, function() { + var link = $('a[data-disable]').attr('data-remote', true).attr('href', '/echo?with_xhr_redirect=true') + + App.checkEnabledState(link, 'Click me') + + link + .bindNative('ajax:send', function() { + App.checkDisabledState(link, 'Click me') + }) + .triggerNative('click') + + setTimeout(function() { + App.checkDisabledState(link, 'Click me') + start() + }, 30) +}) diff --git a/actionview/test/ujs/public/test/settings.js b/actionview/test/ujs/public/test/settings.js index b1ce3b8c64..05677f2595 100644 --- a/actionview/test/ujs/public/test/settings.js +++ b/actionview/test/ujs/public/test/settings.js @@ -1,4 +1,5 @@ var App = App || {} +var Turbolinks = Turbolinks || {} App.assertCallbackInvoked = function(callbackName) { ok(true, callbackName + ' callback should have been invoked') @@ -116,3 +117,6 @@ $.fn.extend({ return this } }) + +Turbolinks.clearCache = function() {} +Turbolinks.visit = function() {} diff --git a/actionview/test/ujs/server.rb b/actionview/test/ujs/server.rb index 48e9bcb65f..56f436c8b8 100644 --- a/actionview/test/ujs/server.rb +++ b/actionview/test/ujs/server.rb @@ -64,7 +64,12 @@ class TestsController < ActionController::Base if params[:content_type] && params[:content] render inline: params[:content], content_type: params[:content_type] elsif request.xhr? - render json: JSON.generate(data) + if params[:with_xhr_redirect] + response.set_header("X-Xhr-Redirect", "http://example.com/") + render inline: %{Turbolinks.clearCache()\nTurbolinks.visit("http://example.com/", {"action":"replace"})} + else + render json: JSON.generate(data) + end elsif params[:iframe] payload = JSON.generate(data).gsub("<", "<").gsub(">", ">") html = <<-HTML |