From 1362d802664b4df98ee92fc9aaecf021e19cb7e8 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Thu, 17 Oct 2024 14:21:52 -0500 Subject: [PATCH 01/18] added controller actions and routes --- app/controllers/saved_searches_controller.rb | 24 ++++++++++++++++++++ config/routes.rb | 4 ++++ 2 files changed, 28 insertions(+) create mode 100644 app/controllers/saved_searches_controller.rb diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb new file mode 100644 index 00000000000..eadce71e6d9 --- /dev/null +++ b/app/controllers/saved_searches_controller.rb @@ -0,0 +1,24 @@ +class SavedSearchesController < ApplicationController + include ValidationConcern + + before_action :verify_access + + + def index + end + + def show + end + + def create + end + + def destroy + end + + private + + def verify_access + verify_authorized_roles("Mail Intake", "Admin Intake") + end +end diff --git a/config/routes.rb b/config/routes.rb index 08c5c46e53f..4b42a1d7cc8 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -334,7 +334,11 @@ patch "/messages/:id", to: "inbox#update" end + resources :saved_searches, only: [:index] resources :users, only: [:index, :update] do + resources :saved_searches, only: [:create, :destroy] + resource :saved_searches, only: [:show] + resources :task_pages, only: [:index], controller: 'users/task_pages' get 'represented_organizations', on: :member end From e2a783aca511843958dd43d8ade5ddb632a78e47 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Mon, 21 Oct 2024 12:11:38 -0400 Subject: [PATCH 02/18] added action logic --- app/controllers/saved_searches_controller.rb | 33 +++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index eadce71e6d9..a98faebe16b 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -3,6 +3,12 @@ class SavedSearchesController < ApplicationController before_action :verify_access + PERMITTED_PARAMS = { + :name, + :description, + :user_id, + saved_search: {} + } def index end @@ -11,14 +17,39 @@ def show end def create + @search = current_user.saved_searches.new(save_search_create_params) + return render json: { message: "Search has been successfully created" }, status: :created if @search.save + render json: { message: "Error creating save search" }, status: :unprocessable_entity end def destroy + @search = current_user.saved_searches.find(id: params[:id]) + @search.destroy! + render(json: { status: :no_content }) end private + def business_line + @business_line ||= BusinessLine.find_by(url: params[:business_line_slug]) + end + + def save_search_create_params + params.require(:search).permit(PERMITTED_PARAMS) + end + def verify_access - verify_authorized_roles("Mail Intake", "Admin Intake") + return false unless business_line + return true if current_user.admin? + return true if current_user.can?("Admin Intake") + return true if business_line.user_has_access?(current_user) + + Rails.logger.info("User with roles #{current_user.roles.join(', ')} "\ + "couldn't access #{request.original_url}") + + session["return_to"] = request.original_url + redirect_to "/unauthorized" + # verify_authorized_roles("Mail Intake", "Admin Intake") + # return true if business_line.user_has_access?(current_user) end end From abda93f13d3766bb00eac3ae422527a06606e57d Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Mon, 21 Oct 2024 03:17:48 -0600 Subject: [PATCH 03/18] adding index for the controller, modificaiton in the routes and serializer --- app/controllers/saved_searches_controller.rb | 43 ++++++++++++++++--- app/models/saved_search.rb | 4 ++ app/serializers/saved_search_serializer.rb | 19 ++++++++ app/views/saved_searches/index.html.erb | 15 +++++++ config/routes.rb | 7 +-- .../saved_search_controller_spec.rb | 4 ++ 6 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 app/serializers/saved_search_serializer.rb create mode 100644 app/views/saved_searches/index.html.erb create mode 100644 spec/controllers/saved_search_controller_spec.rb diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index a98faebe16b..129bd56444e 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,19 +1,19 @@ class SavedSearchesController < ApplicationController include ValidationConcern - before_action :verify_access + before_action :verify_access, :react_routed - PERMITTED_PARAMS = { + PERMITTED_PARAMS = [ :name, :description, - :user_id, saved_search: {} - } + ].freeze def index - end - - def show + respond_to do |format| + format.html { render "index" } + format.json { render_saved_search_tab } + end end def create @@ -38,6 +38,13 @@ def save_search_create_params params.require(:search).permit(PERMITTED_PARAMS) end + def allowed_params + params.permit( + :business_line_slug, + :tab + ) + end + def verify_access return false unless business_line return true if current_user.admin? @@ -52,4 +59,26 @@ def verify_access # verify_authorized_roles("Mail Intake", "Admin Intake") # return true if business_line.user_has_access?(current_user) end + + def render_saved_search_tab + tab_name = allowed_params[:tab] + searches = case tab_name + when "my_saved_searches" then SavedSearch.my_saved_searches(current_user) + when "all_saved_searches" then SavedSearch.all_saved_searches + when nil + return missing_tab_parameter_error + else + return unrecognized_tab_name_error + end + + render json: SavedSearchSerializer.new(searches) + end + + def missing_tab_parameter_error + render json: { error: "'tab' parameter is required." }, status: :bad_request + end + + def unrecognized_tab_name_error + render json: { error: "Tab name provided could not be found" }, status: :not_found + end end diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 44ad6f20604..dd205643fa0 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -7,6 +7,10 @@ class SavedSearch < CaseflowRecord validates :description, presence: true, length: { maximum: 1000 } validate :saved_search_limit + scope :all_saved_searches, -> { order(created_at: :desc) } + + scope :my_saved_searches, ->(user) { where(user_id: user).order(created_at: :desc) } + private def saved_search_limit diff --git a/app/serializers/saved_search_serializer.rb b/app/serializers/saved_search_serializer.rb new file mode 100644 index 00000000000..2f344b5f540 --- /dev/null +++ b/app/serializers/saved_search_serializer.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +class SavedSearchSerializer + include FastJsonapi::ObjectSerializer + + attribute :name + attribute :description + attribute :saved_search + attribute :createdAt, &:created_at + attribute :userCssId do |object| + object.user.css_id + end + attribute :userFullName do |object| + object.user.full_name + end + attribute :userId do |object| + object.user.id + end +end diff --git a/app/views/saved_searches/index.html.erb b/app/views/saved_searches/index.html.erb new file mode 100644 index 00000000000..af39cb940ef --- /dev/null +++ b/app/views/saved_searches/index.html.erb @@ -0,0 +1,15 @@ +<% content_for :full_page_content do %> + <%= react_component("NonComp", props: { + userDisplayName: current_user.display_name, + dropdownUrls: dropdown_urls, + applicationUrls: application_urls, + feedbackUrl: feedback_url, + buildDate: build_date, + flash: flash, + serverNonComp: { + currentUserCssId: current_user.css_id, + }, + savedSearches: { + } + }) %> +<% end %> diff --git a/config/routes.rb b/config/routes.rb index 4b42a1d7cc8..98345fd523a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -313,7 +313,7 @@ end end get "report", to: "decision_reviews#generate_report", on: :member, as: :report, format: false - get "report/searches", to: "decision_reviews#generate_report", on: :member, as: :saved_searches, format: false + get "report/searches", to: "saved_searches#index" get "/(*all)", to: "decision_reviews#index" end @@ -334,11 +334,8 @@ patch "/messages/:id", to: "inbox#update" end - resources :saved_searches, only: [:index] + resources :saved_searches, only: [:create, :destroy] resources :users, only: [:index, :update] do - resources :saved_searches, only: [:create, :destroy] - resource :saved_searches, only: [:show] - resources :task_pages, only: [:index], controller: 'users/task_pages' get 'represented_organizations', on: :member end diff --git a/spec/controllers/saved_search_controller_spec.rb b/spec/controllers/saved_search_controller_spec.rb new file mode 100644 index 00000000000..26d99e7cae8 --- /dev/null +++ b/spec/controllers/saved_search_controller_spec.rb @@ -0,0 +1,4 @@ +# frozen_string_literal: true + +describe SavedSearchesController, :postgres, type: :controller do +end From e94b7ea628c5fa7b4fc1761674e2b6d4ba373709 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Tue, 22 Oct 2024 13:53:22 -0400 Subject: [PATCH 04/18] added spes tests --- app/controllers/saved_searches_controller.rb | 4 +- .../saved_search_controller_spec.rb | 4 -- .../saved_searches_controller_spec.rb | 62 +++++++++++++++++++ 3 files changed, 64 insertions(+), 6 deletions(-) delete mode 100644 spec/controllers/saved_search_controller_spec.rb create mode 100644 spec/controllers/saved_searches_controller_spec.rb diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index 129bd56444e..6fee4a639c3 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -23,9 +23,9 @@ def create end def destroy - @search = current_user.saved_searches.find(id: params[:id]) + @search = current_user.saved_searches.find(params[:id]) @search.destroy! - render(json: { status: :no_content }) + render json: { status: :ok } end private diff --git a/spec/controllers/saved_search_controller_spec.rb b/spec/controllers/saved_search_controller_spec.rb deleted file mode 100644 index 26d99e7cae8..00000000000 --- a/spec/controllers/saved_search_controller_spec.rb +++ /dev/null @@ -1,4 +0,0 @@ -# frozen_string_literal: true - -describe SavedSearchesController, :postgres, type: :controller do -end diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb new file mode 100644 index 00000000000..5493665eb57 --- /dev/null +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -0,0 +1,62 @@ +# frozen_string_literal: true + +describe SavedSearchesController, :postgres, type: :controller do + let(:user) { create(:user, :admin_intake_role, :with_saved_search_reports)} + let(:saved_search) { create(:saved_search, user: user) } + + before do + User.stub = user + end + + describe "#create" do + let(:valid_params) do + { + search: { + name: Faker::Name.name, + description: Faker::Lorem.sentence, + saved_search: { + report_type: "event_type_action", + events: { + "0": "added_issue_no_decision_date" + }, + timing: { + range: "last_7_days" + }, + decision_review_type: { + "0": "HigherLevelReview", "1": "SupplementalClaim" + }, + business_line_slug: "vha" + } + } + } + end + + context "VHA user creating saved search" do + it "should create search" do + expect{ + post :create, params: valid_params + }.to change(SavedSearch, :count).by(1) + + expect(response).to have_http_status(:created) + end + end + end + + describe "#destory /saved_searches/:id" do + context "VHA user saved search exists" do + it "should delete search" do + delete :destroy, params: { id: user.saved_searches.first.id } + + expect(response).to have_http_status(:ok) + end + end + + context "VHA user saved search not exists" do + it "retunrs a not found error" do + delete :destroy, params: { id: 0} + + expect(response).to have_http_status(:not_found) + end + end + end +end From 359e86946fa6d38d8b0d3758703e37560d4b3c84 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Tue, 22 Oct 2024 12:56:02 -0600 Subject: [PATCH 05/18] spec for index, show and controller --- app/controllers/saved_searches_controller.rb | 68 +++++++--------- client/app/nonComp/pages/SavedSearches.jsx | 4 +- client/test/data/nonComp/savedSearchesData.js | 5 +- config/routes.rb | 4 +- .../saved_searches_controller_spec.rb | 77 ++++++++++++++++++- 5 files changed, 110 insertions(+), 48 deletions(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index 6fee4a639c3..61b41a06d2f 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,7 +1,9 @@ +# frozen_string_literal: true + class SavedSearchesController < ApplicationController include ValidationConcern - before_action :verify_access, :react_routed + before_action :react_routed, :verify_vha_admin PERMITTED_PARAMS = [ :name, @@ -10,15 +12,31 @@ class SavedSearchesController < ApplicationController ].freeze def index + searches = SavedSearch.all_saved_searches + my_search = SavedSearch.my_saved_searches(current_user) respond_to do |format| format.html { render "index" } - format.json { render_saved_search_tab } + format.json do + render json: + { all_searches: SavedSearchSerializer.new(searches).serializable_hash[:data], + user_searches: SavedSearchSerializer.new(my_search).serializable_hash[:data] } + end + end + end + + def show + search = SavedSearch.find_by_id(params[:id]) + respond_to do |format| + format.html { render "show" } + format.json { render json: SavedSearchSerializer.new(search).serializable_hash[:data] } end end def create @search = current_user.saved_searches.new(save_search_create_params) - return render json: { message: "Search has been successfully created" }, status: :created if @search.save + + return render json: { message: "Search has been successfully created" }, status: :created if @search.save + render json: { message: "Error creating save search" }, status: :unprocessable_entity end @@ -30,55 +48,21 @@ def destroy private - def business_line - @business_line ||= BusinessLine.find_by(url: params[:business_line_slug]) - end - def save_search_create_params params.require(:search).permit(PERMITTED_PARAMS) end - def allowed_params - params.permit( - :business_line_slug, - :tab - ) - end + def verify_vha_admin + return true if current_user.vha_business_line_admin_user? - def verify_access - return false unless business_line - return true if current_user.admin? - return true if current_user.can?("Admin Intake") - return true if business_line.user_has_access?(current_user) + redirect_to_unauthorized + end + def redirect_to_unauthorized Rails.logger.info("User with roles #{current_user.roles.join(', ')} "\ "couldn't access #{request.original_url}") session["return_to"] = request.original_url redirect_to "/unauthorized" - # verify_authorized_roles("Mail Intake", "Admin Intake") - # return true if business_line.user_has_access?(current_user) - end - - def render_saved_search_tab - tab_name = allowed_params[:tab] - searches = case tab_name - when "my_saved_searches" then SavedSearch.my_saved_searches(current_user) - when "all_saved_searches" then SavedSearch.all_saved_searches - when nil - return missing_tab_parameter_error - else - return unrecognized_tab_name_error - end - - render json: SavedSearchSerializer.new(searches) - end - - def missing_tab_parameter_error - render json: { error: "'tab' parameter is required." }, status: :bad_request - end - - def unrecognized_tab_name_error - render json: { error: "Tab name provided could not be found" }, status: :not_found end end diff --git a/client/app/nonComp/pages/SavedSearches.jsx b/client/app/nonComp/pages/SavedSearches.jsx index 7a76eda0264..dfff745182a 100644 --- a/client/app/nonComp/pages/SavedSearches.jsx +++ b/client/app/nonComp/pages/SavedSearches.jsx @@ -18,7 +18,7 @@ const SavedSearches = () => { const ALL_TABS = [ { - key: 'my_saved_searches', + key: 'my_saved', label: 'My saved searches', // this section will later changed to backend call page: { /> }, { - key: 'all_saved_searches', + key: 'all_saved', label: 'All saved searches', page: Date: Tue, 22 Oct 2024 14:51:16 -0600 Subject: [PATCH 06/18] fixing the linter and frontend error --- client/app/nonComp/pages/SavedSearches.jsx | 4 ++-- spec/controllers/saved_searches_controller_spec.rb | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/client/app/nonComp/pages/SavedSearches.jsx b/client/app/nonComp/pages/SavedSearches.jsx index dfff745182a..17d6d6b4ab5 100644 --- a/client/app/nonComp/pages/SavedSearches.jsx +++ b/client/app/nonComp/pages/SavedSearches.jsx @@ -22,7 +22,7 @@ const SavedSearches = () => { label: 'My saved searches', // this section will later changed to backend call page: rows.userCssId === currentUserCssId)} + eventRows={savedSearchesData.savedSearches.all.filter((rows) => rows.userCssId === currentUserCssId)} searchPageApiEndPoint /> }, @@ -30,7 +30,7 @@ const SavedSearches = () => { key: 'all_saved', label: 'All saved searches', page: } diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb index 49aa4b4b669..4ac786cda5c 100644 --- a/spec/controllers/saved_searches_controller_spec.rb +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true describe SavedSearchesController, :postgres, type: :controller do - let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports)} + let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports) } let(:saved_search) { create(:saved_search, user: user) } let(:default_user) { create(:user) } @@ -37,9 +37,8 @@ context "VHA user creating saved search" do it "should create search" do - expect{ - post :create, params: valid_params - }.to change(SavedSearch, :count).by(1) + expect { post :create, params: valid_params } + .to change(SavedSearch, :count).by(1) expect(response).to have_http_status(:created) end @@ -57,7 +56,7 @@ context "VHA user saved search not exists" do it "retunrs a not found error" do - delete :destroy, params: { id: 0} + delete :destroy, params: { id: 0 } expect(response).to have_http_status(:not_found) end From 1f2bc1b915de349f1a9f609ab5e8162f0d07c8d5 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Tue, 22 Oct 2024 18:12:20 -0600 Subject: [PATCH 07/18] serializer spec for saved_search --- .../saved_search_serializer_spec.rb | 30 +++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 spec/models/serializers/saved_search_serializer_spec.rb diff --git a/spec/models/serializers/saved_search_serializer_spec.rb b/spec/models/serializers/saved_search_serializer_spec.rb new file mode 100644 index 00000000000..8dd0783b8b6 --- /dev/null +++ b/spec/models/serializers/saved_search_serializer_spec.rb @@ -0,0 +1,30 @@ +# frozen_string_literal: true + +describe SavedSearchSerializer, :postgres do + describe "#as_json" do + let(:user) { create(:user, :vha_admin_user) } + let(:saved_search) do + create( + :saved_search, + user: user, + name: "my_first_search", + description: "my first search", + saved_search: "{report_type: 'event_type_action'}") + end + + subject { described_class.new(saved_search) } + + it "renders saved search data" do + serializable_hash = { + name: "my_first_search", + description: "my first search", + saved_search: "{report_type: 'event_type_action'}", + createdAt: saved_search.created_at, + userCssId: user.css_id, + userFullName: user.full_name, + userId: user.id + } + expect(subject.serializable_hash[:data][:attributes]).to eq(serializable_hash) + end + end +end From 05602dadf2fda51d8796b751d37a50d5c6dc8547 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Wed, 23 Oct 2024 01:10:29 -0600 Subject: [PATCH 08/18] linter fix --- spec/models/serializers/saved_search_serializer_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/models/serializers/saved_search_serializer_spec.rb b/spec/models/serializers/saved_search_serializer_spec.rb index 8dd0783b8b6..3b9757d31a3 100644 --- a/spec/models/serializers/saved_search_serializer_spec.rb +++ b/spec/models/serializers/saved_search_serializer_spec.rb @@ -9,7 +9,8 @@ user: user, name: "my_first_search", description: "my first search", - saved_search: "{report_type: 'event_type_action'}") + saved_search: "{report_type: 'event_type_action'}" + ) end subject { described_class.new(saved_search) } From 010e3c8dbede00c83f0c898bba729e204bc0c033 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Wed, 23 Oct 2024 07:12:37 -0600 Subject: [PATCH 09/18] adding show template --- app/views/saved_searches/show.html.erb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 app/views/saved_searches/show.html.erb diff --git a/app/views/saved_searches/show.html.erb b/app/views/saved_searches/show.html.erb new file mode 100644 index 00000000000..af39cb940ef --- /dev/null +++ b/app/views/saved_searches/show.html.erb @@ -0,0 +1,15 @@ +<% content_for :full_page_content do %> + <%= react_component("NonComp", props: { + userDisplayName: current_user.display_name, + dropdownUrls: dropdown_urls, + applicationUrls: application_urls, + feedbackUrl: feedback_url, + buildDate: build_date, + flash: flash, + serverNonComp: { + currentUserCssId: current_user.css_id, + }, + savedSearches: { + } + }) %> +<% end %> From 1db4af52acd6e64c0021623bf2a0002f80796e78 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Thu, 24 Oct 2024 13:34:21 -0400 Subject: [PATCH 10/18] renamed saved search factory file --- spec/factories/{saved_searches.rb => saved_search.rb} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename spec/factories/{saved_searches.rb => saved_search.rb} (100%) diff --git a/spec/factories/saved_searches.rb b/spec/factories/saved_search.rb similarity index 100% rename from spec/factories/saved_searches.rb rename to spec/factories/saved_search.rb From b91c2ff919e4647e493cf138f6795c52f76c7575 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:34:19 -0400 Subject: [PATCH 11/18] made changes to PR feedback --- app/controllers/saved_searches_controller.rb | 31 +++++++++++-------- app/models/saved_search.rb | 5 ++- app/serializers/saved_search_serializer.rb | 6 ++-- client/app/nonComp/pages/SavedSearches.jsx | 8 ++--- client/test/data/nonComp/savedSearchesData.js | 5 +-- 5 files changed, 28 insertions(+), 27 deletions(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index 61b41a06d2f..d9024d9d921 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,9 +1,8 @@ # frozen_string_literal: true class SavedSearchesController < ApplicationController - include ValidationConcern - before_action :react_routed, :verify_vha_admin + before_action :react_routed, :verify_access PERMITTED_PARAMS = [ :name, @@ -12,8 +11,8 @@ class SavedSearchesController < ApplicationController ].freeze def index - searches = SavedSearch.all_saved_searches - my_search = SavedSearch.my_saved_searches(current_user) + searches = organization.users.map(&:saved_search).order(created_at: :desc) + my_search = SavedSearch.for_user(current_user) respond_to do |format| format.html { render "index" } format.json do @@ -25,10 +24,10 @@ def index end def show - search = SavedSearch.find_by_id(params[:id]) + @search = SavedSearch.find_by_id(params[:id]) respond_to do |format| format.html { render "show" } - format.json { render json: SavedSearchSerializer.new(search).serializable_hash[:data] } + format.json { render json: SavedSearchSerializer.new(@search).serializable_hash[:data] } end end @@ -41,21 +40,27 @@ def create end def destroy - @search = current_user.saved_searches.find(params[:id]) - @search.destroy! - render json: { status: :ok } + begin + @search = current_user.saved_searches.find(params[:id]) + @search.destroy! + render json: { status: :ok } + rescue ActiveRecord::RecordNotFound => e + render json: { error: e.to_s }, status: :not_found + end end private + def organization + @organization ||= BusinessLine.find_by(url: params[:business_line_slug]) + end + def save_search_create_params params.require(:search).permit(PERMITTED_PARAMS) end - def verify_vha_admin - return true if current_user.vha_business_line_admin_user? - - redirect_to_unauthorized + def verify_access + return redirect_to_unauthorized if current_user.vha_employee? && !current_user.vha_business_line_admin_user? end def redirect_to_unauthorized diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index dd205643fa0..76d8844d8c2 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -7,9 +7,8 @@ class SavedSearch < CaseflowRecord validates :description, presence: true, length: { maximum: 1000 } validate :saved_search_limit - scope :all_saved_searches, -> { order(created_at: :desc) } - - scope :my_saved_searches, ->(user) { where(user_id: user).order(created_at: :desc) } + # Ex:- scope :active, -> {where(:active => true)} + scope :for_user, ->(user) { where(user: user).order(created_at: :desc) } private diff --git a/app/serializers/saved_search_serializer.rb b/app/serializers/saved_search_serializer.rb index 2f344b5f540..cf3e896aa04 100644 --- a/app/serializers/saved_search_serializer.rb +++ b/app/serializers/saved_search_serializer.rb @@ -5,15 +5,15 @@ class SavedSearchSerializer attribute :name attribute :description - attribute :saved_search + attribute :savedSearch, &:saved_search attribute :createdAt, &:created_at attribute :userCssId do |object| object.user.css_id end attribute :userFullName do |object| - object.user.full_name + object&.user.full_name end attribute :userId do |object| - object.user.id + object&.user.id end end diff --git a/client/app/nonComp/pages/SavedSearches.jsx b/client/app/nonComp/pages/SavedSearches.jsx index 17d6d6b4ab5..7a76eda0264 100644 --- a/client/app/nonComp/pages/SavedSearches.jsx +++ b/client/app/nonComp/pages/SavedSearches.jsx @@ -18,19 +18,19 @@ const SavedSearches = () => { const ALL_TABS = [ { - key: 'my_saved', + key: 'my_saved_searches', label: 'My saved searches', // this section will later changed to backend call page: rows.userCssId === currentUserCssId)} + eventRows={savedSearchesData.savedSearches.rows.filter((rows) => rows.userCssId === currentUserCssId)} searchPageApiEndPoint /> }, { - key: 'all_saved', + key: 'all_saved_searches', label: 'All saved searches', page: } diff --git a/client/test/data/nonComp/savedSearchesData.js b/client/test/data/nonComp/savedSearchesData.js index 92d4e346584..3fd15821b68 100644 --- a/client/test/data/nonComp/savedSearchesData.js +++ b/client/test/data/nonComp/savedSearchesData.js @@ -15,7 +15,7 @@ export default { savedSearches: { status: 'idle', error: null, - all: [ + rows: [ { id: 1, name: 'Search Name', @@ -279,9 +279,6 @@ export default { } } } - ], - my: [ - ], fetchIndividualHistory: { status: 'succeeded' From edc3462cb33dc19c3ed666a159f661c595f63333 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:41:21 -0400 Subject: [PATCH 12/18] changed routes setup --- client/app/nonComp/pages/ReportPage.jsx | 2 +- config/routes.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/client/app/nonComp/pages/ReportPage.jsx b/client/app/nonComp/pages/ReportPage.jsx index 730454f2412..16c605707c4 100644 --- a/client/app/nonComp/pages/ReportPage.jsx +++ b/client/app/nonComp/pages/ReportPage.jsx @@ -413,7 +413,7 @@ const ReportPage = ({ history }) => { >

