Sha256: 635da9105aa863877c74820c651131cee7e1b44b815b66975bc4d470191af7fe

Contents?: true

Size: 1.59 KB

Versions: 1

Compression:

Stored size: 1.59 KB

Contents

require 'spec_helper'
module Maxwell
  module Agent
    describe WorkSchedule do
      before :each do
        runner = double(:runner)
        Agent.stub(:runner).and_return(runner)
        allow(runner).to receive(:[]).with(:work_schedule).
          and_return(WorkSchedule.new)
      end

      Given(:queue) { Agent.runner[:work_schedule] }
      Given(:work) { WorkTest.new.load(name: 'foo', work_class: 'bar') }
      describe '.add' do
        context 'Work is added' do
          When(:result) { queue.add(work) }
          Then { expect(queue.count).to be 1 }
        end
        context 'The same Work is added 2x' do
          Given { queue.add(work) }
          When { queue.add(work) }
          Then { expect(queue.count).to be 1 }
        end
      end

      describe '.working' do
        Given { queue.add(work) }
        When { queue.get }
        Then { expect(queue.working.count).to be 1 }
        And  { expect(queue.count).to be 0 }
      end

      describe '.put_back' do
        Given { queue.add(work) }
        Given { queue.get }
        When  { queue.put_back(work) }
        Then  { expect(queue.count).to eq 1 }
        And   { expect(queue.working.count).to eq 0 }
      end

      describe '.all' do
        Given { queue.add(work) }
        Given { queue.add(WorkTest.new.load(name: 'foo', work_class: 'bar',
                                       perform_at: 5.minutes.ago)) }
        When  { queue.get }
        Then  { expect(queue.all.count).to be 2 }
        And   { expect(queue.working.count).to be 1 }
        And   { expect(queue.schedule.count).to be 1 }
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
maxwell_agent-0.0.5 spec/agent/work_schedule_spec.rb