]> git.openstreetmap.org Git - rails.git/commitdiff
Check deactivates_at to report if block was read after its end date
authorAnton Khorev <tony29@yandex.ru>
Mon, 6 Jan 2025 18:10:18 +0000 (21:10 +0300)
committerAnton Khorev <tony29@yandex.ru>
Mon, 6 Jan 2025 18:10:18 +0000 (21:10 +0300)
app/helpers/user_blocks_helper.rb
test/helpers/user_blocks_helper_test.rb

index c7c12f6d1f17901f54e05367c35b9d4fdc69bd2e..75bd4a46daec8b1ce277f0b01e59f8f2e3f7cf8d 100644 (file)
@@ -34,7 +34,7 @@ module UserBlocksHelper
       end
     else
       if block.revoker_id.nil?
       end
     else
       if block.revoker_id.nil?
-        if block.updated_at > block.ends_at
+        if block.deactivates_at > block.ends_at
           t("user_blocks.helper.short.read_html", :time => block_short_time_in_past(block.updated_at))
         else
           t("user_blocks.helper.short.ended")
           t("user_blocks.helper.short.read_html", :time => block_short_time_in_past(block.updated_at))
         else
           t("user_blocks.helper.short.ended")
index 99f59af4795437b488e576fdecca530de7cbc4cb..28cc0ad5055cdd530a861164d5c8bc3a87592c1c 100644 (file)
@@ -30,6 +30,38 @@ class UserBlocksHelperTest < ActionView::TestCase
     end
   end
 
     end
   end
 
+  def test_block_short_status_with_immediate_update
+    freeze_time do
+      block = UserBlock.new :user => create(:user),
+                            :creator => create(:moderator_user),
+                            :reason => "because",
+                            :created_at => Time.now.utc,
+                            :ends_at => Time.now.utc,
+                            :deactivates_at => Time.now.utc,
+                            :needs_view => false
+
+      travel 1.second
+
+      block.save
+
+      assert_equal "ended", block_short_status(block)
+    end
+  end
+
+  def test_block_short_status_read
+    freeze_time do
+      block = create(:user_block, :needs_view, :ends_at => Time.now.utc)
+
+      travel 24.hours
+
+      assert_equal "active until read", block_short_status(block)
+
+      block.update(:needs_view => false, :deactivates_at => Time.now.utc)
+
+      assert_match "read at", block_short_status(block)
+    end
+  end
+
   def test_block_duration_in_words
     words = block_duration_in_words(364.days)
     assert_equal "11 months", words
   def test_block_duration_in_words
     words = block_duration_in_words(364.days)
     assert_equal "11 months", words