Sha256: 7e15bd68e9d68158342540b0acdc718fe9ea986224a3b82e31c0172abc391bf2

Contents?: true

Size: 1.42 KB

Versions: 6

Compression:

Stored size: 1.42 KB

Contents

require 'spec_helper'

describe Riveter::Service do
  describe "class" do
    subject { TestService }

    it "automatically registers as handler for TestCommand" do
      Riveter::Service::Base.resolve(:test_command).should eq(subject)
    end

    describe ".register_as_handler_for" do
      let(:command_class) { TestCommand }

      it { should respond_to(:register_as_handler_for) }

      it "registers as handler for given command" do
        expect(subject).to receive(:register_type).with(subject, command_class)
        subject.register_as_handler_for(command_class)
      end

      it "allows for more than one registration" do
        my_test_command_class = Class.new(Riveter::Command::Base)
        allow(my_test_command_class).to receive(:name) { 'MyTestCommand' } # anonymous classes need a name!

        TestService.register_as_handler_for my_test_command_class
        Riveter::Service::Base.resolve(:my_test_command).should eq(subject)
      end
    end
  end

  describe "instance" do
    subject { TestService.new() }

    describe "#perform" do
      it { should respond_to(:perform) }

      it "should raise NotImplementedError if not implemented" do
        expect {
          subject.perform(nil)
        }.to raise_error(NotImplementedError)
      end

      it "should invoke" do
        expect(subject).to receive(:perform) { true }
        subject.perform(TestCommand.new()).should be_true
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
riveter-0.0.7 spec/riveter/service_spec.rb
riveter-0.0.6 spec/riveter/service_spec.rb
riveter-0.0.5 spec/riveter/service_spec.rb
riveter-0.0.4 spec/riveter/service_spec.rb
riveter-0.0.3 spec/riveter/service_spec.rb
riveter-0.0.1 spec/riveter/service_spec.rb