DG MS; validate_aspect_permissions broken out of post method
This commit is contained in:
parent
c8221cfcae
commit
107c05ef6f
2 changed files with 44 additions and 9 deletions
|
|
@ -106,11 +106,7 @@ class User
|
||||||
aspect_ids = options.delete(:to)
|
aspect_ids = options.delete(:to)
|
||||||
end
|
end
|
||||||
|
|
||||||
aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId
|
aspect_ids = validate_aspect_permissions(aspect_ids)
|
||||||
|
|
||||||
raise ArgumentError.new("You must post to someone.") if aspect_ids.nil? || aspect_ids.empty?
|
|
||||||
aspect_ids.each{ |aspect_id|
|
|
||||||
raise ArgumentError.new("Cannot post to an aspect you do not own.") unless aspect_id == "all" || self.aspects.find(aspect_id) }
|
|
||||||
|
|
||||||
post = build_post(class_name, options)
|
post = build_post(class_name, options)
|
||||||
|
|
||||||
|
|
@ -120,6 +116,28 @@ class User
|
||||||
post
|
post
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def repost( post, options = {} )
|
||||||
|
aspect_ids = validate_aspect_permissions(options[:to])
|
||||||
|
push_to_aspects(post, aspect_ids)
|
||||||
|
post
|
||||||
|
end
|
||||||
|
|
||||||
|
def validate_aspect_permissions(aspect_ids)
|
||||||
|
aspect_ids = [aspect_ids.to_s] if aspect_ids.is_a? BSON::ObjectId
|
||||||
|
|
||||||
|
if aspect_ids.nil? || aspect_ids.empty?
|
||||||
|
raise ArgumentError.new("You must post to someone.")
|
||||||
|
end
|
||||||
|
|
||||||
|
aspect_ids.each do |aspect_id|
|
||||||
|
unless aspect_id == "all" || self.aspects.find(aspect_id)
|
||||||
|
raise ArgumentError.new("Cannot post to an aspect you do not own.")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
aspect_ids
|
||||||
|
end
|
||||||
|
|
||||||
def build_post( class_name, options = {})
|
def build_post( class_name, options = {})
|
||||||
options[:person] = self.person
|
options[:person] = self.person
|
||||||
model_class = class_name.to_s.camelize.constantize
|
model_class = class_name.to_s.camelize.constantize
|
||||||
|
|
|
||||||
|
|
@ -26,15 +26,22 @@ describe User do
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'posting' do
|
context 'posting' do
|
||||||
describe '#post' do
|
|
||||||
|
describe '#validate_aspect_permissions' do
|
||||||
it 'should not be able to post without a aspect' do
|
it 'should not be able to post without a aspect' do
|
||||||
proc {user.post(:status_message, :message => "heyheyhey")}.should raise_error /You must post to someone/
|
proc {
|
||||||
|
user.validate_aspect_permissions([])
|
||||||
|
}.should raise_error /You must post to someone/
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'should not be able to post to someone elses aspect' do
|
it 'should not be able to post to someone elses aspect' do
|
||||||
proc {user.post(:status_message, :message => "heyheyhey", :to => aspect2.id)}.should raise_error /Cannot post to an aspect you do not own./
|
proc {
|
||||||
|
user.validate_aspect_permissions(aspect2.id)
|
||||||
|
}.should raise_error /Cannot post to an aspect you do not own./
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe '#post' do
|
||||||
it 'should put the post in the aspect post array' do
|
it 'should put the post in the aspect post array' do
|
||||||
post = user.post(:status_message, :message => "hey", :to => aspect.id)
|
post = user.post(:status_message, :message => "hey", :to => aspect.id)
|
||||||
aspect.reload
|
aspect.reload
|
||||||
|
|
@ -47,6 +54,16 @@ describe User do
|
||||||
aspect.posts.should include album
|
aspect.posts.should include album
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
describe '#repost' do
|
||||||
|
let!(:status_message) { user.post(:status_message, :message => "hello", :to => aspect.id) }
|
||||||
|
|
||||||
|
it 'should make the post visible in another aspect' do
|
||||||
|
user.repost( status_message, :to => aspect1.id )
|
||||||
|
aspect1.reload
|
||||||
|
aspect1.posts.count.should be 1
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'dispatching' do
|
context 'dispatching' do
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue