Sha256: be07137d133eaf54aef40df621b4915457ee2e0743ab068da9c44d34940023ff

Contents?: true

Size: 1.81 KB

Versions: 39

Compression:

Stored size: 1.81 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, {})

        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

39 entries across 39 versions & 1 rubygems

Version Path
canvas_sync-0.3.14 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.13 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.12 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.11 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.10 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.9 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.8 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.7 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.6 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.5 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.3 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.2 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.1 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.3.0 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.2.4 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.2.3 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.2.2 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.2.1 spec/canvas_sync/jobs/report_checker_spec.rb
canvas_sync-0.2.0 spec/canvas_sync/jobs/report_checker_spec.rb