spec/blather/stanza/presence/status_spec.rb in blather-0.3.4 vs spec/blather/stanza/presence/status_spec.rb in blather-0.4.0
- old
+ new
@@ -1,85 +1,95 @@
require File.join(File.dirname(__FILE__), *%w[.. .. .. spec_helper])
-describe 'Blather::Stanza::Presence::Status' do
+describe Blather::Stanza::Presence::Status do
it 'registers itself' do
- XMPPNode.class_from_registration(:status, nil).must_equal Stanza::Presence::Status
+ Blather::XMPPNode.class_from_registration(:status, nil).must_equal Blather::Stanza::Presence::Status
end
+ it 'must be importable as unavailable' do
+ doc = parse_stanza '<presence type="unavailable"/>'
+ Blather::XMPPNode.import(doc.root).must_be_instance_of Blather::Stanza::Presence::Status
+ end
+
+ it 'must be importable as nil' do
+ doc = parse_stanza '<presence/>'
+ Blather::XMPPNode.import(doc.root).must_be_instance_of Blather::Stanza::Presence::Status
+ end
+
it 'can set state on creation' do
- status = Stanza::Presence::Status.new :away
+ status = Blather::Stanza::Presence::Status.new :away
status.state.must_equal :away
end
it 'can set a message on creation' do
- status = Stanza::Presence::Status.new nil, 'Say hello!'
+ status = Blather::Stanza::Presence::Status.new nil, 'Say hello!'
status.message.must_equal 'Say hello!'
end
it 'ensures type is nil or :unavailable' do
- status = Stanza::Presence::Status.new
+ status = Blather::Stanza::Presence::Status.new
lambda { status.type = :invalid_type_name }.must_raise(Blather::ArgumentError)
[nil, :unavailable].each do |valid_type|
status.type = valid_type
status.type.must_equal valid_type
end
end
it 'ensures state is one of Presence::Status::VALID_STATES' do
- status = Stanza::Presence::Status.new
+ status = Blather::Stanza::Presence::Status.new
lambda { status.state = :invalid_type_name }.must_raise(Blather::ArgumentError)
- Stanza::Presence::Status::VALID_STATES.each do |valid_state|
+ Blather::Stanza::Presence::Status::VALID_STATES.each do |valid_state|
status.state = valid_state
status.state.must_equal valid_state
end
end
it 'returns :available if state is nil' do
- Stanza::Presence::Status.new.state.must_equal :available
+ Blather::Stanza::Presence::Status.new.state.must_equal :available
end
it 'returns :unavailable if type is :unavailable' do
- status = Stanza::Presence::Status.new
+ status = Blather::Stanza::Presence::Status.new
status.type = :unavailable
status.state.must_equal :unavailable
end
it 'ensures priority is not greater than 127' do
- lambda { Stanza::Presence::Status.new.priority = 128 }.must_raise(Blather::ArgumentError)
+ lambda { Blather::Stanza::Presence::Status.new.priority = 128 }.must_raise(Blather::ArgumentError)
end
it 'ensures priority is not less than -128' do
- lambda { Stanza::Presence::Status.new.priority = -129 }.must_raise(Blather::ArgumentError)
+ lambda { Blather::Stanza::Presence::Status.new.priority = -129 }.must_raise(Blather::ArgumentError)
end
it 'has "attr_accessor" for priority' do
- status = Stanza::Presence::Status.new
+ status = Blather::Stanza::Presence::Status.new
status.priority.must_equal 0
status.priority = 10
status.children.detect { |n| n.element_name == 'priority' }.wont_be_nil
status.priority.must_equal 10
end
it 'has "attr_accessor" for message' do
- status = Stanza::Presence::Status.new
+ status = Blather::Stanza::Presence::Status.new
status.message.must_be_nil
status.message = 'new message'
status.children.detect { |n| n.element_name == 'status' }.wont_be_nil
status.message.must_equal 'new message'
end
it 'must be comparable by priority' do
- jid = JID.new 'a@b/c'
+ jid = Blather::JID.new 'a@b/c'
- status1 = Stanza::Presence::Status.new
+ status1 = Blather::Stanza::Presence::Status.new
status1.from = jid
- status2 = Stanza::Presence::Status.new
+ status2 = Blather::Stanza::Presence::Status.new
status2.from = jid
status1.priority = 1
status2.priority = -1
(status1 <=> status2).must_equal 1
@@ -87,16 +97,29 @@
status2.priority = 1
(status1 <=> status2).must_equal 0
end
- it 'raises an argument error if compared to a status with a different JID' do
- status1 = Stanza::Presence::Status.new
+ it 'raises an argument error if compared to a status with a different Blather::JID' do
+ status1 = Blather::Stanza::Presence::Status.new
status1.from = 'a@b/c'
- status2 = Stanza::Presence::Status.new
+ status2 = Blather::Stanza::Presence::Status.new
status2.from = 'd@e/f'
lambda { status1 <=> status2 }.must_raise(Blather::ArgumentError)
end
-end
+ Blather::Stanza::Presence::Status::VALID_STATES.each do |valid_state|
+ it "provides a helper (#{valid_state}?) for state #{valid_state}" do
+ Blather::Stanza::Presence::Status.new.must_respond_to :"#{valid_state}?"
+ end
+
+ it "returns true on call to (#{valid_state}?) if state == #{valid_state}" do
+ method = "#{valid_state}?".to_sym
+ stat = Blather::Stanza::Presence::Status.new
+ stat.state = valid_state
+ stat.must_respond_to method
+ stat.__send__(method).must_equal true
+ end
+ end
+end