Files
old-holivud2/spec/jobs/generate_reports_zip_job_spec.rb
2020-05-31 22:38:19 +02:00

55 lines
2.1 KiB
Ruby

require "rails_helper"
describe GenerateReportsZipJob do
let(:project) { create(:project) }
let(:download) { create(:download, project: project) }
before do
dir = Rails.root.join("spec", "fixtures", "files")
files = ["bray_edl_100319-mp4_big-cue-sheet.xlsx",
"bray_edl_100319-mp4_discovery-cue-sheet.xlsx",
"bray_edl_100319-mp4_gfx-cue-list.xlsx",
"bray_edl_100319-mp4_issues-and-concerns.xlsx",
"bray_edl_100319-mp4_production-elements-log.xlsx"]
@zip_file_name = "#{project.name.parameterize}_#{Time.now.strftime('%Y-%m-%d_%H-%M-%S')}"
allow_any_instance_of(ReportCollectionService).to receive(:build).and_yield(dir, files)
end
describe ".perform_later" do
it "enqueues a background job for generating zip file" do
expect {
GenerateReportsZipJob.perform_later(project, download, @zip_file_name)
}.to have_enqueued_job
end
end
describe ".perform_now" do
it "updates a download record and creates attachment for it" do
GenerateReportsZipJob.perform_now(project, download, @zip_file_name)
expect(download.project).to eq project
expect(download.status).to eq "success"
expect(download.file).to be_attached
end
context "When there are errors" do
before do
allow(ProjectsChannel).to receive(:broadcast_download_generation_update).with(download, I18n.t("report_downloads.download.failure"))
allow_any_instance_of(ReportCollectionService).to receive(:build).and_raise(StandardError, "Reports not found")
end
it "updates status to 'failure' and sends user a notification" do
GenerateReportsZipJob.perform_now(project, download, @zip_file_name)
expect(download.status).to eq "failure"
expect(ProjectsChannel).to have_received(:broadcast_download_generation_update).with(download, I18n.t("report_downloads.download.failure"))
end
end
end
after do
path = Rails.root.join("spec", "fixtures", "files")
File.delete("#{path}/#{@zip_file_name}.zip") if File.exists? "#{path}/#{@zip_file_name}.zip"
end
end