diff --git a/app/controllers/case_court_reports_controller.rb b/app/controllers/case_court_reports_controller.rb index a63d01f5a9..c857aeb6a3 100644 --- a/app/controllers/case_court_reports_controller.rb +++ b/app/controllers/case_court_reports_controller.rb @@ -24,8 +24,11 @@ def show respond_to do |format| format.docx do @casa_case.latest_court_report.open do |file| - # TODO test this .read being present, we've broken it twice now - send_data File.read(file.path), type: :docx, disposition: "attachment", status: :ok + send_data File.binread(file.path), + type: :docx, + filename: "#{@casa_case.case_number}.docx", + disposition: "attachment", + status: :ok end end end diff --git a/spec/requests/case_court_reports_spec.rb b/spec/requests/case_court_reports_spec.rb index e3fcdc6c44..7b31fbbe34 100644 --- a/spec/requests/case_court_reports_spec.rb +++ b/spec/requests/case_court_reports_spec.rb @@ -53,13 +53,14 @@ end let(:casa_case) { volunteer.casa_cases.first } + let(:case_number) { "#C-15-JV-24-191" } + let(:report_bytes) { Rails.root.join("spec/fixtures/files/default_past_court_date_template.docx").binread } before do - Tempfile.create do |t| - casa_case.court_reports.attach( - io: File.open(t.path), filename: "#{casa_case.case_number}.docx" - ) - end + casa_case.update!(case_number: case_number) + casa_case.court_reports.attach( + io: StringIO.new(report_bytes), filename: "stored-report.docx" + ) end it "authorizes action" do @@ -74,6 +75,15 @@ it "send response with a status :ok" do expect(request).to have_http_status(:ok) end + + it "sends the stored report bytes using the case number as the filename", :aggregate_failures do + expect(request.body).to eq(report_bytes) + expect(request.body.bytesize).to eq(casa_case.latest_court_report.blob.byte_size) + expect(request.body).to start_with("PK\x03\x04".b) + expect(request.headers["Content-Disposition"]).to include( + %(attachment; filename="#{casa_case.case_number}.docx") + ) + end end context "when an INVALID / non-existing case is sent" do