require 'spec_helper'
def muc_invite_xml
<<-XML
Hey Hecate, this is the place for all good witches!
foobar
XML
end
def muc_decline_xml
<<-XML
Sorry, I'm too busy right now.
XML
end
describe 'Blather::Stanza::Message::MUCUser' do
it 'ensures a form node is present on create' do
c = Blather::Stanza::Message::MUCUser.new
expect(c.xpath('ns:x', :ns => Blather::Stanza::Message::MUCUser.registered_ns)).not_to be_empty
end
it 'ensures a form node exists when calling #muc' do
c = Blather::Stanza::Message::MUCUser.new
c.remove_children :x
expect(c.xpath('ns:x', :ns => Blather::Stanza::Message::MUCUser.registered_ns)).to be_empty
expect(c.muc_user).not_to be_nil
expect(c.xpath('ns:x', :ns => Blather::Stanza::Message::MUCUser.registered_ns)).not_to be_empty
end
it 'ensures the message type is :normal' do
m = Blather::Stanza::Message::MUCUser.new
expect(m.normal?).to eq(true)
end
it "must be able to set the password" do
muc_user = Blather::Stanza::Message::MUCUser.new
expect(muc_user.password).to eq(nil)
muc_user.password = 'barbaz'
expect(muc_user.password).to eq('barbaz')
muc_user.password = 'hello_world'
expect(muc_user.password).to eq('hello_world')
end
it "should not be an #invite?" do
muc_user = Blather::Stanza::Message::MUCUser.new
expect(muc_user.invite?).to eq(false)
end
describe "with an invite element" do
it "should be an #invite?" do
muc_user = Blather::XMPPNode.parse(muc_invite_xml)
expect(muc_user.invite?).to eq(true)
end
it "should know the invite attributes properly" do
muc_user = Blather::XMPPNode.parse(muc_invite_xml)
expect(muc_user).to be_instance_of Blather::Stanza::Message::MUCUser
invite = muc_user.invite
expect(invite.to).to eq('hecate@shakespeare.lit')
expect(invite.from).to eq('crone1@shakespeare.lit/desktop')
expect(invite.reason).to eq('Hey Hecate, this is the place for all good witches!')
expect(muc_user.password).to eq('foobar')
end
it "must be able to set the to jid" do
muc_user = Blather::Stanza::Message::MUCUser.new
invite = muc_user.invite
expect(invite.to).to eq(nil)
invite.to = 'foo@bar.com'
expect(invite.to).to eq('foo@bar.com')
end
it "must be able to set the from jid" do
muc_user = Blather::Stanza::Message::MUCUser.new
invite = muc_user.invite
expect(invite.from).to eq(nil)
invite.from = 'foo@bar.com'
expect(invite.from).to eq('foo@bar.com')
end
it "must be able to set the reason" do
muc_user = Blather::Stanza::Message::MUCUser.new
invite = muc_user.invite
expect(invite.reason).to eq('')
invite.reason = 'Please join'
expect(invite.reason).to eq('Please join')
end
end
describe "with a decline element" do
it "should be an #invite_decline?" do
muc_user = Blather::XMPPNode.parse(muc_decline_xml)
expect(muc_user).to be_instance_of Blather::Stanza::Message::MUCUser
expect(muc_user.invite_decline?).to eq(true)
end
it "should know the decline attributes properly" do
muc_user = Blather::XMPPNode.parse(muc_decline_xml)
decline = muc_user.decline
expect(decline.to).to eq('crone1@shakespeare.lit')
expect(decline.from).to eq('hecate@shakespeare.lit')
expect(decline.reason).to eq("Sorry, I'm too busy right now.")
end
it "must be able to set the to jid" do
muc_user = Blather::Stanza::Message::MUCUser.new
decline = muc_user.decline
expect(decline.to).to eq(nil)
decline.to = 'foo@bar.com'
expect(decline.to).to eq('foo@bar.com')
end
it "must be able to set the from jid" do
muc_user = Blather::Stanza::Message::MUCUser.new
decline = muc_user.decline
expect(decline.from).to eq(nil)
decline.from = 'foo@bar.com'
expect(decline.from).to eq('foo@bar.com')
end
it "must be able to set the reason" do
muc_user = Blather::Stanza::Message::MUCUser.new
decline = muc_user.decline
expect(decline.reason).to eq('')
decline.reason = 'Please join'
expect(decline.reason).to eq('Please join')
end
end
end