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
|