require 'minitest_helper'

describe Asynchronic::QueueEngine::Synchronic do

  before do
    Asynchronic.configure do |config|
      config.queue_engine = Asynchronic::QueueEngine::Synchronic.new
    end
  end

  after do
    Asynchronic.environment.data_store.clear
  end

  it 'Original job' do
    pid = BasicJob.enqueue input: 1
    process = Asynchronic[pid]
    process.result.must_equal 2
  end

  it 'Stub job' do
    Asynchronic.queue_engine.stub BasicJob do |process|
      process.params[:input] + 19
    end

    pid = BasicJob.enqueue input: 1
    process = Asynchronic[pid]
    process.result.must_equal 20
  end

  it 'Graph job' do
    pid = GraphJob.enqueue input: 100
    process = Asynchronic[pid]
    process.must_be_completed
    process.result.must_equal '10%' => 20, '20%' => 40
  end

  it 'Active connections' do
    Asynchronic.queue_engine.active_connections.must_equal [Asynchronic.connection_name]
  end

end