From 3835def42b7436c2d22960a5b826255a5b245039 Mon Sep 17 00:00:00 2001 From: Finn Bacall Date: Thu, 11 Sep 2025 13:19:59 +0100 Subject: [PATCH 1/3] Reindex resource when link status changes --- app/models/link_monitor.rb | 15 +++++++++++++++ test/models/link_monitor_test.rb | 20 ++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/app/models/link_monitor.rb b/app/models/link_monitor.rb index 1bf3b4ad5..bd7b701fc 100644 --- a/app/models/link_monitor.rb +++ b/app/models/link_monitor.rb @@ -1,6 +1,7 @@ class LinkMonitor < ApplicationRecord belongs_to :link_checkable, polymorphic: true, foreign_key: :lcheck_id, foreign_type: :lcheck_type before_create :set_initial_date + after_commit :reindex_resource, on: :update FAILURE_THRESHOLD = 4 @@ -37,4 +38,18 @@ def success! def failing? fail_count >= FAILURE_THRESHOLD end + + def status_changed? + prev_count = fail_count_previously_was || 0 + prev_count >= FAILURE_THRESHOLD && fail_count == 0 || + prev_count < FAILURE_THRESHOLD && failing? + end + + private + + def reindex_resource + return unless TeSS::Config.solr_enabled + return unless status_changed? + link_checkable.solr_index + end end diff --git a/test/models/link_monitor_test.rb b/test/models/link_monitor_test.rb index 01f09fb4f..6edc2e81e 100644 --- a/test/models/link_monitor_test.rb +++ b/test/models/link_monitor_test.rb @@ -96,4 +96,24 @@ class LinkMonitorTest < ActiveSupport::TestCase refute @link_monitor.failing? assert_equal 0, @link_monitor.fail_count end + + test 'link monitor status changed' do + refute @link_monitor.status_changed? + + @link_monitor.update_column(:fail_count, 3) + refute @link_monitor.failing? + refute @link_monitor.status_changed? + + @link_monitor.fail!(404) + assert @link_monitor.failing? + assert @link_monitor.status_changed? + + @link_monitor.fail!(404) + assert @link_monitor.failing? + refute @link_monitor.status_changed? + + @link_monitor.success + refute @link_monitor.failing? + assert @link_monitor.status_changed? + end end From 69bf53faede5fb15236577abefb9847405cf23f4 Mon Sep 17 00:00:00 2001 From: Finn Bacall Date: Fri, 12 Sep 2025 15:15:44 +0100 Subject: [PATCH 2/3] Update app/models/link_monitor.rb Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- app/models/link_monitor.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/link_monitor.rb b/app/models/link_monitor.rb index bd7b701fc..9a11a0ca9 100644 --- a/app/models/link_monitor.rb +++ b/app/models/link_monitor.rb @@ -41,8 +41,8 @@ def failing? def status_changed? prev_count = fail_count_previously_was || 0 - prev_count >= FAILURE_THRESHOLD && fail_count == 0 || - prev_count < FAILURE_THRESHOLD && failing? + (prev_count >= FAILURE_THRESHOLD && fail_count == 0) || + (prev_count < FAILURE_THRESHOLD && failing?) end private From 47060197d1cf68ba5ec4aca4b375267a3cbafbe0 Mon Sep 17 00:00:00 2001 From: Finn Bacall Date: Mon, 15 Sep 2025 13:12:50 +0100 Subject: [PATCH 3/3] Extra test case --- test/models/link_monitor_test.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/models/link_monitor_test.rb b/test/models/link_monitor_test.rb index 6edc2e81e..42f6926a3 100644 --- a/test/models/link_monitor_test.rb +++ b/test/models/link_monitor_test.rb @@ -112,8 +112,12 @@ class LinkMonitorTest < ActiveSupport::TestCase assert @link_monitor.failing? refute @link_monitor.status_changed? - @link_monitor.success + @link_monitor.success! refute @link_monitor.failing? assert @link_monitor.status_changed? + + @link_monitor.success! + refute @link_monitor.failing? + refute @link_monitor.status_changed? end end