diff --git a/app/controllers/admin/legal_documents_controller.rb b/app/controllers/admin/legal_documents_controller.rb index 70ebddded..68b95877d 100644 --- a/app/controllers/admin/legal_documents_controller.rb +++ b/app/controllers/admin/legal_documents_controller.rb @@ -5,14 +5,11 @@ module Admin def show @ld = LegalDocument.find(params[:id]) filename = @ld.path.split('/').last - file = File.open(@ld.path).read - - if file - send_data file, filename: filename - else - flash[:notice] = I18n.t('legal_doc_not_found') - redirect_to [:admin, @ld.documentable] - end + file = File.open(@ld.path)&.read + send_data file, filename: filename + rescue Errno::ENOENT + flash[:notice] = I18n.t('legal_doc_not_found') + redirect_to [:admin, @ld.documentable] end end end diff --git a/test/system/admin_area/domains/legal_doc_test.rb b/test/system/admin_area/domains/legal_doc_test.rb new file mode 100644 index 000000000..00cc7cc3a --- /dev/null +++ b/test/system/admin_area/domains/legal_doc_test.rb @@ -0,0 +1,21 @@ +require 'application_system_test_case' + +class AdminAreaDomainsLegalDocTest < ApplicationSystemTestCase + setup do + sign_in users(:admin) + @domain = domains(:shop) + @document = LegalDocument.create( + document_type: 'pdf', + documentable_id: @domain.id, + documentable_type: 'Domain', + path: '\zzz\zzz' + ) + end + + def test_absent_doc_downloading_without_errors + visit admin_domain_url(@domain) + assert_nothing_raised do + click_on "#{@document.created_at}" + end + end +end