Generate task report

- View saved searches + View saved searches
diff --git a/config/routes.rb b/config/routes.rb index 1472c79a5e9..4c207d0aff9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -308,6 +308,7 @@ get '/remands(/*path)', to: redirect('/supplemental_claims/%{path}') resources :decision_reviews, param: :business_line_slug do + resources :saved_searches, only: [:index, :create, :destroy, :show] resources :tasks, controller: :decision_reviews, param: :task_id, only: [:show, :update] do member do get :history @@ -337,7 +338,6 @@ patch "/messages/:id", to: "inbox#update" end - resources :saved_searches, only: [:index, :create, :destroy, :show] resources :users, only: [:index, :update] do resources :task_pages, only: [:index], controller: 'users/task_pages' get 'represented_organizations', on: :member From 60c0d757b88c38c3e3fa777af69e8c05efd1092c Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:05:49 -0400 Subject: [PATCH 13/18] fixing spec tests and linting errors --- app/controllers/saved_searches_controller.rb | 11 ++++++----- .../saved_searches_controller_spec.rb | 17 ++++++++++------- .../serializers/saved_search_serializer_spec.rb | 2 +- 3 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index d9024d9d921..21f8cd9c3d8 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -1,7 +1,6 @@ # frozen_string_literal: true class SavedSearchesController < ApplicationController - before_action :react_routed, :verify_access PERMITTED_PARAMS = [ @@ -11,7 +10,9 @@ class SavedSearchesController < ApplicationController ].freeze def index - searches = organization.users.map(&:saved_search).order(created_at: :desc) + # binding.pry + + searches = organization.users.map(&:saved_searches).flatten my_search = SavedSearch.for_user(current_user) respond_to do |format| format.html { render "index" } @@ -44,15 +45,15 @@ def destroy @search = current_user.saved_searches.find(params[:id]) @search.destroy! render json: { status: :ok } - rescue ActiveRecord::RecordNotFound => e - render json: { error: e.to_s }, status: :not_found + rescue ActiveRecord::RecordNotFound => error + render json: { error: error.to_s }, status: :not_found end end private def organization - @organization ||= BusinessLine.find_by(url: params[:business_line_slug]) + @organization ||= BusinessLine.find_by(url: params[:decision_review_business_line_slug]) end def save_search_create_params diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb index 4ac786cda5c..ddeecf4dc05 100644 --- a/spec/controllers/saved_searches_controller_spec.rb +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -1,20 +1,23 @@ # frozen_string_literal: true describe SavedSearchesController, :postgres, type: :controller do - let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports) } + let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports, ) } let(:saved_search) { create(:saved_search, user: user) } + let(:non_comp_org) { VhaBusinessLine.singleton } let(:default_user) { create(:user) } let(:vha_business_line) { VhaBusinessLine.singleton } - let(:options) { { format: :json } } + let(:options) { { format: :json, decision_review_business_line_slug: non_comp_org.url } } before do User.stub = user + non_comp_org.add_user(user) end describe "#create" do let(:valid_params) do { + decision_review_business_line_slug: non_comp_org.url, search: { name: Faker::Name.name, description: Faker::Lorem.sentence, @@ -29,7 +32,7 @@ decision_review_type: { "0": "HigherLevelReview", "1": "SupplementalClaim" }, - business_line_slug: "vha" + decision_review_business_line_slug: "vha" } } } @@ -48,7 +51,7 @@ describe "#destory /saved_searches/:id" do context "VHA user saved search exists" do it "should delete search" do - delete :destroy, params: { id: user.saved_searches.first.id } + delete :destroy, params: { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } expect(response).to have_http_status(:ok) end @@ -56,7 +59,7 @@ context "VHA user saved search not exists" do it "retunrs a not found error" do - delete :destroy, params: { id: 0 } + delete :destroy, params: { id: 0, decision_review_business_line_slug: non_comp_org.url } expect(response).to have_http_status(:not_found) end @@ -95,7 +98,7 @@ subject expect(response.status).to eq 200 - expect(JSON.parse(response.body)["all_searches"].count).to eq(16) + expect(JSON.parse(response.body)["all_searches"].count).to eq(6) expect(JSON.parse(response.body)["user_searches"].count).to eq(5) end end @@ -118,7 +121,7 @@ subject do get :show, - params: { id: saved_search.id, format: :json } + params: { id: saved_search.id, format: :json, decision_review_business_line_slug: non_comp_org.url } end it "returns specific saved search" do diff --git a/spec/models/serializers/saved_search_serializer_spec.rb b/spec/models/serializers/saved_search_serializer_spec.rb index 3b9757d31a3..bfa74e368b4 100644 --- a/spec/models/serializers/saved_search_serializer_spec.rb +++ b/spec/models/serializers/saved_search_serializer_spec.rb @@ -19,7 +19,7 @@ serializable_hash = { name: "my_first_search", description: "my first search", - saved_search: "{report_type: 'event_type_action'}", + savedSearch: "{report_type: 'event_type_action'}", createdAt: saved_search.created_at, userCssId: user.css_id, userFullName: user.full_name, From 28707212f13ce6f2b3ced6479808a49f739bfe90 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Fri, 25 Oct 2024 10:25:08 -0400 Subject: [PATCH 14/18] linting errors --- spec/controllers/saved_searches_controller_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb index ddeecf4dc05..0fc7cc29446 100644 --- a/spec/controllers/saved_searches_controller_spec.rb +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -1,13 +1,13 @@ # frozen_string_literal: true describe SavedSearchesController, :postgres, type: :controller do - let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports, ) } + let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports) } let(:saved_search) { create(:saved_search, user: user) } let(:non_comp_org) { VhaBusinessLine.singleton } let(:default_user) { create(:user) } let(:vha_business_line) { VhaBusinessLine.singleton } - let(:options) { { format: :json, decision_review_business_line_slug: non_comp_org.url } } + let(:options) { { format: :json, decision_review_business_line_slug: non_comp_org.url } } before do User.stub = user @@ -51,7 +51,7 @@ describe "#destory /saved_searches/:id" do context "VHA user saved search exists" do it "should delete search" do - delete :destroy, params: { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } + delete :destroy, params: { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } expect(response).to have_http_status(:ok) end From f762d045711456ede61eda6f87fe7a9574123896 Mon Sep 17 00:00:00 2001 From: almorbah <149511814+almorbah@users.noreply.github.com> Date: Fri, 25 Oct 2024 11:07:15 -0400 Subject: [PATCH 15/18] fixing spec tests --- app/serializers/saved_search_serializer.rb | 4 ++-- client/app/nonComp/pages/ReportPage.jsx | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/serializers/saved_search_serializer.rb b/app/serializers/saved_search_serializer.rb index cf3e896aa04..d69943c4eb6 100644 --- a/app/serializers/saved_search_serializer.rb +++ b/app/serializers/saved_search_serializer.rb @@ -11,9 +11,9 @@ class SavedSearchSerializer object.user.css_id end attribute :userFullName do |object| - object&.user.full_name + object.user.full_name end attribute :userId do |object| - object&.user.id + object.user.id end end diff --git a/client/app/nonComp/pages/ReportPage.jsx b/client/app/nonComp/pages/ReportPage.jsx index 16c605707c4..730454f2412 100644 --- a/client/app/nonComp/pages/ReportPage.jsx +++ b/client/app/nonComp/pages/ReportPage.jsx @@ -413,7 +413,7 @@ const ReportPage = ({ history }) => { >

