spec/features/integration_spec.rb in gush-0.3 vs spec/features/integration_spec.rb in gush-0.3.1

- old
+ new

@@ -16,23 +16,23 @@ it "runs the whole workflow in proper order" do flow = TestWorkflow.create flow.start! - expect(Gush::Worker).to have_jobs(flow.id, ["Prepare"]) + expect(Gush::Worker).to have_jobs(flow.id, jobs_with_id(['Prepare'])) Gush::Worker.perform_one - expect(Gush::Worker).to have_jobs(flow.id, ["FetchFirstJob", "FetchSecondJob"]) + expect(Gush::Worker).to have_jobs(flow.id, jobs_with_id(["FetchFirstJob", "FetchSecondJob"])) Gush::Worker.perform_one - expect(Gush::Worker).to have_jobs(flow.id, ["FetchSecondJob", "PersistFirstJob"]) + expect(Gush::Worker).to have_jobs(flow.id, jobs_with_id(["FetchSecondJob", "PersistFirstJob"])) Gush::Worker.perform_one - expect(Gush::Worker).to have_jobs(flow.id, ["PersistFirstJob"]) + expect(Gush::Worker).to have_jobs(flow.id, jobs_with_id(["PersistFirstJob"])) Gush::Worker.perform_one - expect(Gush::Worker).to have_jobs(flow.id, ["NormalizeJob"]) + expect(Gush::Worker).to have_jobs(flow.id, jobs_with_id(["NormalizeJob"])) Gush::Worker.perform_one expect(Gush::Worker.jobs).to be_empty end @@ -50,11 +50,11 @@ end end class PrependJob < Gush::Job def work - string = "#{payloads["PrefixJob"]}: #{payloads["UpcaseJob"]}" + string = "#{payloads['PrefixJob'].first}: #{payloads['UpcaseJob'].first}" output string end end class PayloadWorkflow < Gush::Workflow @@ -74,7 +74,49 @@ Gush::Worker.perform_one expect(flow.reload.find_job("PrefixJob").output_payload).to eq("A prefix") Gush::Worker.perform_one expect(flow.reload.find_job("PrependJob").output_payload).to eq("A prefix: SOME TEXT") + + + end + + it "passes payloads from workflow that runs multiple same class jobs with nameized payloads" do + class RepetitiveJob < Gush::Job + def work + output params[:input] + end + end + + class SummaryJob < Gush::Job + def work + output payloads['RepetitiveJob'] + end + end + + class PayloadWorkflow < Gush::Workflow + def configure + jobs = [] + jobs << run(RepetitiveJob, params: {input: 'first'}) + jobs << run(RepetitiveJob, params: {input: 'second'}) + jobs << run(RepetitiveJob, params: {input: 'third'}) + run SummaryJob, after: jobs + end + end + + flow = PayloadWorkflow.create + flow.start! + + Gush::Worker.perform_one + expect(flow.reload.find_job(flow.jobs[0].name).output_payload).to eq('first') + + Gush::Worker.perform_one + expect(flow.reload.find_job(flow.jobs[1].name).output_payload).to eq('second') + + Gush::Worker.perform_one + expect(flow.reload.find_job(flow.jobs[2].name).output_payload).to eq('third') + + Gush::Worker.perform_one + expect(flow.reload.find_job(flow.jobs[3].name).output_payload).to eq(%w(first second third)) + end end