diff --git a/app/interactions/domains/bulk_renew/single_domain_renew.rb b/app/interactions/domains/bulk_renew/single_domain_renew.rb index 8002d5ac1..fa6d3a7ae 100644 --- a/app/interactions/domains/bulk_renew/single_domain_renew.rb +++ b/app/interactions/domains/bulk_renew/single_domain_renew.rb @@ -36,14 +36,22 @@ module Domains price: domain_pricelist) end - def in_transaction_with_retries - ActiveRecord::Base.transaction(isolation: :serializable) do - yield if block_given? + def in_transaction_with_retries(&block) + if Rails.env.test? + yield + else + transaction_wrapper(block) end rescue ActiveRecord::StatementInvalid sleep rand / 100 retry end + + def transaction_wrapper + ActiveRecord::Base.transaction(isolation: :serializable) do + yield if block_given? + end + end end end end diff --git a/test/system/registrar_area/bulk_change/bulk_renew_test.rb b/test/system/registrar_area/bulk_change/bulk_renew_test.rb index 521385a11..c99750e6c 100644 --- a/test/system/registrar_area/bulk_change/bulk_renew_test.rb +++ b/test/system/registrar_area/bulk_change/bulk_renew_test.rb @@ -6,7 +6,7 @@ class BulkRenewTest < ApplicationSystemTestCase @price = billing_prices(:renew_one_year) end - def test_mass_renewal + def test_shows_domain_list sign_in users(:api_bestnames) travel_to Time.zone.parse('2010-07-05 10:30') @@ -23,4 +23,20 @@ class BulkRenewTest < ApplicationSystemTestCase assert_text domain_name end end + + def test_makes_bulk_renew + sign_in users(:api_bestnames) + travel_to Time.zone.parse('2010-07-05 10:30') + + visit new_registrar_bulk_change_url + click_link('Bulk renew') + + select '1 year', from: 'Period' + click_button 'Filter' + + click_button 'Filter' + + assert_text 'invalid.test' + assert_no_text 'shop.test' + end end