Sha256: d6e7f54f0319e81d17c8a65be4e4ac93a6bff4d998b0e84970e4c2166a11ad3f

Contents?: true

Size: 1.86 KB

Versions: 3

Compression:

Stored size: 1.86 KB

Contents

# encoding: utf-8

require 'spec_helper'

module Punchblock
  module Translator
    class Asterisk
      module Component
        describe StopByRedirect do

          class MockComponent < Component
            include StopByRedirect
            def set_complete
              @complete = true
            end
          end

          let(:mock_call) { mock 'Call', :id => 'foo' }
          subject { MockComponent.new Hash.new, mock_call }

          describe "#execute_command" do
            context "with a command it does not understand" do
              let(:command) { Punchblock::Component::Output::Pause.new }

              before { command.request! }
              it "returns a ProtocolError response" do
                subject.execute_command command
                command.response(0.1).should be_a ProtocolError
              end
            end

            context "with a Stop command" do
              let(:command) { Punchblock::Component::Stop.new }

              before do
                command.request!
              end

              it "sets the command response to true" do
                mock_call.should_receive(:redirect_back!)
                mock_call.should_receive(:register_handler).with do |type, *guards|
                  type.should be == :ami
                  guards.should have(2).guards
                  guards[0].should be_a Proc
                  guards[1].should be == {:name => 'AsyncAGI'}
                end

                subject.execute_command command
                command.response(0.1).should be == true
              end

              it "returns an error if the component is already complete" do
                subject.set_complete
                subject.execute_command command
                command.response(0.1).should be_a ProtocolError
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
punchblock-1.8.0 spec/punchblock/translator/asterisk/component/stop_by_redirect_spec.rb
punchblock-1.7.1 spec/punchblock/translator/asterisk/component/stop_by_redirect_spec.rb
punchblock-1.7.0 spec/punchblock/translator/asterisk/component/stop_by_redirect_spec.rb