diff --git a/spec/controllers/followup_reports_controller_spec.rb b/spec/controllers/followup_reports_controller_spec.rb deleted file mode 100644 index 72ae9a7834..0000000000 --- a/spec/controllers/followup_reports_controller_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require "rails_helper" - -RSpec.describe FollowupReportsController, type: :controller do - # TODO: Add tests for FollowupReportsController - - pending "add some tests for FollowupReportsController" -end diff --git a/spec/controllers/mileage_reports_controller_spec.rb b/spec/controllers/mileage_reports_controller_spec.rb deleted file mode 100644 index 93932aaead..0000000000 --- a/spec/controllers/mileage_reports_controller_spec.rb +++ /dev/null @@ -1,7 +0,0 @@ -require "rails_helper" - -RSpec.describe MileageReportsController, type: :controller do - # TODO: Add tests for MileageReportsController - - pending "add some tests for MileageReportsController" -end diff --git a/spec/requests/followup_reports_spec.rb b/spec/requests/followup_reports_spec.rb new file mode 100644 index 0000000000..c54cc43c8d --- /dev/null +++ b/spec/requests/followup_reports_spec.rb @@ -0,0 +1,68 @@ +require "rails_helper" + +RSpec.describe "/followup_reports", type: :request do + before do + travel_to Time.zone.local(2025, 4, 14) + sign_in user + end + + describe "GET /followup_reports" do + context "as casa_admin" do + let(:user) { create(:casa_admin) } + + it "renders a csv file to download" do + get followup_reports_url(format: :csv) + + expect(response).to be_successful + expect( + response.headers["Content-Disposition"] + ).to include 'attachment; filename="followup-report-2025-04-14.csv' + end + + it "includes followup data in csv" do + casa_case = create(:casa_case, casa_org: user.casa_org) + case_contact = create(:case_contact, casa_case: casa_case) + create(:followup, case_contact: case_contact) + + get followup_reports_url(format: :csv) + + expect(response).to be_successful + expect(response.body).to include(casa_case.case_number) + end + end + + context "as supervisor" do + let(:user) { create(:supervisor) } + + it "renders a csv file to download" do + get followup_reports_url(format: :csv) + + expect(response).to be_successful + expect( + response.headers["Content-Disposition"] + ).to include 'attachment; filename="followup-report-2025-04-14.csv' + end + end + + context "as volunteer" do + let(:user) { create(:volunteer) } + + it "cannot view reports" do + get followup_reports_url(format: :csv) + + expect(response).to redirect_to root_path + end + end + + context "when not signed in" do + let(:user) { create(:volunteer) } + + it "redirects to sign in" do + sign_out user + get followup_reports_url(format: :csv) + + expect(response).to redirect_to new_user_session_path + end + end + end +end diff --git a/spec/requests/mileage_reports_spec.rb b/spec/requests/mileage_reports_spec.rb new file mode 100644 index 0000000000..e373af82d6 --- /dev/null +++ b/spec/requests/mileage_reports_spec.rb @@ -0,0 +1,73 @@ +require "rails_helper" + +RSpec.describe "/mileage_reports", type: :request do + before do + travel_to Time.zone.local(2025, 4, 14) + sign_in user + end + + describe "GET /mileage_reports" do + context "as casa_admin" do + let(:user) { create(:casa_admin) } + + it "renders a csv file to download" do + get mileage_reports_url(format: :csv) + + expect(response).to be_successful + expect( + response.headers["Content-Disposition"] + ).to include 'attachment; filename="mileage-report-2025-04-14.csv' + end + + it "includes case contact mileage data in csv" do + volunteer = create(:volunteer, casa_org: user.casa_org) + casa_case = create(:casa_case, casa_org: user.casa_org) + create(:case_assignment, volunteer: volunteer, casa_case: casa_case) + create(:case_contact, + creator: volunteer, + casa_case: casa_case, + want_driving_reimbursement: true, + miles_driven: 25) + + get mileage_reports_url(format: :csv) + + expect(response).to be_successful + expect(response.body).to include("25") + end + end + + context "as supervisor" do + let(:user) { create(:supervisor) } + + it "renders a csv file to download" do + get mileage_reports_url(format: :csv) + + expect(response).to be_successful + expect( + response.headers["Content-Disposition"] + ).to include 'attachment; filename="mileage-report-2025-04-14.csv' + end + end + + context "as volunteer" do + let(:user) { create(:volunteer) } + + it "cannot view reports" do + get mileage_reports_url(format: :csv) + + expect(response).to redirect_to root_path + end + end + + context "when not signed in" do + let(:user) { create(:volunteer) } + + it "redirects to sign in" do + sign_out user + get mileage_reports_url(format: :csv) + + expect(response).to redirect_to new_user_session_path + end + end + end +end