Sha256: 7e5f1f6c50384c07791416b8599018b80d9fd546d7bdb86219f10606895d1584

Contents?: true

Size: 1.76 KB

Versions: 1

Compression:

Stored size: 1.76 KB

Contents

require_relative '../../../test_helper'

module Vedeu
  class DummyInterface < Interface
    def initial_state; end

    def event_loop; end
  end

  describe Interfaces do
    let(:described_class) { Interfaces }

    describe '.define' do
      let(:subject) { described_class.define }

      it { subject.must_be_instance_of(Module) }

      context 'when a block is given' do
        let(:subject) { described_class.define { :some_block } }

        it { subject.must_be_instance_of(Symbol) }
      end
    end

    describe '.defined' do
      let(:subject) { described_class.defined }

      after { described_class.interfaces = {} }

      context 'when interfaces are not defined' do
        before { described_class.interfaces = {} }

        it 'adds the default interface and returns all interfaces' do
          subject.must_be_instance_of(Module)
        end
      end

      context 'when interfaces are defined' do
        before { described_class.interfaces = { mock: :interface } }

        it { subject.must_be_instance_of(Module) }
      end
    end

    describe '.add' do
      let(:subject)   { described_class.add(interface, options, klass) }
      let(:interface) {}
      let(:klass)     { DummyInterface }
      let(:options)   { {} }

      it { subject.must_be_instance_of(Module) }

      context 'when the interface class does not exist' do
        before { Object.stubs(:const_defined?).returns(false) }

        it { proc { subject }.must_raise(UndefinedInterface) }
      end
    end

    describe '.list' do
      let(:subject) { described_class.list }

      it { subject.must_be_instance_of(String) }
    end

    describe '.initial_state' do
      let(:subject) { described_class.initial_state }

      it { subject.must_be_instance_of(Array) }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.0.9 test/lib/vedeu/interface/interfaces_test.rb