diff --git a/app/components/assigned_volunteers_component.html.erb b/app/components/assigned_volunteers_component.html.erb deleted file mode 100644 index 15e6abf62c..0000000000 --- a/app/components/assigned_volunteers_component.html.erb +++ /dev/null @@ -1,9 +0,0 @@ -<% unless @current_user.volunteer? %> - - <% if @casa_case.assigned_volunteers.present? %> - <%= @casa_case.assigned_volunteers.map(&:display_name).join(", ") %> - <% else %> - Unassigned - <% end %> - -<% end %> diff --git a/app/components/assigned_volunteers_component.rb b/app/components/assigned_volunteers_component.rb deleted file mode 100644 index 2bfe283fef..0000000000 --- a/app/components/assigned_volunteers_component.rb +++ /dev/null @@ -1,6 +0,0 @@ -class AssignedVolunteersComponent < ViewComponent::Base - def initialize(casa_case, current_user) - @casa_case = casa_case - @current_user = current_user - end -end diff --git a/app/helpers/ui_helper.rb b/app/helpers/ui_helper.rb index 9573d91d9e..ece7e79bb4 100644 --- a/app/helpers/ui_helper.rb +++ b/app/helpers/ui_helper.rb @@ -1,4 +1,6 @@ module UiHelper + include VolunteerHelper + def grouped_options_for_assigning_case(volunteer) [ [ @@ -6,14 +8,14 @@ def grouped_options_for_assigning_case(volunteer) CasaCase .not_assigned(@volunteer.casa_org).active .uniq { |casa_case| casa_case.case_number } - .map { |casa_case| ["#{casa_case.case_number} - #{render AssignedVolunteersComponent.new(casa_case, current_user)}".html_safe, casa_case.id] } + .map { |casa_case| ["#{casa_case.case_number} - #{volunteer_badge(casa_case, current_user)}".html_safe, casa_case.id] } ], [ "Assigned", CasaCase .actively_assigned_excluding_volunteer(@volunteer) .uniq { |casa_case| casa_case.case_number } - .map { |casa_case| ["#{casa_case.case_number} - #{render AssignedVolunteersComponent.new(casa_case, current_user)}".html_safe, casa_case.id] } + .map { |casa_case| ["#{casa_case.case_number} - #{volunteer_badge(casa_case, current_user)}".html_safe, casa_case.id] } ] ] end diff --git a/app/helpers/volunteer_helper.rb b/app/helpers/volunteer_helper.rb new file mode 100644 index 0000000000..c4e0d70f9d --- /dev/null +++ b/app/helpers/volunteer_helper.rb @@ -0,0 +1,13 @@ +module VolunteerHelper + def volunteer_badge(casa_case, current_user) + return "" if current_user.volunteer? + + badge_content = if casa_case.assigned_volunteers.present? + casa_case.assigned_volunteers.map(&:display_name).join(", ") + else + "Unassigned" + end + + content_tag(:span, badge_content, class: "badge badge-pill light-bg text-black fs-6 fw-medium") + end +end diff --git a/app/views/casa_cases/show.html.erb b/app/views/casa_cases/show.html.erb index 9a7cdb1488..2ecda6293c 100644 --- a/app/views/casa_cases/show.html.erb +++ b/app/views/casa_cases/show.html.erb @@ -37,7 +37,7 @@ class: "btn btn-primary pull-left casa-case-button") %> <% end %>

Case number: <%= @casa_case.case_number %> - <%= render AssignedVolunteersComponent.new(@casa_case, current_user) %> + <%= volunteer_badge(@casa_case, current_user) %>

<% if @casa_case.hearing_type %> diff --git a/app/views/case_groups/_form.html.erb b/app/views/case_groups/_form.html.erb index dd746ab37a..125957f11f 100644 --- a/app/views/case_groups/_form.html.erb +++ b/app/views/case_groups/_form.html.erb @@ -26,7 +26,7 @@ <%= form.label :casa_case_ids, 'Cases' %> <%= form.select( :casa_case_ids, - current_organization.casa_cases.map { |casa_case| [sanitize("#{casa_case.case_number} - #{render AssignedVolunteersComponent.new(casa_case, current_user) }"), casa_case.id] }, + current_organization.casa_cases.map { |casa_case| [sanitize("#{casa_case.case_number} - #{volunteer_badge(casa_case, current_user)}"), casa_case.id] }, { include_hidden: false, autocomplete: "off" }, { class: "form-control", multiple: true, data: { "multiple-select-target": "select" } diff --git a/app/views/case_groups/index.html.erb b/app/views/case_groups/index.html.erb index 7c4bd3df90..dc4949992c 100644 --- a/app/views/case_groups/index.html.erb +++ b/app/views/case_groups/index.html.erb @@ -42,7 +42,7 @@ <% case_group.casa_cases.each do |casa_case| %>
  • <%= link_to casa_case.case_number, casa_case_path(casa_case) %> - <%= render AssignedVolunteersComponent.new(casa_case, current_user) %> + <%= volunteer_badge(casa_case, current_user) %>
  • <% end %> diff --git a/app/views/volunteers/_manage_cases.erb b/app/views/volunteers/_manage_cases.erb index c448921af6..63810dd28a 100644 --- a/app/views/volunteers/_manage_cases.erb +++ b/app/views/volunteers/_manage_cases.erb @@ -20,7 +20,7 @@ <%= link_to assignment.casa_case.case_number, casa_case_path(assignment.casa_case) %> - <%= render AssignedVolunteersComponent.new(assignment.casa_case, current_user) %> + <%= volunteer_badge(assignment.casa_case, current_user) %> <%= assignment.casa_case.decorate.transition_aged_youth %> diff --git a/spec/components/assigned_volunteers_component_spec.rb b/spec/components/assigned_volunteers_component_spec.rb deleted file mode 100644 index fa5079dfc9..0000000000 --- a/spec/components/assigned_volunteers_component_spec.rb +++ /dev/null @@ -1,38 +0,0 @@ -# frozen_string_literal: true - -require "rails_helper" - -RSpec.describe AssignedVolunteersComponent, type: :component do - let(:casa_case) { create(:casa_case) } - let(:current_user) { create(:user) } - - context "when user is not a volunteer" do - it "renders assigned volunteers" do - volunteer = create(:volunteer) - casa_case.volunteers << volunteer - - component = described_class.new(casa_case, current_user) - render_inline(component) - - expect(page).to have_selector("span.badge", text: volunteer.display_name) - end - - it "renders 'Unassigned' when no volunteers present" do - component = described_class.new(casa_case, current_user) - render_inline(component) - - expect(page).to have_selector("span.badge", text: "Unassigned") - end - end - - context "when user is a volunteer" do - let(:current_user) { create(:volunteer) } - - it "does not render badge" do - component = described_class.new(casa_case, current_user) - render_inline(component) - - expect(page).not_to have_selector("span.badge") - end - end -end diff --git a/spec/helpers/volunteer_helper_spec.rb b/spec/helpers/volunteer_helper_spec.rb new file mode 100644 index 0000000000..5eae5bfd85 --- /dev/null +++ b/spec/helpers/volunteer_helper_spec.rb @@ -0,0 +1,37 @@ +# frozen_string_literal: true + +require "rails_helper" + +RSpec.describe VolunteerHelper, type: :helper do + let(:casa_case) { create(:casa_case) } + let(:current_user) { create(:user) } + + context "when user is not a volunteer" do + it "returns the assigned volunteers' names" do + volunteer = create(:volunteer) + casa_case.volunteers << volunteer + + badge_html = helper.volunteer_badge(casa_case, current_user) + + expect(badge_html).to include("badge") + expect(badge_html).to include(volunteer.display_name) + end + + it "returns 'Unassigned' when no volunteers are present" do + badge_html = helper.volunteer_badge(casa_case, current_user) + + expect(badge_html).to include("badge") + expect(badge_html).to include("Unassigned") + end + end + + context "when user is a volunteer" do + let(:current_user) { create(:volunteer) } + + it "returns an empty string" do + badge_html = helper.volunteer_badge(casa_case, current_user) + + expect(badge_html).to eq("") + end + end +end