Sha256: a2549d39c26537b83ca38edb194a1677b08aa81790889547c9657bc69c2f4025

Contents?: true

Size: 1.66 KB

Versions: 3

Compression:

Stored size: 1.66 KB

Contents

require_relative '../../../test_helper'
require_relative '../../../../lib/vedeu/process/process'
require_relative '../../../support/dummy_command'
require_relative '../../../../lib/vedeu/repository/command_repository'

module Vedeu
  class QuitCommand
    def self.dispatch
      :stop
    end
  end

  class TestCommand
    def self.dispatch
      {
        'Process#evaluate' => 'TestCommand.dispatch'
      }
    end
  end

  class NoResultCommand
    def self.dispatch
    end
  end

  describe Process do
    describe '.evaluate' do
      before do
        CommandRepository.reset
        Queue.reset
      end

      it 'returns false when there is no input' do
        Process.evaluate.must_be_instance_of(FalseClass)
      end

      it 'raises an exception when the result is :stop' do
        CommandRepository.create({
          name:     'quit',
          entity:   QuitCommand,
          keypress: 'q'
        })
        Queue.enqueue('q')
        proc { Process.evaluate }.must_raise(StopIteration)
      end

      it 'returns a collection of interfaces when there is a result' do
        CommandRepository.create({
          name:     'test',
          entity:   TestCommand,
          keypress: 't'
        })
        Queue.enqueue('t')
        evaluation = Process.evaluate

        evaluation.must_be_instance_of(Array)
        evaluation.size.must_equal(1)
      end

      it 'returns a NilClass when there is no result' do
        CommandRepository.create({
          name:     'no_result',
          entity:   NoResultCommand,
          keypress: 'n'
        })
        Queue.enqueue('n')
        Process.evaluate.must_be_instance_of(NilClass)
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
vedeu-0.0.39 test/lib/vedeu/process/process_test.rb
vedeu-0.0.38 test/lib/vedeu/process/process_test.rb
vedeu-0.0.37 test/lib/vedeu/process/process_test.rb