From 566160769545f26ebf5210b8afe7c43b29942a86 Mon Sep 17 00:00:00 2001 From: jeremyhunton-va <99915461+jeremyhunton-va@users.noreply.github.com> Date: Mon, 6 Apr 2026 20:21:41 +0000 Subject: [PATCH 1/5] changed test controller names to fix issue with duplicate names overwriting each other. --- .../appeals_api/header_modification_spec.rb | 4 ++-- .../claims_api/endpoint_deprecation_spec.rb | 4 ++-- .../concerns/claims_api/poa_verification_spec.rb | 14 +++++++++----- .../claims_requests/supporting_documents_spec.rb | 4 ++-- .../tracked_items_assistance_spec.rb | 4 ++-- .../v2/claims_requests/tracked_items_spec.rb | 4 ++-- 6 files changed, 19 insertions(+), 15 deletions(-) diff --git a/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb b/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb index d47cf1ace960..1286e57901a1 100644 --- a/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb +++ b/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb @@ -2,11 +2,11 @@ require 'rails_helper' -class FakeController < ApplicationController +class FakeHeaderModController < ApplicationController include AppealsApi::HeaderModification end -describe FakeController do +describe FakeHeaderModController do context "adding a 'Deprecation' header to the response" do context "when a 'Response' object is not provided" do it "An 'ArgumentError' is raised" do diff --git a/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb b/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb index 46d2cf22b098..5c22fbe3af3c 100644 --- a/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb @@ -2,11 +2,11 @@ require 'rails_helper' -class FakeController < ApplicationController +class FakeEndpointDeprecationController < ApplicationController include ClaimsApi::EndpointDeprecation end -describe FakeController do +describe FakeEndpointDeprecationController do context "adding a 'Deprecation' header to the response" do context "when a 'Response' object is not provided" do it "An 'ArgumentError' is raised" do diff --git a/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb b/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb index bac5f7645cb7..ca4646813926 100644 --- a/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb @@ -2,7 +2,7 @@ require 'rails_helper' -class FakeController < ApplicationController +class FakePOAVerificationController < ApplicationController include ClaimsApi::PoaVerification def initialize @@ -22,7 +22,7 @@ def target_veteran end end -describe FakeController do +describe FakePOAVerificationController do context 'validating poa_code for current_user' do let(:poa_code) { '091' } let(:first_name) { 'John' } @@ -125,14 +125,16 @@ def target_veteran describe '#verify_power_of_attorney!' do before do - allow_any_instance_of(FakeController).to receive(:token).and_return(double(client_credentials_token?: false)) + allow_any_instance_of(FakePOAVerificationController).to receive( + :token + ).and_return(double(client_credentials_token?: false)) veteran_user = double('Veteran::User') allow(Veteran::User).to receive(:new).and_return(veteran_user) allow(veteran_user).to receive(:power_of_attorney).and_return(double(try: 'some_code')) end it 'handles an Unauthorized error' do - allow_any_instance_of(FakeController).to receive(:valid_poa_code_for_current_user?).and_raise(Common::Exceptions::Unauthorized) + allow_any_instance_of(FakePOAVerificationController).to receive(:valid_poa_code_for_current_user?).and_raise(Common::Exceptions::Unauthorized) expect do subject.verify_power_of_attorney! @@ -157,7 +159,9 @@ def target_veteran let(:mock_exception) { Breakers::OutageException.new(mock_outage, mock_service) } it 'handles an Breakers Outage error' do - allow_any_instance_of(FakeController).to receive(:valid_poa_code_for_current_user?).and_raise(mock_exception) + allow_any_instance_of(FakePOAVerificationController).to receive( + :valid_poa_code_for_current_user? + ).and_raise(mock_exception) expect do subject.verify_power_of_attorney! diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb index 3e9b93fe2700..e67fe7b72156 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb @@ -5,7 +5,7 @@ require 'bd/bd' require 'bgs_service/person_web_service' -class FakeController +class FakeDocumentsController include ClaimsApi::V2::ClaimsRequests::SupportingDocuments def local_bgs_service @@ -67,7 +67,7 @@ def params let(:dummy_class) { Class.new { include ClaimsApi::V2::ClaimsRequests::SupportingDocuments } } - let(:controller) { FakeController.new } + let(:controller) { FakeDocumentsController.new } before do allow(Flipper).to receive(:enabled?).with(:lighthouse_claims_api_use_birls_id).and_return(false) diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb index 4cecfc08690e..2ca42b37fcf2 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb @@ -2,11 +2,11 @@ require 'rails_helper' -class FakeController +class FakeTrackedItemsAssistanceController include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance end -describe FakeController do +describe FakeTrackedItemsAssistanceController do context 'when the claims controller calls the TrackedItemsAssistance module' do let(:claim_date) { Date.parse('2024-08-22 07:36:25 -0600') } let(:status) { 'Complete' } diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb index 19f1111111ce..f1f2dab213d8 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb @@ -3,7 +3,7 @@ require 'rails_helper' require 'bgs_service/tracked_item_service' -class FakeController +class FakeTrackedItemsController include ClaimsApi::V2::ClaimsRequests::TrackedItems include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance @@ -31,7 +31,7 @@ def target_veteran end end -describe FakeController do +describe FakeTrackedItemsController do context 'when the claims controller calls the tracked_items module' do let(:claim_id) { '600118544' } let(:bgs_claim) do From cc727d45f62f197e9b4736aa168e0a9dad5c41f6 Mon Sep 17 00:00:00 2001 From: jeremyhunton-va <99915461+jeremyhunton-va@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:19:20 +0000 Subject: [PATCH 2/5] reverted change to FakeController in class outside of claims benefits --- .../concerns/appeals_api/header_modification_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb b/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb index 1286e57901a1..d47cf1ace960 100644 --- a/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb +++ b/modules/appeals_api/spec/controllers/concerns/appeals_api/header_modification_spec.rb @@ -2,11 +2,11 @@ require 'rails_helper' -class FakeHeaderModController < ApplicationController +class FakeController < ApplicationController include AppealsApi::HeaderModification end -describe FakeHeaderModController do +describe FakeController do context "adding a 'Deprecation' header to the response" do context "when a 'Response' object is not provided" do it "An 'ArgumentError' is raised" do From 7d70cd06e90366b650816aa7e8ee2fe45e109a3e Mon Sep 17 00:00:00 2001 From: jeremyhunton-va <99915461+jeremyhunton-va@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:37:19 +0000 Subject: [PATCH 3/5] moved top level class constant for test into test scope for endpoint_deprecation_spec and supporting_documents_spec --- .../claims_api/endpoint_deprecation_spec.rb | 12 ++- .../supporting_documents_spec.rb | 95 +++++++++---------- 2 files changed, 55 insertions(+), 52 deletions(-) diff --git a/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb b/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb index 5c22fbe3af3c..c0df78f57b62 100644 --- a/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/endpoint_deprecation_spec.rb @@ -2,11 +2,15 @@ require 'rails_helper' -class FakeEndpointDeprecationController < ApplicationController - include ClaimsApi::EndpointDeprecation -end +describe ClaimsApi::EndpointDeprecation do + subject { fake_endpoint_deprecation_controller_class.new } + + let(:fake_endpoint_deprecation_controller_class) do + Class.new do + include ClaimsApi::EndpointDeprecation + end + end -describe FakeEndpointDeprecationController do context "adding a 'Deprecation' header to the response" do context "when a 'Response' object is not provided" do it "An 'ArgumentError' is raised" do diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb index e67fe7b72156..05d76a7887d8 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb @@ -5,57 +5,58 @@ require 'bd/bd' require 'bgs_service/person_web_service' -class FakeDocumentsController - include ClaimsApi::V2::ClaimsRequests::SupportingDocuments - - def local_bgs_service - if Flipper.enabled? :claims_api_use_person_web_service - ClaimsApi::PersonWebService.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id - ) - else - ClaimsApi::LocalBGS.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id - ) - end - end +describe ClaimsApi::V2::ClaimsRequests::SupportingDocuments do + let(:fake_documents_controller_class) do + Class.new do + include ClaimsApi::V2::ClaimsRequests::SupportingDocuments + + def local_bgs_service + if Flipper.enabled? :claims_api_use_person_web_service + ClaimsApi::PersonWebService.new( + external_uid: target_veteran.participant_id, + external_key: target_veteran.participant_id + ) + else + ClaimsApi::LocalBGS.new( + external_uid: target_veteran.participant_id, + external_key: target_veteran.participant_id + ) + end + end - def target_veteran - OpenStruct.new( - icn: '1012667169V030190', - first_name: 'Ralph', - last_name: 'Lee', - loa: { current: 3, highest: 3 }, - ssn: '796378782', - edipi: '8040545646', - participant_id: '600045025', - mpi: OpenStruct.new( - icn: '1012667169V030190', - profile: OpenStruct.new(ssn: '796378782') - ) - ) - end + def target_veteran + OpenStruct.new( + icn: '1012667169V030190', + first_name: 'Ralph', + last_name: 'Lee', + loa: { current: 3, highest: 3 }, + ssn: '796378782', + edipi: '8040545646', + participant_id: '600045025', + mpi: OpenStruct.new( + icn: '1012667169V030190', + profile: OpenStruct.new(ssn: '796378782') + ) + ) + end - def request - { request_id: '222222222' } - end + def request + { request_id: '222222222' } + end - def benefits_doc_api - @benefits_doc_api ||= ClaimsApi::BD.new - end + def benefits_doc_api + @benefits_doc_api ||= ClaimsApi::BD.new + end - def claims_v2_logging(*) - true - end + def claims_v2_logging(*) + true + end - def params - { id: '600397218' } + def params + { id: '600397218' } + end + end end -end - -describe ClaimsApi::V2::ClaimsRequests::SupportingDocuments do let(:bgs_claim) do { benefit_claim_details_dto: { @@ -65,9 +66,7 @@ def params end let(:ssn) { '796378782' } - let(:dummy_class) { Class.new { include ClaimsApi::V2::ClaimsRequests::SupportingDocuments } } - - let(:controller) { FakeDocumentsController.new } + let(:controller) { fake_documents_controller_class.new } before do allow(Flipper).to receive(:enabled?).with(:lighthouse_claims_api_use_birls_id).and_return(false) From 5958dbb13d0b03dbdce0237d3b652feeb6a1fa62 Mon Sep 17 00:00:00 2001 From: jeremyhunton-va <99915461+jeremyhunton-va@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:47:34 +0000 Subject: [PATCH 4/5] updated specs to move top level class inside of rspec to prevent collisions with test-only classes. --- .../claims_api/poa_verification_spec.rb | 43 +++++++------- .../tracked_items_assistance_spec.rb | 12 ++-- .../v2/claims_requests/tracked_items_spec.rb | 56 ++++++++++--------- 3 files changed, 61 insertions(+), 50 deletions(-) diff --git a/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb b/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb index ca4646813926..e8c250893c81 100644 --- a/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/poa_verification_spec.rb @@ -2,27 +2,30 @@ require 'rails_helper' -class FakePOAVerificationController < ApplicationController - include ClaimsApi::PoaVerification - - def initialize - super - @current_user = ClaimsApi::ClaimsUser.new('test') - @current_user.first_name_last_name('John', 'Doe') - @current_user.middle_name = 'Alexander' - @current_user.suffix = 'III' - end +describe ClaimsApi::PoaVerification do + subject { fake_poa_verification_controller_class.new } + + let(:fake_poa_verification_controller_class) do + Class.new do + include ClaimsApi::PoaVerification + def initialize + super + @current_user = ClaimsApi::ClaimsUser.new('test') + @current_user.first_name_last_name('John', 'Doe') + @current_user.middle_name = 'Alexander' + @current_user.suffix = 'III' + end - def token - @token ||= double('Token', client_credentials_token?: false) - end + def token + @token ||= double('Token', client_credentials_token?: false) + end - def target_veteran - @target_veteran ||= {} + def target_veteran + @target_veteran ||= {} + end + end end -end -describe FakePOAVerificationController do context 'validating poa_code for current_user' do let(:poa_code) { '091' } let(:first_name) { 'John' } @@ -125,7 +128,7 @@ def target_veteran describe '#verify_power_of_attorney!' do before do - allow_any_instance_of(FakePOAVerificationController).to receive( + allow_any_instance_of(subject.class).to receive( :token ).and_return(double(client_credentials_token?: false)) veteran_user = double('Veteran::User') @@ -134,7 +137,7 @@ def target_veteran end it 'handles an Unauthorized error' do - allow_any_instance_of(FakePOAVerificationController).to receive(:valid_poa_code_for_current_user?).and_raise(Common::Exceptions::Unauthorized) + allow_any_instance_of(subject.class).to receive(:valid_poa_code_for_current_user?).and_raise(Common::Exceptions::Unauthorized) expect do subject.verify_power_of_attorney! @@ -159,7 +162,7 @@ def target_veteran let(:mock_exception) { Breakers::OutageException.new(mock_outage, mock_service) } it 'handles an Breakers Outage error' do - allow_any_instance_of(FakePOAVerificationController).to receive( + allow_any_instance_of(subject.class).to receive( :valid_poa_code_for_current_user? ).and_raise(mock_exception) diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb index 2ca42b37fcf2..d107a223d8e5 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_assistance_spec.rb @@ -2,11 +2,15 @@ require 'rails_helper' -class FakeTrackedItemsAssistanceController - include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance -end +describe ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance do + subject { fake_tracked_items_assistance_controller_class.new } + + let(:fake_tracked_items_assistance_controller_class) do + Class.new do + include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance + end + end -describe FakeTrackedItemsAssistanceController do context 'when the claims controller calls the TrackedItemsAssistance module' do let(:claim_date) { Date.parse('2024-08-22 07:36:25 -0600') } let(:status) { 'Complete' } diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb index f1f2dab213d8..4e59902a1eec 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/tracked_items_spec.rb @@ -3,35 +3,39 @@ require 'rails_helper' require 'bgs_service/tracked_item_service' -class FakeTrackedItemsController - include ClaimsApi::V2::ClaimsRequests::TrackedItems - include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance - - def tracked_item_service - @tracked_item_service ||= ClaimsApi::TrackedItemService.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id - ) - end +describe ClaimsApi::V2::ClaimsRequests::TrackedItems do + subject { fake_tracked_items_controller_class.new } + + let(:fake_tracked_items_controller_class) do + Class.new do + include ClaimsApi::V2::ClaimsRequests::TrackedItems + include ClaimsApi::V2::ClaimsRequests::TrackedItemsAssistance + + def tracked_item_service + @tracked_item_service ||= ClaimsApi::TrackedItemService.new( + external_uid: target_veteran.participant_id, + external_key: target_veteran.participant_id + ) + end - def target_veteran - OpenStruct.new( - icn: '1013062086V794840', - first_name: 'abraham', - last_name: 'lincoln', - loa: { current: 3, highest: 3 }, - ssn: '796111863', - edipi: '8040545646', - participant_id: '600061742', - mpi: OpenStruct.new( - icn: '1013062086V794840', - profile: OpenStruct.new(ssn: '796111863') - ) - ) + def target_veteran + OpenStruct.new( + icn: '1013062086V794840', + first_name: 'abraham', + last_name: 'lincoln', + loa: { current: 3, highest: 3 }, + ssn: '796111863', + edipi: '8040545646', + participant_id: '600061742', + mpi: OpenStruct.new( + icn: '1013062086V794840', + profile: OpenStruct.new(ssn: '796111863') + ) + ) + end + end end -end -describe FakeTrackedItemsController do context 'when the claims controller calls the tracked_items module' do let(:claim_id) { '600118544' } let(:bgs_claim) do From 9c36ea5436a7efad879414ce93bf7a75dc49a7c8 Mon Sep 17 00:00:00 2001 From: jeremyhunton-va <99915461+jeremyhunton-va@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:56:55 +0000 Subject: [PATCH 5/5] resolved reek complaint of calling target_veteran.participant_id 4 times. --- .../v2/claims_requests/supporting_documents_spec.rb | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb index 05d76a7887d8..65c48dea3399 100644 --- a/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb +++ b/modules/claims_api/spec/concerns/claims_api/v2/claims_requests/supporting_documents_spec.rb @@ -11,15 +11,16 @@ include ClaimsApi::V2::ClaimsRequests::SupportingDocuments def local_bgs_service + id = target_veteran.participant_id if Flipper.enabled? :claims_api_use_person_web_service ClaimsApi::PersonWebService.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id + external_uid: id, + external_key: id ) else ClaimsApi::LocalBGS.new( - external_uid: target_veteran.participant_id, - external_key: target_veteran.participant_id + external_uid: id, + external_key: id ) end end