Sha256: 16b1d8cfaf3f0cd57187a40843e7da5fdb30115fb7ec2f599a633dbdd05a611c

Contents?: true

Size: 1.95 KB

Versions: 1

Compression:

Stored size: 1.95 KB

Contents

# encoding: utf-8

require 'minitest_helper'

describe SayWhen::Scheduler do

  before {
    SayWhen::logger = Logger.new('/dev/null')
  }

  describe 'class methods' do

    it 'can return singleton' do
      s = SayWhen::Scheduler.scheduler
      s.wont_be_nil
      s.must_equal SayWhen::Scheduler.scheduler
    end

    it 'can be configured' do
      SayWhen::Scheduler.configure do |scheduler|
        scheduler.storage_strategy = :memory
        scheduler.processor_class  = SayWhen::Test::TestProcessor
      end
      SayWhen::Scheduler.scheduler.storage_strategy.must_equal :memory
      SayWhen::Scheduler.scheduler.processor_class.must_equal SayWhen::Test::TestProcessor
    end

    it 'can schedule a new job' do
      SayWhen::Scheduler.configure do |scheduler|
        scheduler.storage_strategy = :memory
        scheduler.processor_class  = SayWhen::Test::TestProcessor
      end

      job = SayWhen::Scheduler.schedule(
        trigger_strategy: 'once',
        trigger_options: { at: 10.second.since },
        job_class: 'SayWhen::Test::TestTask',
        job_method: 'execute'
      )
      job.wont_be_nil
    end

  end

  describe 'instance methods' do

    before(:all) do
      SayWhen::Scheduler.configure do |scheduler|
        scheduler.storage_strategy = :memory
        scheduler.processor_class  = SayWhen::Test::TestProcessor
      end
    end

    let (:scheduler) { SayWhen::Scheduler.scheduler }

    it 'should instantiate the processor from its class' do
      scheduler.processor.must_be_instance_of(SayWhen::Test::TestProcessor)
    end

    it 'should get the job class based on the strategy' do
      scheduler.job_class.must_equal SayWhen::Storage::Memory::Job
    end

    it 'should start the scheduler running, and can stop it' do
      scheduler.wont_be :running

      scheduler_thread = Thread.start{ scheduler.start }
      sleep(0.2)
      scheduler.must_be :running

      scheduler.stop
      scheduler.wont_be :running
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
say_when-1.0.0 test/say_when/scheduler_test.rb