Sha256: e17180abe2fd519e72c4bbcb259f4d2c504f823533599c2c178da741f621c697

Contents?: true

Size: 1.33 KB

Versions: 3

Compression:

Stored size: 1.33 KB

Contents

module Taskinator
  module Queues

    def self.create_test_queue_adapter(config={})
      TestQueueAdapter.new(config)
    end

    def self.create_test_queue_worker_adapter(config={})
      TestQueueWorkerAdapter.new(config)
    end

    #
    # this is a no-op adapter, it tracks enqueued processes and tasks
    #
    class TestQueueAdapter

      def initialize(config={})
        clear
      end

      def enqueue_create_process(definition, uuid, args)
        @processes << [definition, uuid, args]
      end

      def enqueue_task(task)
        @tasks << task
      end

      # helpers

      attr_reader :processes
      attr_reader :tasks

      def clear
        @processes = []
        @tasks = []
      end

      def empty?
        @processes.empty? && @tasks.empty?
      end

    end

    #
    # this is a "synchronous" implementation for use in testing
    #
    class TestQueueWorkerAdapter < TestQueueAdapter

      def enqueue_create_process(definition, uuid, args)
        super
        invoke do
          Taskinator::CreateProcessWorker.new(definition.name, uuid, args).perform
        end
      end

      def enqueue_task(task)
        super
        invoke do
          Taskinator::TaskWorker.new(task.uuid).perform
        end
      end

      private

      def invoke(&block)
        block.call
      end

    end

  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
taskinator-0.5.2 spec/support/test_queue.rb
taskinator-0.5.1 spec/support/test_queue.rb
taskinator-0.5.0 spec/support/test_queue.rb