Sha256: ec34974bc5259d0737bd4090b19d31fc72f6660a35810f2e73026b801aa52c4a

Contents?: true

Size: 1.83 KB

Versions: 18

Compression:

Stored size: 1.83 KB

Contents

shared_examples 'a software agent' do |args|
  subject { described_class.new(args) }
  let(:agent_class) { described_class }

  it 'represents its agent name as the correct string, as a class' do
    expect(agent_class.agent_name)
      .to eq agent_class.to_s
  end

  it 'represents its agent name as the correct string, as an instance' do
    expect(subject.agent_name).to eq agent_class.to_s
  end

  describe '.agent_name' do
    it { expect(agent_class.agent_name).to be_a String }
  end

  describe '.queue_name' do
    it { expect(agent_class.queue_name).to respond_to :to_s }

    it 'is lowercase' do
      expect(agent_class.queue_name).to eq agent_class.queue_name.downcase
    end
  end

  describe '#agent_name' do
    it { expect(subject.agent_name).to be_a String }
  end

  describe '#run' do
    it 'accepts one or no arguments' do
      expect(subject.method(:run).arity).to satisfy { |v| v == -1 || v == 0 }
    end
  end

  describe '#enqueue' do
    let(:queue_name) { described_class.queue_name.to_s }

    it 'accepts options hash as first arg' do
      expect(agent_class.enqueue({})).to be true
    end

    it 'accepts options hash as second arg' do
      expect(agent_class.enqueue('my_queue', {})).to be true
    end

    it 'throws an error if too many args are given' do
      expect { agent_class.enqueue('my_queue', {}, :abc) }
        .to raise_error ArgumentError
    end

    it 'throws an error if second arg is not options hash' do
      expect { agent_class.enqueue(:my_queue, :abc) }
        .to raise_error ArgumentError
    end

    it 'enqueues a job' do
      expect { agent_class.enqueue(args) }
        .to change { Resque.size(queue_name) }.by(1)
    end

    it 'creates a new activity when it enqueues a job' do
      expect { agent_class.enqueue(args) }
        .to change { Krikri::Activity.count }.by(1)
    end
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
krikri-0.8.2 spec/support/shared_examples/software_agent.rb
krikri-0.8.1 spec/support/shared_examples/software_agent.rb
krikri-0.8.0 spec/support/shared_examples/software_agent.rb
krikri-0.7.6 spec/support/shared_examples/software_agent.rb
krikri-0.7.5 spec/support/shared_examples/software_agent.rb
krikri-0.7.4 spec/support/shared_examples/software_agent.rb
krikri-0.7.3 spec/support/shared_examples/software_agent.rb
krikri-0.7.2 spec/support/shared_examples/software_agent.rb
krikri-0.7.1 spec/support/shared_examples/software_agent.rb
krikri-0.7.0 spec/support/shared_examples/software_agent.rb
krikri-0.6.0 spec/support/shared_examples/software_agent.rb
krikri-0.5.7 spec/support/shared_examples/software_agent.rb
krikri-0.5.6 spec/support/shared_examples/software_agent.rb
krikri-0.5.5 spec/support/shared_examples/software_agent.rb
krikri-0.5.4 spec/support/shared_examples/software_agent.rb
krikri-0.5.3 spec/support/shared_examples/software_agent.rb
krikri-0.5.2 spec/support/shared_examples/software_agent.rb
krikri-0.5.1 spec/support/shared_examples/software_agent.rb