Sha256: 065432212435d1a61b665056bc78392e709f28b6de74d4fbe1e2fef7617c98cc

Contents?: true

Size: 1.82 KB

Versions: 32

Compression:

Stored size: 1.82 KB

Contents

require 'spec_helper'

RSpec.describe CanvasSync::Jobs::ReportChecker do
  let(:client_double) { double('client') }
  let(:report_id) { 1 }
  let(:report_name) { 'provisioning_csv' }
  let(:processor) { 'FakeProcessor' }
  let(:job_chain) { { jobs: [], global_options: {} } }

  describe '#perform' do
    def start_job
      CanvasSync::Jobs::ReportChecker.perform_now(
        job_chain,
        'provisioning_csv',
        report_id,
        processor,
        {}
      )
    end

    context 'the report has finished' do
      it 'enqueues the report processor job' do
        expect_any_instance_of(Bearcat::Client).to receive(:report_status)
          .with('self', report_name, report_id)
          .and_return({ 'status' => 'complete', 'attachment' => { 'url' => 'blah' } })

        expect(CanvasSync::Jobs::ReportProcessorJob).to receive(:perform_later)
          .with(job_chain, report_name, 'blah', processor, {}, report_id)

        start_job
      end
    end

    context 'the report is still running' do
      it 're-enqueues the report checker' do
        expect_any_instance_of(Bearcat::Client).to receive(:report_status)
          .with('self', report_name, report_id)
          .and_return({ 'status' => 'running' })

        expect(CanvasSync::Jobs::ReportChecker).to receive(:set).and_call_original

        start_job
      end
    end

    context 'the report has errored' do
      it 'does not re-enqueue the job or enqueue the processor' do
        expect_any_instance_of(Bearcat::Client).to receive(:report_status)
          .with('self', report_name, report_id)
          .and_return({ 'status' => 'error' })

        expect(CanvasSync::Jobs::ReportChecker).to_not receive(:set)
        expect(CanvasSync::Jobs::ReportProcessorJob).to_not receive(:perform_later)

        expect { start_job }.to raise_error
      end
    end
  end
end

Version data entries

32 entries across 32 versions & 1 rubygems

Version Path
canvas_sync-0.11.1 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.16.5 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.16.4 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.16.3 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.16.2 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.16.1 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.15.1 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.15.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.14.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.13.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.12.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.11.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.6 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.5 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.4 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.3 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.2 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.10.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.9.4 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.9.3 spec/canvas_sync/jobs/report_checker_spec.rb