diff --git a/app/controllers/case_logs_controller.rb b/app/controllers/case_logs_controller.rb index c828cebcd..03000dfca 100644 --- a/app/controllers/case_logs_controller.rb +++ b/app/controllers/case_logs_controller.rb @@ -11,7 +11,9 @@ class CaseLogsController < ApplicationController respond_to do |format| format.html - format.csv { send_data @case_logs.to_csv, filename: "logs-#{Time.zone.now}.csv" } + format.csv do + send_data current_user.case_logs.to_csv, filename: "logs-#{Time.zone.now}.csv" + end end end diff --git a/spec/requests/case_logs_controller_spec.rb b/spec/requests/case_logs_controller_spec.rb index b3fa651eb..7adad985b 100644 --- a/spec/requests/case_logs_controller_spec.rb +++ b/spec/requests/case_logs_controller_spec.rb @@ -405,35 +405,51 @@ RSpec.describe CaseLogsController, type: :request do let(:user) { FactoryBot.create(:user) } let(:organisation) { user.organisation } let(:other_organisation) { FactoryBot.create(:organisation) } - let!(:case_log) do - FactoryBot.create( - :case_log, - owning_organisation: organisation, - managing_organisation: organisation, - ecstat1: 1, - ) - end - before do - sign_in user - FactoryBot.create(:case_log) - get "/logs", headers: headers, params: {} - end + context "when a log exists" do + let!(:case_log) do + FactoryBot.create( + :case_log, + owning_organisation: organisation, + managing_organisation: organisation, + ecstat1: 1, + ) + end - it "downloads a CSV file with headers" do - csv = CSV.parse(response.body) - expect(csv.first.first).to eq("id") - expect(csv.second.first).to eq(case_log.id.to_s) - end + before do + sign_in user + FactoryBot.create(:case_log) + get "/logs", headers: headers, params: {} + end + + it "downloads a CSV file with headers" do + csv = CSV.parse(response.body) + expect(csv.first.first).to eq("id") + expect(csv.second.first).to eq(case_log.id.to_s) + end + + it "does not download other orgs logs" do + csv = CSV.parse(response.body) + expect(csv.count).to eq(2) + end - it "does not download other orgs logs" do - csv = CSV.parse(response.body) - expect(csv.count).to eq(2) + it "downloads answer labels rather than values" do + csv = CSV.parse(response.body) + expect(csv.second[10]).to eq("Full-time – 30 hours or more") + end end - it "downloads answer labels rather than values" do - csv = CSV.parse(response.body) - expect(csv.second[10]).to eq("Full-time – 30 hours or more") + context "when there are more than 20 logs" do + before do + sign_in user + FactoryBot.create_list(:case_log, 26, owning_organisation: organisation) + get "/logs", headers: headers, params: {} + end + + it "does not paginate, it downloads all the user's logs" do + csv = CSV.parse(response.body) + expect(csv.count).to eq(27) + end end end