diff --git a/app/services/search_query_service/appeal_row.rb b/app/services/search_query_service/appeal_row.rb index fd6046b1216..1ff6fa47a81 100644 --- a/app/services/search_query_service/appeal_row.rb +++ b/app/services/search_query_service/appeal_row.rb @@ -22,6 +22,7 @@ def search_response attr_reader :query_row # rubocop:disable Metrics/MethodLength + # rubocop:disable Metrics/AbcSize def attributes SearchQueryService::Attributes.new( aod: aod, @@ -42,6 +43,8 @@ def attributes overtime: query_row["overtime"], pact: pact_status, paper_case: false, + readable_hearing_request_type: readable_hearing_request_type, + readable_original_hearing_request_type: readable_original_hearing_request_type, status: queried_appeal.status, type: stream_type, veteran_appellant_deceased: veteran_appellant_deceased, @@ -50,6 +53,7 @@ def attributes withdrawn: withdrawn ) end + # rubocop:enable Metrics/AbcSize # rubocop:enable Metrics/MethodLength def aod @@ -151,6 +155,14 @@ def mst_status end end + def readable_original_hearing_request_type + queried_appeal.readable_original_hearing_request_type + end + + def readable_hearing_request_type + queried_appeal.readable_current_hearing_request_type + end + def queried_appeal @queried_appeal ||= begin appeal_attrs, = JSON.parse query_row["appeal"] diff --git a/app/services/search_query_service/attributes.rb b/app/services/search_query_service/attributes.rb index 6c4487a9b1e..3a61dd2074c 100644 --- a/app/services/search_query_service/attributes.rb +++ b/app/services/search_query_service/attributes.rb @@ -19,6 +19,8 @@ :overtime, :pact, :paper_case, + :readable_hearing_request_type, + :readable_original_hearing_request_type, :status, :type, :veteran_appellant_deceased, diff --git a/app/services/search_query_service/legacy_appeal_row.rb b/app/services/search_query_service/legacy_appeal_row.rb index b9dfe0af476..22b5e52cd07 100644 --- a/app/services/search_query_service/legacy_appeal_row.rb +++ b/app/services/search_query_service/legacy_appeal_row.rb @@ -41,6 +41,8 @@ def attributes overtime: search_row["overtime"], pact: pact, paper_case: paper_case, + readable_hearing_request_type: readable_hearing_request_type, + readable_original_hearing_request_type: readable_original_hearing_request_type, status: status, type: stream_type, veteran_appellant_deceased: veteran_appellant_deceased, @@ -155,6 +157,14 @@ def decision_date AppealRepository.normalize_vacols_date(vacols_row["bfddec"]) end + def readable_original_hearing_request_type + legacy_appeal.readable_original_hearing_request_type + end + + def readable_hearing_request_type + legacy_appeal.readable_current_hearing_request_type + end + def legacy_appeal @legacy_appeal ||= begin appeal_attrs, = JSON.parse search_row["appeal"] diff --git a/app/services/search_query_service/legacy_attributes.rb b/app/services/search_query_service/legacy_attributes.rb index 5ac4e1439bd..7d67a0db664 100644 --- a/app/services/search_query_service/legacy_attributes.rb +++ b/app/services/search_query_service/legacy_attributes.rb @@ -17,6 +17,8 @@ :overtime, :pact, :paper_case, + :readable_hearing_request_type, + :readable_original_hearing_request_type, :status, :type, :veteran_appellant_deceased, diff --git a/app/services/search_query_service/queried_hearing.rb b/app/services/search_query_service/queried_hearing.rb index e179866f95b..178d6591488 100644 --- a/app/services/search_query_service/queried_hearing.rb +++ b/app/services/search_query_service/queried_hearing.rb @@ -20,9 +20,11 @@ def judge def hearing_views @hearing_views ||= - views_attributes.map do |view_attrs| - HearingView.new.tap do |v| - v.assign_attributes view_attrs + if views_attributes.present? + views_attributes.map do |view_attrs| + HearingView.new.tap do |v| + v.assign_attributes view_attrs + end end end end @@ -32,20 +34,26 @@ def readable_request_type end def hearing_day - @hearing_day ||= HearingDay.new.tap do |hd| - hd.assign_attributes hearing_day_attributes - end + @hearing_day ||= + if hearing_day_attributes.present? + HearingDay.new.tap do |hd| + hd.assign_attributes hearing_day_attributes + end + end end def updated_by - @updated_by ||= User.new.tap do |u| - u.assign_attributes updated_by_attributes - end + @updated_by ||= + if updated_by_attributes.present? + User.new.tap do |u| + u.assign_attributes updated_by_attributes + end + end end def virtual? %w(pending active closed).include?( - virtual_hearing.status + virtual_hearing&.status ) end @@ -69,9 +77,12 @@ def regional_office_timezone end def virtual_hearing - @virtual_hearing ||= VirtualHearing.new.tap do |vh| - vh.assign_attributes virtual_hearing_attributes - end + @virtual_hearing ||= + if virtual_hearing_attributes.present? + VirtualHearing.new.tap do |vh| + vh.assign_attributes virtual_hearing_attributes + end + end end def hearing diff --git a/spec/services/search_query_service_spec.rb b/spec/services/search_query_service_spec.rb index b9d87a7a29c..7d215ab7538 100644 --- a/spec/services/search_query_service_spec.rb +++ b/spec/services/search_query_service_spec.rb @@ -39,11 +39,13 @@ let(:appeal_attributes) do { aod_based_on_age: false, + changed_hearing_request_type: "V", + original_hearing_request_type: "central", stream_docket_number: docket_number, - veteran_file_number: ssn, - veteran: veteran, stream_type: Constants.AMA_STREAM_TYPES.original, - uuid: uuid + uuid: uuid, + veteran: veteran, + veteran_file_number: ssn } end @@ -70,13 +72,6 @@ mst_status: true, pact_status: true ) - create( - :virtual_hearing, - hearing: appeal.hearings.first - ) - appeal.hearings.first.update(updated_by: judge) - appeal.hearings.first.hearing_day.update(regional_office: "RO19") - appeal.hearings.first.hearing_views.create(user_id: judge.id) # create work mode appeal.overtime = true AdvanceOnDocketMotion.create( @@ -90,6 +85,14 @@ subject { SearchQueryService.new(docket_number: appeal.stream_docket_number) } it "finds by docket number" do + create( + :virtual_hearing, + hearing: appeal.hearings.first + ) + appeal.hearings.first.update(updated_by: judge) + appeal.hearings.first.hearing_day.update(regional_office: "RO19") + appeal.hearings.first.hearing_views.create(user_id: judge.id) + expect(appeal).to be_persisted search_results = subject.search_by_docket_number @@ -117,6 +120,8 @@ expect(attributes.mst).to eq appeal.decision_issues.any?(&:mst_status) expect(attributes.pact).to eq appeal.decision_issues.any?(&:pact_status) expect(attributes.paper_case).to be_falsy + expect(attributes.readable_hearing_request_type).to eq("Video") + expect(attributes.readable_original_hearing_request_type).to eq("Central") expect(attributes.status).to eq Appeal.find(appeal.id).status.status expect(attributes.veteran_appellant_deceased).to be_falsy expect(attributes.veteran_file_number).to eq ssn @@ -124,6 +129,14 @@ expect(attributes.contested_claim).to be_falsy expect(attributes.withdrawn).to eq(false) end + + it "finds by docket number with not all hearing values" do + expect(appeal).to be_persisted + + search_results = subject.search_by_docket_number + + expect(search_results.length).to eq(1) + end end context "finds by file number" do