Merge branch 'master' of github.com:diaspora/diaspora

This commit is contained in:
maxwell 2010-11-03 00:10:11 -07:00
commit 0343e7a226
6 changed files with 61 additions and 47 deletions

View file

@ -34,15 +34,11 @@ class Photo < Post
before_destroy :ensure_user_picture
def self.instantiate(params = {})
photo = super(params)
image_file = params.delete(:user_file)
person = params.delete(:person)
photo = Photo.new(params)
photo.diaspora_handle = params[:diaspora_handle]
photo.album_id = params[:album_id]
photo.image.store! image_file
photo.person = person
photo.save
photo
end

View file

@ -138,29 +138,43 @@ class User
end
######## Posting ########
def post(class_name, options = {})
if class_name == :photo && !options[:album_id].to_s.empty?
aspect_ids = aspects_with_post(options[:album_id])
def post(class_name, opts = {})
post = build_post(class_name, opts)
if post.save
raise 'MongoMapper failed to catch a failed save' unless post.id
dispatch_post(post, :to => opts[:to])
end
post
end
def build_post(class_name, opts = {})
opts[:person] = self.person
opts[:diaspora_handle] = self.person.diaspora_handle
model_class = class_name.to_s.camelize.constantize
model_class.instantiate(opts)
end
def dispatch_post(post, opts = {})
if post.is_a?(Photo) && post.album_id
aspect_ids = aspects_with_post(post.album_id)
aspect_ids.map! { |aspect| aspect.id }
else
aspect_ids = options.delete(:to)
aspect_ids = opts.delete(:to)
end
aspect_ids = validate_aspect_permissions(aspect_ids)
post = build_post(class_name, options)
if post.persisted?
Rails.logger.info("Pushing: #{post.inspect} out to aspects")
push_to_aspects(post, aspect_ids)
post.socket_to_uid(id, :aspect_ids => aspect_ids) if post.respond_to?(:socket_to_uid)
if options[:public] == true
self.services.each do |service|
self.send("post_to_#{service.provider}".to_sym, service, post.message)
end
self.raw_visible_posts << post
self.save
Rails.logger.info("Pushing: #{post.inspect} out to aspects")
push_to_aspects(post, aspect_ids)
post.socket_to_uid(id, :aspect_ids => aspect_ids) if post.respond_to?(:socket_to_uid)
if post.public
self.services.each do |service|
self.send("post_to_#{service.provider}".to_sym, service, post.message)
end
end
post
end
def post_to_facebook(service, message)
@ -203,20 +217,6 @@ class User
aspect_ids
end
def build_post(class_name, options = {})
options[:person] = self.person
options[:diaspora_handle] = self.person.diaspora_handle
model_class = class_name.to_s.camelize.constantize
post = model_class.instantiate(options)
if post.save
raise 'MongoMapper failed to catch a failed save' unless post.id
self.raw_visible_posts << post
self.save
end
post
end
def push_to_aspects(post, aspect_ids)
if aspect_ids == :all || aspect_ids == "all"
aspects = self.aspects

View file

@ -1,10 +1,13 @@
namespace :cruise do
desc "Run all specs and features"
task :cruise => :environment do
system('/etc/init.d/xvfb start')
puts "Starting virtual display..."
`sh -e /etc/init.d/xvfb start`
puts "Starting specs..."
system('export DISPLAY=:99.0 && export SELENIUM_SERVER_PORT=53809 && bundle exec rake')
exit_status = $?.exitstatus
system('/etc/init.d/xvfb stop')
puts "Stopping virtual display..."
`sh -e /etc/init.d/xvfb stop`
raise "tests failed!" unless exit_status == 0
end
end

View file

@ -9,6 +9,7 @@ describe Diaspora::WebSocket do
@user = make_user
@aspect = @user.aspects.create(:name => "losers")
@post = @user.build_post(:status_message, :message => "hey", :to => @aspect.id)
@post.save
end
it 'should queue a job' do

View file

@ -42,15 +42,18 @@ describe Photo do
it 'sets the persons diaspora handle' do
@photo2.diaspora_handle.should == @user.person.diaspora_handle
end
it 'has a constructor' do
image = File.open(@fixture_name)
photo = Photo.instantiate(
:person => @user.person, :album => @album, :user_file => image)
photo.created_at.nil?.should be true
photo.image.read.nil?.should be false
photo.album.should == @album
end
end
it 'has a constructor' do
image = File.open(@fixture_name)
photo = Photo.instantiate(
:person => @user.person, :album => @album, :user_file => image)
photo.created_at.nil?.should be false
photo.image.read.nil?.should be false
end
it 'should save a photo' do
@photo.image.store! File.open(@fixture_name)

View file

@ -36,7 +36,19 @@ describe User do
end
end
describe '#post' do
describe '#build_post' do
it 'does not save a status_message' do
post = user.build_post(:status_message, :message => "hey", :to => aspect.id)
post.persisted?.should be_false
end
it 'does not save an album' do
post = user.build_post(:album, :name => "hey", :to => aspect.id)
post.persisted?.should be_false
end
end
describe '#dispatch_post' do
it 'should put the post in the aspect post array' do
post = user.post(:status_message, :message => "hey", :to => aspect.id)
aspect.reload
@ -67,7 +79,6 @@ describe User do
user.should_receive(:post_to_facebook).exactly(0).times
user.post :status_message, :message => "hi", :to => "all"
end
end
describe '#update_post' do