From: Tom Hughes Date: Wed, 24 Jul 2024 17:16:02 +0000 (+0100) Subject: Merge remote-tracking branch 'upstream/pull/5012' X-Git-Tag: live~370 X-Git-Url: https://git.openstreetmap.org./rails.git/commitdiff_plain/f643b6627c52cc778a9df01a231a5cdfb89e77f7?hp=580daf06bd291766a23e8411559f088341792135 Merge remote-tracking branch 'upstream/pull/5012' --- diff --git a/Gemfile.lock b/Gemfile.lock index 412ef4820..05ccd47d1 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -95,8 +95,8 @@ GEM autoprefixer-rails (10.4.16.0) execjs (~> 2) aws-eventstream (1.3.0) - aws-partitions (1.956.0) - aws-sdk-core (3.201.1) + aws-partitions (1.957.0) + aws-sdk-core (3.201.2) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.651.0) aws-sigv4 (~> 1.8) @@ -412,7 +412,7 @@ GEM progress (3.6.0) psych (5.1.2) stringio - public_suffix (6.0.0) + public_suffix (6.0.1) puma (5.6.8) nio4r (~> 2.0) quad_tile (1.0.1) @@ -524,8 +524,9 @@ GEM rubocop (~> 1.0) ruby-openid (2.9.2) ruby-progressbar (1.13.0) - ruby-vips (2.2.1) + ruby-vips (2.2.2) ffi (~> 1.12) + logger rubyzip (2.3.2) sanitize (6.1.1) crass (~> 1.0.2) @@ -533,7 +534,7 @@ GEM sass-embedded (1.64.2) google-protobuf (~> 3.23) rake (>= 13.0.0) - selenium-webdriver (4.22.0) + selenium-webdriver (4.23.0) base64 (~> 0.2) logger (~> 1.4) rexml (~> 3.2, >= 3.2.5) @@ -572,7 +573,7 @@ GEM thor (1.3.1) tilt (2.4.0) timeout (0.4.1) - turbo-rails (2.0.5) + turbo-rails (2.0.6) actionpack (>= 6.0.0) activejob (>= 6.0.0) railties (>= 6.0.0) diff --git a/app/views/user_blocks/edit.html.erb b/app/views/user_blocks/edit.html.erb index a5b165e9a..88441a15d 100644 --- a/app/views/user_blocks/edit.html.erb +++ b/app/views/user_blocks/edit.html.erb @@ -15,7 +15,8 @@ <%= f.form_group do %> <%= label_tag "user_block_period", t(".period"), :class => "form-label" %> <%= select_tag("user_block_period", - options_for_select(UserBlock::PERIODS.collect { |h| [block_duration_in_words(h.hours), h.to_s] }, params[:user_block_period]), + options_for_select(UserBlock::PERIODS.collect { |h| [block_duration_in_words(h.hours), h.to_s] }, + UserBlock::PERIODS.min_by { |h| (params[:user_block_period].to_i - h).abs }), :class => "form-select") %> <% end %> diff --git a/test/controllers/user_blocks_controller_test.rb b/test/controllers/user_blocks_controller_test.rb index 97f517133..b6aaf4ca8 100644 --- a/test/controllers/user_blocks_controller_test.rb +++ b/test/controllers/user_blocks_controller_test.rb @@ -244,6 +244,34 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest assert_select "p", "Sorry, the user block with ID 99999 could not be found." end + ## + # test the edit action when the remaining block duration doesn't match the available select options + def test_edit_duration + moderator_user = create(:moderator_user) + + freeze_time do + active_block = create(:user_block, :creator => moderator_user, :ends_at => Time.now.utc + 96.hours) + + session_for(moderator_user) + get edit_user_block_path(active_block) + + assert_select "form#edit_user_block_#{active_block.id}", :count => 1 do + assert_select "select#user_block_period", :count => 1 do + assert_select "option[value='96'][selected]", :count => 1 + end + end + + travel 2.hours + get edit_user_block_path(active_block) + + assert_select "form#edit_user_block_#{active_block.id}", :count => 1 do + assert_select "select#user_block_period", :count => 1 do + assert_select "option[value='96'][selected]", :count => 1 + end + end + end + end + ## # test the create action def test_create