From 4c5e6ccb0364025bb0eac8d98b2bfa59719b38c0 Mon Sep 17 00:00:00 2001 From: Hasan Iskandar Date: Thu, 12 Nov 2015 18:18:58 +0700 Subject: [PATCH 1/5] Fix hide/show group based on dependency --- lib/assets/javascripts/surveyor/jquery.surveyor.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/assets/javascripts/surveyor/jquery.surveyor.js b/lib/assets/javascripts/surveyor/jquery.surveyor.js index b799741a..6df95158 100644 --- a/lib/assets/javascripts/surveyor/jquery.surveyor.js +++ b/lib/assets/javascripts/surveyor/jquery.surveyor.js @@ -106,7 +106,7 @@ jQuery(document).ready(function(){ } function showElement(id){ - group = id.match('^question_group_') ? true : false; + group = id.match('^g_') ? true : false; if (group) { jQuery('#' + id).removeClass("g_hidden"); } else { @@ -115,7 +115,7 @@ jQuery(document).ready(function(){ } function hideElement(id){ - group = id.match('^question_group_') ? true : false; + group = id.match('^g_') ? true : false; if (group) { jQuery('#' + id).addClass("g_hidden"); } else { From 84ed325e5006b4c543a429a8c271817035a2d6a3 Mon Sep 17 00:00:00 2001 From: Hasan Iskandar Date: Tue, 29 Mar 2016 18:25:36 +0700 Subject: [PATCH 2/5] Fixed tests --- spec/features/ajax_spec.rb | 1 + surveyor.gemspec | 6 +++--- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/spec/features/ajax_spec.rb b/spec/features/ajax_spec.rb index c132c158..b3b7aea1 100644 --- a/spec/features/ajax_spec.rb +++ b/spec/features/ajax_spec.rb @@ -26,6 +26,7 @@ response_set = start_survey('Everything') expect(page).to have_content("What is your favorite color?") within question("1") do + choose "Other" find("input[id$='string_value']").set("black") end wait_for_ajax diff --git a/surveyor.gemspec b/surveyor.gemspec index 1559d7e8..be0ec6d5 100644 --- a/surveyor.gemspec +++ b/surveyor.gemspec @@ -29,7 +29,7 @@ Gem::Specification.new do |s| s.add_development_dependency('yard') s.add_development_dependency('rake') s.add_development_dependency('sqlite3') - s.add_development_dependency('bundler', '~> 1.6.1') + s.add_development_dependency('bundler', '>= 1.6.1') s.add_development_dependency('rspec-rails', '~> 2.14.2') s.add_development_dependency('capybara', '~> 2.2.1') s.add_development_dependency('launchy', '~> 2.4.2') @@ -37,5 +37,5 @@ Gem::Specification.new do |s| s.add_development_dependency('json_spec', '~> 1.1.1') s.add_development_dependency('factory_girl', '~> 4.4.0') s.add_development_dependency('database_cleaner', '~> 1.2.0') - s.add_development_dependency('rspec-retry') -end \ No newline at end of file + s.add_development_dependency('rspec-retry', '0.4.4') +end From fc0823a69442076620cb26f41f9a2404a21ffb20 Mon Sep 17 00:00:00 2001 From: Hasan Iskandar Date: Tue, 29 Mar 2016 18:49:02 +0700 Subject: [PATCH 3/5] Increase ajax wait time a bit --- spec/support/wait_for_ajax.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/support/wait_for_ajax.rb b/spec/support/wait_for_ajax.rb index 075870b3..649034b1 100644 --- a/spec/support/wait_for_ajax.rb +++ b/spec/support/wait_for_ajax.rb @@ -1,5 +1,5 @@ module WaitForAjax - def wait_for_ajax(wait_time = 1) + def wait_for_ajax(wait_time = 3) Timeout.timeout(wait_time) do loop until finished_all_ajax_requests? end @@ -8,4 +8,4 @@ def wait_for_ajax(wait_time = 1) def finished_all_ajax_requests? page.evaluate_script('jQuery.active').zero? end -end \ No newline at end of file +end From 27d234f3a2466c79486513d7ee06d062ac28537d Mon Sep 17 00:00:00 2001 From: Hasan Iskandar Date: Tue, 29 Mar 2016 21:15:38 +0700 Subject: [PATCH 4/5] Some fixes to avoid database locks on the tests --- .../javascripts/surveyor/jquery.surveyor.js | 37 ++++++++++++------- spec/features/ajax_spec.rb | 4 ++ spec/support/wait_for_ajax.rb | 2 +- 3 files changed, 28 insertions(+), 15 deletions(-) diff --git a/lib/assets/javascripts/surveyor/jquery.surveyor.js b/lib/assets/javascripts/surveyor/jquery.surveyor.js index 6df95158..da94edee 100644 --- a/lib/assets/javascripts/surveyor/jquery.surveyor.js +++ b/lib/assets/javascripts/surveyor/jquery.surveyor.js @@ -72,20 +72,29 @@ jQuery(document).ready(function(){ }); jQuery("form#survey_form input, form#survey_form select, form#survey_form textarea").change(function(){ - var elements = [$('[type="submit"]').parent(), $('[name="' + this.name +'"]').closest('li')]; - - question_data = $(this).parents('div[id^="q_"],tr[id^="q_"]'). - find("input, select, textarea"). - add($("form#survey_form input[name='authenticity_token']")). - serialize(); - $.ajax({ - type: "PUT", - url: $(this).parents('form#survey_form').attr("action"), - data: question_data, dataType: 'json', - success: function(response) { - successfulSave(response); - } - }); + var that = this, + update = function(){ + var elements = [$('[type="submit"]').parent(), $('[name="' + that.name +'"]').closest('li')]; + + question_data = $(that).parents('div[id^="q_"],tr[id^="q_"]'). + find("input, select, textarea"). + add($("form#survey_form input[name='authenticity_token']")). + serialize(); + $.ajax({ + type: "PUT", + url: $(that).parents('form#survey_form').attr("action"), + data: question_data, dataType: 'json', + success: function(response) { + successfulSave(response); + } + }); + }; + if ($(that).is('input[data-input-mask]')) { + clearTimeout($(that).data('surveyor-change-timer')); + $(that).data('surveyor-change-timer', setTimeout(update)); + } else { + update(); + } }); // http://www.filamentgroup.com/lab/update_jquery_ui_slider_from_a_select_element_now_with_aria_support/ diff --git a/spec/features/ajax_spec.rb b/spec/features/ajax_spec.rb index b3b7aea1..28a073d4 100644 --- a/spec/features/ajax_spec.rb +++ b/spec/features/ajax_spec.rb @@ -187,16 +187,20 @@ click_button "Special" check "No other heating source" + wait_for_ajax expect(checkbox("heat2", "neg_1").disabled?).to be_true expect(checkbox("heat2", "neg_2").disabled?).to be_true uncheck "No other heating source" + wait_for_ajax expect(checkbox("heat2", "neg_1").disabled?).to be_false check "Electric" + wait_for_ajax expect(checkbox("heat2", "neg_1").disabled?).to be_false check "Refused" + wait_for_ajax expect(checkbox("heat2", "1").disabled?).to be_true expect(checkbox("heat2", "neg_2").disabled?).to be_true end diff --git a/spec/support/wait_for_ajax.rb b/spec/support/wait_for_ajax.rb index 649034b1..2d603b01 100644 --- a/spec/support/wait_for_ajax.rb +++ b/spec/support/wait_for_ajax.rb @@ -1,5 +1,5 @@ module WaitForAjax - def wait_for_ajax(wait_time = 3) + def wait_for_ajax(wait_time = 1) Timeout.timeout(wait_time) do loop until finished_all_ajax_requests? end From 51954f27b4fb5e857333bad49e7a51448c0a5e43 Mon Sep 17 00:00:00 2001 From: Hasan Iskandar Date: Tue, 29 Mar 2016 21:36:48 +0700 Subject: [PATCH 5/5] Set 1 millisecond timeout delay --- lib/assets/javascripts/surveyor/jquery.surveyor.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/assets/javascripts/surveyor/jquery.surveyor.js b/lib/assets/javascripts/surveyor/jquery.surveyor.js index da94edee..9dbba9b3 100644 --- a/lib/assets/javascripts/surveyor/jquery.surveyor.js +++ b/lib/assets/javascripts/surveyor/jquery.surveyor.js @@ -91,7 +91,7 @@ jQuery(document).ready(function(){ }; if ($(that).is('input[data-input-mask]')) { clearTimeout($(that).data('surveyor-change-timer')); - $(that).data('surveyor-change-timer', setTimeout(update)); + $(that).data('surveyor-change-timer', setTimeout(update, 1)); } else { update(); }