From a30c2bf0382173c552a8130441c19e03b440e667 Mon Sep 17 00:00:00 2001 From: Apoorv Darshan Date: Wed, 18 Feb 2026 15:08:11 +0530 Subject: [PATCH 1/2] Add tests for click_source_redirect in DocMethodsController MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Addresses #723 — the click_source_redirect action had zero test coverage. Adds happy path and sad path tests mirroring the existing click_method_redirect tests. --- test/functional/doc_methods_controller_test.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/test/functional/doc_methods_controller_test.rb b/test/functional/doc_methods_controller_test.rb index b6f5c694..e0ca6320 100644 --- a/test/functional/doc_methods_controller_test.rb +++ b/test/functional/doc_methods_controller_test.rb @@ -26,4 +26,19 @@ class DocMethodsControllerTest < ActionController::TestCase assert flash[:notice].eql? "Bad url, if this problem persists please open an issue github.com/codetriage/codetriage" assert_redirected_to :root end + + test "click_source_redirect with a DocAssignment redirects to the github source url" do + DocAssignment.create(doc_method_id: @triage_doc.id, repo_subscription_id: @repo_sub.id) + + get :click_source_redirect, params: {id: @triage_doc.id, user_id: @user.id} + + assert_redirected_to @triage_doc.to_github + end + + test "click_source_redirect without any DocAssignment returns to root and displays an error" do + get :click_source_redirect, params: {id: @triage_doc.id, user_id: @user.id} + + assert flash[:notice].eql? "Bad url, if this problem persists please open an issue github.com/codetriage/codetriage" + assert_redirected_to :root + end end From e49b62c19b863fe85216d2f65d89a8a29be24ce2 Mon Sep 17 00:00:00 2001 From: Apoorv Darshan Date: Wed, 18 Feb 2026 15:13:36 +0530 Subject: [PATCH 2/2] Fix click_source_redirect to handle missing DocAssignment gracefully Use .where().first instead of find_by! so missing records return nil instead of raising RecordNotFound, matching click_method_redirect behavior. --- app/controllers/doc_methods_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/doc_methods_controller.rb b/app/controllers/doc_methods_controller.rb index 883abfa1..781f9843 100644 --- a/app/controllers/doc_methods_controller.rb +++ b/app/controllers/doc_methods_controller.rb @@ -35,8 +35,8 @@ def click_method_redirect def click_source_redirect doc = DocMethod.find(params[:id]) - sub = RepoSubscription.find_by!(user_id: params[:user_id], repo: doc.repo) - assignment = DocAssignment.find_by!(doc_method_id: doc.id, repo_subscription_id: sub.id) + sub = RepoSubscription.where(user_id: params[:user_id], repo: doc.repo).first + assignment = DocAssignment.where(doc_method_id: doc.id, repo_subscription_id: sub.id).first if assignment&.user&.id.to_s == params[:user_id] assignment.user.record_click!