spec/adhearsion/punchblock_plugin_spec.rb in adhearsion-2.0.0.alpha3 vs spec/adhearsion/punchblock_plugin_spec.rb in adhearsion-2.0.0.beta1
- old
+ new
@@ -5,7 +5,49 @@
it "should make the client accessible from the Initializer" do
PunchblockPlugin::Initializer.client = :foo
PunchblockPlugin.client.should be :foo
PunchblockPlugin::Initializer.client = nil
end
+
+ describe '#execute_component' do
+ let(:message) { Punchblock::Command::Accept.new }
+ let(:response) { :foo }
+ let(:mock_client) { flexmock 'Client', :execute_command => true }
+
+ before do
+ PunchblockPlugin::Initializer.client = mock_client
+ flexmock message, :execute! => true
+ message.response = response
+ end
+
+ it "writes a command to the client" do
+ flexmock(PunchblockPlugin.client).should_receive(:execute_command).once.with(message)
+ PunchblockPlugin.execute_component message
+ end
+
+ it "blocks until a response is received" do
+ slow_command = Punchblock::Command::Dial.new
+ Thread.new do
+ sleep 0.5
+ slow_command.response = response
+ end
+ starting_time = Time.now
+ PunchblockPlugin.execute_component slow_command
+ (Time.now - starting_time).should >= 0.5
+ end
+
+ describe "with a successful response" do
+ it "returns the executed command" do
+ PunchblockPlugin.execute_component(message).should be message
+ end
+ end
+
+ describe "with an error response" do
+ let(:response) { Exception.new }
+
+ it "raises the error" do
+ lambda { PunchblockPlugin.execute_component message }.should raise_error Exception
+ end
+ end
+ end
end
end