require 'spec_helper'
describe ActivityStreams::Activity do
let :required_attributes do
{
:actor => ActivityStreams::Object.new(:display_name => 'Nov Matake'),
:published => Time.now
}
end
let :optional_attributes do
{
:id => 'activitystrea.ms/activity/foo',
:object => ActivityStreams::Object.new,
:target => ActivityStreams::Object.new,
:title => 'Title',
:content => 'Content',
:provider => ActivityStreams::Object.new,
:generator => ActivityStreams::Object.new,
:icon => ActivityStreams::MediaLink.new(:url => 'http://example.com/images/icon.png'),
:updated => Time.now,
:url => 'activitystrea.ms/activity/bar'
}
end
let(:valid_attributes) { required_attributes.merge(optional_attributes) }
context 'when missing attributes' do
it do
expect { ActivityStreams::Activity.new }.should raise_error AttrRequired::AttrMissing
end
end
context 'otherwise' do
it do
expect { ActivityStreams::Activity.new required_attributes }.should_not raise_error AttrRequired::AttrMissing
end
end
context 'when invalid attributes given' do
it do
expect do
ActivityStreams::Activity.new valid_attributes.merge(:icon => 'http://example.com/images/icon.png')
end.should raise_error ActivityStreams::InvalidAttribute
end
end
context 'otherwise' do
it do
expect { ActivityStreams::Activity.new valid_attributes }.should_not raise_error AttrRequired::AttrMissing
end
end
describe '#recommended_verb?' do
let(:activity) do
ActivityStreams::Activity.new valid_attributes.merge(
:object => object,
:verb => verb
)
end
context 'when object is Bookmark' do
let(:object) { ActivityStreams::Object::Bookmark.new }
context 'when recommended verb used' do
let(:verb) { ActivityStreams::Verb.new }
it 'should not warn' do
ActivityStreams.logger.should_not_receive(:warn)
activity
end
end
context 'otherwise' do
let(:verb) { ActivityStreams::Verb::Add.new }
it 'should warn' do
ActivityStreams.logger.should_receive(:warn).with(
"\"#{verb.to_s}\" is not recommended. \"#{object.recommended_verbs.collect(&:to_s).join('", "')}\" are recommended."
)
activity
end
end
end
end
end