From 2151dfb8d687f08438fc76d8fdf670a473d6a1e8 Mon Sep 17 00:00:00 2001
From: Matt Jankowski <matt@jankowski.online>
Date: Wed, 2 Oct 2024 09:24:40 -0400
Subject: [PATCH] Add `relevant_params` to ReportFilter (matches account
 filter) (#32136)

---
 app/models/report_filter.rb       | 14 +++++++++++++-
 spec/models/report_filter_spec.rb | 13 +++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

diff --git a/app/models/report_filter.rb b/app/models/report_filter.rb
index fd0e23cb8..9d2b0fb37 100644
--- a/app/models/report_filter.rb
+++ b/app/models/report_filter.rb
@@ -18,13 +18,25 @@ class ReportFilter
   def results
     scope = Report.unresolved
 
-    params.each do |key, value|
+    relevant_params.each do |key, value|
       scope = scope.merge scope_for(key, value)
     end
 
     scope
   end
 
+  private
+
+  def relevant_params
+    params.tap do |args|
+      args.delete(:target_origin) if origin_is_remote_and_domain_present?
+    end
+  end
+
+  def origin_is_remote_and_domain_present?
+    params[:target_origin] == 'remote' && params[:by_target_domain].present?
+  end
+
   def scope_for(key, value)
     case key.to_sym
     when :by_target_domain
diff --git a/spec/models/report_filter_spec.rb b/spec/models/report_filter_spec.rb
index 8668eb3d1..51933e475 100644
--- a/spec/models/report_filter_spec.rb
+++ b/spec/models/report_filter_spec.rb
@@ -30,4 +30,17 @@ RSpec.describe ReportFilter do
       expect(Report).to have_received(:resolved)
     end
   end
+
+  context 'when given remote target_origin and also by_target_domain' do
+    let!(:matching_report) { Fabricate :report, target_account: Fabricate(:account, domain: 'match.example') }
+    let!(:non_matching_report) { Fabricate :report, target_account: Fabricate(:account, domain: 'other.example') }
+
+    it 'preserves the domain value' do
+      filter = described_class.new(by_target_domain: 'match.example', target_origin: 'remote')
+
+      expect(filter.results)
+        .to include(matching_report)
+        .and not_include(non_matching_report)
+    end
+  end
 end