diff --git a/app/models/project.rb b/app/models/project.rb index e0177d8e1..d56bb4b65 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -287,7 +287,7 @@ def file_list_to_file(session_id:, filename:) iterator_resp = iterator_req.result lines = files_from_iterator(iterator_resp) file.write(lines.join("\r\n") + "\r\n") - break if iterator_resp[:complete] + break if iterator_resp[:complete] || iterator_req.error? end end diff --git a/app/presenters/project_dashboard_presenter.rb b/app/presenters/project_dashboard_presenter.rb index a091aad48..de5c59af7 100644 --- a/app/presenters/project_dashboard_presenter.rb +++ b/app/presenters/project_dashboard_presenter.rb @@ -18,8 +18,10 @@ def latest_file_list_time requests = FileInventoryRequest.where(project_id: project.id).order(completion_time: :desc) if requests.empty? "No Downloads" - else + elsif requests.first.completion_time "Prepared #{time_ago_in_words(requests.first.completion_time)} ago" + else + "Preparing now" end end diff --git a/spec/models/project_dashboard_presenter_spec.rb b/spec/models/project_dashboard_presenter_spec.rb index 76b865e0d..d379c6b83 100644 --- a/spec/models/project_dashboard_presenter_spec.rb +++ b/spec/models/project_dashboard_presenter_spec.rb @@ -34,6 +34,17 @@ expect(presenter.latest_file_list_time).to eq("Prepared 1 day ago") end end + + context "when download in progress exist" do + before do + FileInventoryRequest.create!(user_id: FactoryBot.create(:user).id, project_id: project.id, job_id: 123, state: UserRequest::PENDING, + request_details: { project_title: project.title }, completion_time: nil) + end + + it "returns the time ago" do + expect(presenter.latest_file_list_time).to eq("Preparing now") + end + end end describe "#last_activity" do