DG MS; added specs for common module

This commit is contained in:
danielvincent 2010-06-17 15:22:02 -07:00
parent 628af0372f
commit ba6d136bc7
3 changed files with 44 additions and 23 deletions

View file

@ -7,7 +7,7 @@ class Post
include Mongoid::Document
include Mongoid::Timestamps
include ROXML
include Diaspora::Hookey
include Diaspora::Webhooks
xml_accessor :owner
xml_accessor :snippet

View file

@ -1,26 +1,7 @@
module Diaspora
module CommonFields
module Webhooks
def self.included(klass)
klass.class_eval do
include Mongoid::Document
include ROXML
include Mongoid::Timestamps
xml_accessor :owner
xml_accessor :snippet
xml_accessor :source
field :owner
field :source
field :snippet
end
end
end
module Hookey
def self.included(klass)
klass.class_eval do
before_save :notify_friends
@ -33,7 +14,7 @@ module Diaspora
end
def prep_webhook
self.to_xml.to_s.chomp
self.to_xml.to_s
end
def friends_with_permissions

40
spec/lib/common_spec.rb Normal file
View file

@ -0,0 +1,40 @@
require File.dirname(__FILE__) + '/../spec_helper'
include Diaspora
describe Diaspora do
describe Webhooks do
before do
@post = Factory.build(:post)
end
it "should add the following methods to Post on inclusion" do
@post.respond_to?(:notify_friends).should be true
@post.respond_to?(:prep_webhook).should be true
@post.respond_to?(:friends_with_permissions).should be true
end
it "should convert an object to a proper webhook" do
@post.prep_webhook.should == @post.to_xml.to_s
end
it "should retrieve all valid friend endpoints" do
Factory.create(:friend, :url => "http://www.bob.com")
Factory.create(:friend, :url => "http://www.alice.com")
Factory.create(:friend, :url => "http://www.jane.com")
@post.friends_with_permissions.should include("http://www.bob.com/receive/")
@post.friends_with_permissions.should include("http://www.alice.com/receive/")
@post.friends_with_permissions.should include("http://www.jane.com/receive/")
end
it "should send all prepped webhooks to be processed" do
MessageHandler.any_instance.stubs(:add_post_request).returns(true)
MessageHandler.any_instance.stubs(:process).returns(true)
@post.notify_friends.should be true
end
end
end