* VRFS-100 completed
This commit is contained in:
parent
e372f6858e
commit
27266ca90a
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue