]> git.openstreetmap.org Git - rails.git/commitdiff
Don't update ends_at when editing inactive blocks
authorAnton Khorev <tony29@yandex.ru>
Sat, 17 Aug 2024 10:02:20 +0000 (13:02 +0300)
committerAnton Khorev <tony29@yandex.ru>
Sat, 17 Aug 2024 10:02:20 +0000 (13:02 +0300)
app/controllers/user_blocks_controller.rb
test/controllers/user_blocks_controller_test.rb

index 3b7ef30f9c96256962187173e5ee317408e05d58..962eff04ce06306cb97906d9d4a0edf2c126e4bc 100644 (file)
@@ -75,11 +75,14 @@ class UserBlocksController < ApplicationController
         if !user_block_was_active && @user_block.active?
           flash.now[:error] = t(".inactive_block_cannot_be_reactivated")
           render :action => "edit"
-        elsif @user_block.save
-          flash[:notice] = t(".success")
-          redirect_to @user_block
         else
-          render :action => "edit"
+          @user_block.ends_at = @user_block.ends_at_was unless user_block_was_active
+          if @user_block.save
+            flash[:notice] = t(".success")
+            redirect_to @user_block
+          else
+            render :action => "edit"
+          end
         end
       end
     else
index d28194fdcf1735538e0a7af490e413a384b46206..57481abf8d52625747e6c726b8d843e3543de9da 100644 (file)
@@ -799,6 +799,8 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
   end
 
   def check_inactive_block_updates(block)
+    original_ends_at = block.ends_at
+
     put user_block_path(block,
                         :user_block_period => "0",
                         :user_block => { :needs_view => false, :reason => "Updated Reason" })
@@ -807,6 +809,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     block.reload
     assert_not_predicate block, :active?
     assert_equal "Updated Reason", block.reason
+    assert_equal original_ends_at, block.ends_at
 
     put user_block_path(block,
                         :user_block_period => "0",
@@ -816,6 +819,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     block.reload
     assert_not_predicate block, :active?
     assert_equal "Updated Reason", block.reason
+    assert_equal original_ends_at, block.ends_at
 
     put user_block_path(block,
                         :user_block_period => "1",
@@ -825,6 +829,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     block.reload
     assert_not_predicate block, :active?
     assert_equal "Updated Reason", block.reason
+    assert_equal original_ends_at, block.ends_at
 
     put user_block_path(block,
                         :user_block_period => "0",
@@ -834,6 +839,7 @@ class UserBlocksControllerTest < ActionDispatch::IntegrationTest
     block.reload
     assert_not_predicate block, :active?
     assert_equal "Updated Reason Again", block.reason
+    assert_equal original_ends_at, block.ends_at
   end
 
   def check_user_blocks_table(user_blocks)