# encoding: utf-8
require 'spec_helper'
module Punchblock
module Component
describe ReceiveFax do
it 'registers itself' do
expect(RayoNode.class_from_registration(:receivefax, 'urn:xmpp:rayo:fax:1')).to eq(described_class)
end
describe "exporting to Rayo" do
it "should export to XML that can be understood by its parser" do
new_instance = RayoNode.from_xml subject.to_rayo
expect(new_instance).to be_instance_of described_class
end
it "should render to a parent node if supplied" do
doc = Nokogiri::XML::Document.new
parent = Nokogiri::XML::Node.new 'foo', doc
doc.root = parent
rayo_doc = subject.to_rayo(parent)
expect(rayo_doc).to eq(parent)
end
end
describe "from a stanza" do
let :stanza do
<<-MESSAGE
MESSAGE
end
subject { RayoNode.from_xml parse_stanza(stanza).root, '9f00061', '1' }
it { should be_instance_of described_class }
end
describe "actions" do
let(:mock_client) { double 'Client' }
let(:command) { described_class.new }
before do
command.component_id = 'abc123'
command.target_call_id = '123abc'
command.client = mock_client
end
describe '#stop_action' do
subject { command.stop_action }
describe '#to_xml' do
subject { super().to_xml }
it { should be == '' }
end
describe '#component_id' do
subject { super().component_id }
it { should be == 'abc123' }
end
describe '#target_call_id' do
subject { super().target_call_id }
it { should be == '123abc' }
end
end
describe '#stop!' do
describe "when the command is executing" do
before do
command.request!
command.execute!
end
it "should send its command properly" do
expect(mock_client).to receive(:execute_command).with(command.stop_action, :target_call_id => '123abc', :component_id => 'abc123')
command.stop!
end
end
describe "when the command is not executing" do
it "should raise an error" do
expect { command.stop! }.to raise_error(InvalidActionError, "Cannot stop a ReceiveFax that is new")
end
end
end
end
describe ReceiveFax::Complete::Finish do
let :stanza do
<<-MESSAGE
MESSAGE
end
subject(:complete_node) { RayoNode.from_xml(parse_stanza(stanza).root) }
it "should understand a finish reason" do
expect(subject.reason).to be_instance_of ReceiveFax::Complete::Finish
end
describe "should make the fax data available" do
subject { complete_node.fax }
it { should be_instance_of ReceiveFax::Fax }
describe '#url' do
subject { super().url }
it { should be == 'http://shakespere.lit/faxes/fax1.tiff' }
end
describe '#resolution' do
subject { super().resolution }
it { should be == '595x841' }
end
describe '#pages' do
subject { super().pages }
it { should be == 3 }
end
describe '#size' do
subject { super().size }
it { should be == 12287492817 }
end
end
describe '#fax_metadata' do
subject { super().fax_metadata }
it { should == {'fax-transfer-rate' => '10000', 'foo' => 'true'} }
end
end
end
end
end