* VRFS-100 completed

This commit is contained in:
Seth Call 2012-11-17 21:41:12 -06:00
parent e372f6858e
commit 27266ca90a
3 changed files with 29 additions and 20 deletions

View File

@ -29,13 +29,20 @@ module JamRuby
end
# Verifies that the specified user can join this music session
def can_join? user
if self.musician_access
return true
def can_join? user, as_musician
if as_musician
if self.musician_access
return true
else
# the creator can always join, and the invited users can join
return self.creator == user || self.invited_musicians.exists?(user)
end
else
# the creator can always join, and the invited users can join
return self.creator == user || self.invited_musicians.exists?(user)
# it's a fan, and the only way a fan can join is if fan_access is true
return self.fan_access
end
end
# Verifies that the specified user can see this music session

View File

@ -16,9 +16,11 @@ describe ConnectionManager do
end
end
def create_music_session(user_id)
def create_music_session(user_id, options={})
default_options = {:musician_access => true, :fan_chat => true, :fan_access => true, :approval_required=> false}
options = default_options.merge(options)
description = "some session"
@conn.exec("INSERT INTO music_sessions (user_id, description, musician_access, approval_required, fan_chat, fan_access) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id", [user_id, description, true, false, true, true]) do |result|
@conn.exec("INSERT INTO music_sessions (user_id, description, musician_access, approval_required, fan_chat, fan_access) VALUES ($1, $2, $3, $4, $5, $6) RETURNING id", [user_id, description, options[:musician_access], options[:approval_required], options[:fan_chat], options[:fan_access]]) do |result|
return result.getvalue(0, 0)
end
end
@ -278,15 +280,15 @@ describe ConnectionManager do
end
it "join_music_session fails if fan_access=true and the user is a fan" do
it "join_music_session fails if fan_access=false and the user is a fan" do
client_id = "client_id10.2"
user_id = create_user("test", "user10.2", "user10.2@jamkazam.com", :musician => false)
client_id = "client_id10.3"
user_id = create_user("test", "user10.3", "user10.3@jamkazam.com", :musician => false)
music_session_id = create_music_session(user_id, :fan_access => false)
@conn.transaction do
expect { @connman.join_music_session(user_id, client_id, music_session_id, 'blarg') }.to raise_error(JamRuby::PermissionError)
expect { @connman.join_music_session(user_id, client_id, music_session_id, false) }.to raise_error(JamRuby::PermissionError)
end
end

View File

@ -29,9 +29,9 @@ describe MusicSession do
music_session = FactoryGirl.create(:music_session, :creator => user1, :musician_access => true)
music_session.can_join?(user1).should == true
music_session.can_join?(user2).should == true
music_session.can_join?(user3).should == true
music_session.can_join?(user1, true).should == true
music_session.can_join?(user2, true).should == true
music_session.can_join?(user3, true).should == true
end
it 'no one but invited people can join closed music session' do
@ -42,18 +42,18 @@ describe MusicSession do
music_session = FactoryGirl.create(:music_session, :creator => user1, :musician_access => false)
FactoryGirl.create(:connection, :user => user1, :music_session => music_session)
music_session.can_join?(user1).should == true
music_session.can_join?(user2).should == false
music_session.can_join?(user3).should == false
music_session.can_join?(user1, true).should == true
music_session.can_join?(user2, true).should == false
music_session.can_join?(user3, true).should == false
# invite user 2
FactoryGirl.create(:friendship, :user => user1, :friend => user2)
FactoryGirl.create(:friendship, :user => user2, :friend => user1)
FactoryGirl.create(:invitation, :sender => user1, :receiver => user2, :music_session => music_session)
music_session.can_join?(user1).should == true
music_session.can_join?(user2).should == true
music_session.can_join?(user3).should == false
music_session.can_join?(user1, true).should == true
music_session.can_join?(user2, true).should == true
music_session.can_join?(user3, true).should == false
end
it 'no one but invited people can see closed music session' do