Generate task report

- View saved searches + View saved searches
From e9c9a48c7d75cc6817666089fba06821d5c3335b Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Fri, 25 Oct 2024 02:48:34 -0600 Subject: [PATCH 16/18] making linter happy --- app/controllers/saved_searches_controller.rb | 2 -- spec/controllers/saved_searches_controller_spec.rb | 3 ++- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index 21f8cd9c3d8..b13a94713d1 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -10,8 +10,6 @@ class SavedSearchesController < ApplicationController ].freeze def index - # binding.pry - searches = organization.users.map(&:saved_searches).flatten my_search = SavedSearch.for_user(current_user) respond_to do |format| diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb index 0fc7cc29446..6bc0553ef33 100644 --- a/spec/controllers/saved_searches_controller_spec.rb +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -8,6 +8,7 @@ let(:default_user) { create(:user) } let(:vha_business_line) { VhaBusinessLine.singleton } let(:options) { { format: :json, decision_review_business_line_slug: non_comp_org.url } } + let(:delete_param) { { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } } before do User.stub = user @@ -51,7 +52,7 @@ describe "#destory /saved_searches/:id" do context "VHA user saved search exists" do it "should delete search" do - delete :destroy, params: { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } + delete :destroy, params: delete_param expect(response).to have_http_status(:ok) end From cd8193095d345fce565638ca515c0b9cc08733f2 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Fri, 25 Oct 2024 07:39:06 -0600 Subject: [PATCH 17/18] fixing the route and pr comments --- app/controllers/saved_searches_controller.rb | 11 +++++++---- app/models/saved_search.rb | 1 - app/serializers/saved_search_serializer.rb | 16 ++++++++-------- app/views/saved_searches/index.html.erb | 3 +++ app/views/saved_searches/show.html.erb | 1 + client/app/nonComp/index.jsx | 2 +- client/app/nonComp/pages/ReportPage.jsx | 2 +- .../__snapshots__/DaysWaiting.test.js.snap | 2 +- config/routes.rb | 2 +- .../saved_searches_controller_spec.rb | 16 +++++++--------- 10 files changed, 30 insertions(+), 26 deletions(-) diff --git a/app/controllers/saved_searches_controller.rb b/app/controllers/saved_searches_controller.rb index b13a94713d1..ca3cb4f2cb7 100644 --- a/app/controllers/saved_searches_controller.rb +++ b/app/controllers/saved_searches_controller.rb @@ -10,11 +10,11 @@ class SavedSearchesController < ApplicationController ].freeze def index - searches = organization.users.map(&:saved_searches).flatten - my_search = SavedSearch.for_user(current_user) respond_to do |format| format.html { render "index" } format.json do + searches = organization.users.includes(:saved_searches).map(&:saved_searches).flatten + my_search = SavedSearch.for_user(current_user) render json: { all_searches: SavedSearchSerializer.new(searches).serializable_hash[:data], user_searches: SavedSearchSerializer.new(my_search).serializable_hash[:data] } @@ -24,9 +24,10 @@ def index def show @search = SavedSearch.find_by_id(params[:id]) + @search_json = SavedSearchSerializer.new(@search).serializable_hash[:data] respond_to do |format| format.html { render "show" } - format.json { render json: SavedSearchSerializer.new(@search).serializable_hash[:data] } + format.json { render json: @search_json } end end @@ -48,10 +49,12 @@ def destroy end end + helper_method :organization + private def organization - @organization ||= BusinessLine.find_by(url: params[:decision_review_business_line_slug]) + @organization ||= Organization.find_by(url: params[:decision_review_business_line_slug]) end def save_search_create_params diff --git a/app/models/saved_search.rb b/app/models/saved_search.rb index 76d8844d8c2..98353ca9110 100644 --- a/app/models/saved_search.rb +++ b/app/models/saved_search.rb @@ -7,7 +7,6 @@ class SavedSearch < CaseflowRecord validates :description, presence: true, length: { maximum: 1000 } validate :saved_search_limit - # Ex:- scope :active, -> {where(:active => true)} scope :for_user, ->(user) { where(user: user).order(created_at: :desc) } private diff --git a/app/serializers/saved_search_serializer.rb b/app/serializers/saved_search_serializer.rb index d69943c4eb6..1d13ef81275 100644 --- a/app/serializers/saved_search_serializer.rb +++ b/app/serializers/saved_search_serializer.rb @@ -7,13 +7,13 @@ class SavedSearchSerializer attribute :description attribute :savedSearch, &:saved_search attribute :createdAt, &:created_at - attribute :userCssId do |object| - object.user.css_id - end - attribute :userFullName do |object| - object.user.full_name - end - attribute :userId do |object| - object.user.id + + attribute :user do |object| + user = object.try(:user) + { + css_id: user.try(:css_id), + full_name: user.try(:full_name), + id: user.id + } end end diff --git a/app/views/saved_searches/index.html.erb b/app/views/saved_searches/index.html.erb index af39cb940ef..97e9b9b133b 100644 --- a/app/views/saved_searches/index.html.erb +++ b/app/views/saved_searches/index.html.erb @@ -7,9 +7,12 @@ buildDate: build_date, flash: flash, serverNonComp: { + businessLine: organization.name, + businessLineUrl: organization.url, currentUserCssId: current_user.css_id, }, savedSearches: { + } }) %> <% end %> diff --git a/app/views/saved_searches/show.html.erb b/app/views/saved_searches/show.html.erb index af39cb940ef..5139095c181 100644 --- a/app/views/saved_searches/show.html.erb +++ b/app/views/saved_searches/show.html.erb @@ -10,6 +10,7 @@ currentUserCssId: current_user.css_id, }, savedSearches: { + @search_json } }) %> <% end %> diff --git a/client/app/nonComp/index.jsx b/client/app/nonComp/index.jsx index c4d5ce981b3..fb61c716cd2 100644 --- a/client/app/nonComp/index.jsx +++ b/client/app/nonComp/index.jsx @@ -59,7 +59,7 @@ class NonComp extends React.PureComponent { /> diff --git a/client/app/nonComp/pages/ReportPage.jsx b/client/app/nonComp/pages/ReportPage.jsx index 730454f2412..88500a7dec7 100644 --- a/client/app/nonComp/pages/ReportPage.jsx +++ b/client/app/nonComp/pages/ReportPage.jsx @@ -413,7 +413,7 @@ const ReportPage = ({ history }) => { >

Generate task report

- View saved searches + View saved searches
diff --git a/client/test/app/nonComp/components/reportPage/__snapshots__/DaysWaiting.test.js.snap b/client/test/app/nonComp/components/reportPage/__snapshots__/DaysWaiting.test.js.snap index 815a7ef8163..12599d592e6 100644 --- a/client/test/app/nonComp/components/reportPage/__snapshots__/DaysWaiting.test.js.snap +++ b/client/test/app/nonComp/components/reportPage/__snapshots__/DaysWaiting.test.js.snap @@ -15,7 +15,7 @@ exports[`DaysWaiting renders correctly 1`] = ` View saved searches diff --git a/config/routes.rb b/config/routes.rb index 4c207d0aff9..d305ec5cec2 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -308,7 +308,7 @@ get '/remands(/*path)', to: redirect('/supplemental_claims/%{path}') resources :decision_reviews, param: :business_line_slug do - resources :saved_searches, only: [:index, :create, :destroy, :show] + resources :searches, controller: :saved_searches, only: [:index, :create, :destroy, :show] resources :tasks, controller: :decision_reviews, param: :task_id, only: [:show, :update] do member do get :history diff --git a/spec/controllers/saved_searches_controller_spec.rb b/spec/controllers/saved_searches_controller_spec.rb index 6bc0553ef33..9de07b97f96 100644 --- a/spec/controllers/saved_searches_controller_spec.rb +++ b/spec/controllers/saved_searches_controller_spec.rb @@ -3,22 +3,20 @@ describe SavedSearchesController, :postgres, type: :controller do let(:user) { create(:user, :vha_admin_user, :with_saved_search_reports) } let(:saved_search) { create(:saved_search, user: user) } - let(:non_comp_org) { VhaBusinessLine.singleton } let(:default_user) { create(:user) } let(:vha_business_line) { VhaBusinessLine.singleton } - let(:options) { { format: :json, decision_review_business_line_slug: non_comp_org.url } } - let(:delete_param) { { id: user.saved_searches.first.id, decision_review_business_line_slug: non_comp_org.url } } + let(:options) { { format: :json, decision_review_business_line_slug: vha_business_line.url } } + let(:delete_param) { { id: user.saved_searches.first.id, decision_review_business_line_slug: vha_business_line.url } } before do User.stub = user - non_comp_org.add_user(user) end describe "#create" do let(:valid_params) do { - decision_review_business_line_slug: non_comp_org.url, + decision_review_business_line_slug: vha_business_line.url, search: { name: Faker::Name.name, description: Faker::Lorem.sentence, @@ -39,7 +37,7 @@ } end - context "VHA user creating saved search" do + context "VHA admin user creating saved search" do it "should create search" do expect { post :create, params: valid_params } .to change(SavedSearch, :count).by(1) @@ -58,9 +56,9 @@ end end - context "VHA user saved search not exists" do + context "VHA admin user saved search not exists" do it "retunrs a not found error" do - delete :destroy, params: { id: 0, decision_review_business_line_slug: non_comp_org.url } + delete :destroy, params: { id: 0, decision_review_business_line_slug: vha_business_line.url } expect(response).to have_http_status(:not_found) end @@ -122,7 +120,7 @@ subject do get :show, - params: { id: saved_search.id, format: :json, decision_review_business_line_slug: non_comp_org.url } + params: { id: saved_search.id, format: :json, decision_review_business_line_slug: vha_business_line.url } end it "returns specific saved search" do From 8009c08f3659f59b5812f900df3b8ce94ba97a44 Mon Sep 17 00:00:00 2001 From: Prajwal Amatya <122557351+pamatyatake2@users.noreply.github.com> Date: Fri, 25 Oct 2024 08:29:51 -0600 Subject: [PATCH 18/18] fixing the failed tests --- app/serializers/saved_search_serializer.rb | 4 ++-- .../test/app/nonComp/__snapshots__/Personnel.test.js.snap | 2 +- .../nonComp/pages/__snapshots__/ReportPage.test.js.snap | 2 +- spec/feature/non_comp/saved_searches_spec.rb | 2 +- spec/models/serializers/saved_search_serializer_spec.rb | 8 +++++--- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/serializers/saved_search_serializer.rb b/app/serializers/saved_search_serializer.rb index 1d13ef81275..d1e22ce08d3 100644 --- a/app/serializers/saved_search_serializer.rb +++ b/app/serializers/saved_search_serializer.rb @@ -11,8 +11,8 @@ class SavedSearchSerializer attribute :user do |object| user = object.try(:user) { - css_id: user.try(:css_id), - full_name: user.try(:full_name), + cssId: user.try(:css_id), + fullName: user.try(:full_name), id: user.id } end diff --git a/client/test/app/nonComp/__snapshots__/Personnel.test.js.snap b/client/test/app/nonComp/__snapshots__/Personnel.test.js.snap index 86d1204c2b3..ba104cef37b 100644 --- a/client/test/app/nonComp/__snapshots__/Personnel.test.js.snap +++ b/client/test/app/nonComp/__snapshots__/Personnel.test.js.snap @@ -15,7 +15,7 @@ exports[`Personnel component renders correctly renders correctly 1`] = ` View saved searches diff --git a/client/test/app/nonComp/pages/__snapshots__/ReportPage.test.js.snap b/client/test/app/nonComp/pages/__snapshots__/ReportPage.test.js.snap index 1d728ee7643..bfdd188f453 100644 --- a/client/test/app/nonComp/pages/__snapshots__/ReportPage.test.js.snap +++ b/client/test/app/nonComp/pages/__snapshots__/ReportPage.test.js.snap @@ -15,7 +15,7 @@ exports[`ReportPage renders correctly renders correctly 1`] = ` View saved searches diff --git a/spec/feature/non_comp/saved_searches_spec.rb b/spec/feature/non_comp/saved_searches_spec.rb index cea7d61ed5d..072099bf978 100644 --- a/spec/feature/non_comp/saved_searches_spec.rb +++ b/spec/feature/non_comp/saved_searches_spec.rb @@ -3,7 +3,7 @@ feature "Saved Searches", :postgres do let(:non_comp_org) { VhaBusinessLine.singleton } let(:user) { create(:default_user, css_id: "REPORT USER", full_name: "Report User") } - let(:vha_saved_searches_url) { "/decision_reviews/vha/report/searches" } + let(:vha_saved_searches_url) { "/decision_reviews/vha/searches" } before do User.stub = user diff --git a/spec/models/serializers/saved_search_serializer_spec.rb b/spec/models/serializers/saved_search_serializer_spec.rb index bfa74e368b4..09c9cfebc5c 100644 --- a/spec/models/serializers/saved_search_serializer_spec.rb +++ b/spec/models/serializers/saved_search_serializer_spec.rb @@ -21,9 +21,11 @@ description: "my first search", savedSearch: "{report_type: 'event_type_action'}", createdAt: saved_search.created_at, - userCssId: user.css_id, - userFullName: user.full_name, - userId: user.id + user: { + cssId: user.css_id, + fullName: user.full_name, + id: user.id + } } expect(subject.serializable_hash[:data][:attributes]).to eq(serializable_hash) end