allow teachers/students to always get in
This commit is contained in:
parent
753cc8e4d9
commit
8a9eb794b7
|
|
@ -693,6 +693,10 @@ module JamRuby
|
|||
description
|
||||
end
|
||||
|
||||
def is_lesson_member?(user)
|
||||
music_session.is_lesson_member?(user)
|
||||
end
|
||||
|
||||
def musician_access
|
||||
music_session.musician_access
|
||||
end
|
||||
|
|
|
|||
|
|
@ -98,8 +98,6 @@ module JamRuby
|
|||
|
||||
def can_join_music_session
|
||||
|
||||
# puts "can_join_music_session: #{music_session_id} was #{music_session_id_was}" if music_session_id_changed?
|
||||
|
||||
if music_session_id_changed? and !(music_session_id_was.nil? or music_session_id_was.blank?)
|
||||
errors.add(:music_session, ValidationMessages::CANT_JOIN_MULTIPLE_SESSIONS)
|
||||
return false
|
||||
|
|
@ -118,13 +116,21 @@ module JamRuby
|
|||
|
||||
if music_session.musician_access
|
||||
if music_session.approval_required
|
||||
if !(music_session.music_session.creator == user || music_session.creator == user || music_session.invited_musicians.exists?(user.id))
|
||||
if !(music_session.music_session.creator.id == user.id ||
|
||||
music_session.creator.id == user.id ||
|
||||
music_session.invited_musicians.exists?(user.id) ||
|
||||
music_session.is_lesson_member?(user))
|
||||
errors.add(:approval_required, ValidationMessages::INVITE_REQUIRED)
|
||||
return false
|
||||
end
|
||||
end
|
||||
else
|
||||
if !(music_session.music_session.creator == user || music_session.creator == user || music_session.invited_musicians.exists?(user.id))
|
||||
|
||||
if !(music_session.music_session.creator.id == user.id ||
|
||||
music_session.creator.id == user.id ||
|
||||
music_session.invited_musicians.exists?(user.id) ||
|
||||
music_session.is_lesson_member?(user))
|
||||
|
||||
errors.add(:musician_access, ValidationMessages::INVITE_REQUIRED)
|
||||
return false
|
||||
end
|
||||
|
|
|
|||
|
|
@ -417,6 +417,11 @@ module JamRuby
|
|||
!!lesson_session
|
||||
end
|
||||
|
||||
# checks if this is a lesson and if the person indicated is a teacher or student
|
||||
def is_lesson_member?(user)
|
||||
is_lesson? && (lesson_session.teacher.id == user.id || lesson_session.student.id == user.id)
|
||||
end
|
||||
|
||||
def grouped_tracks
|
||||
tracks = []
|
||||
self.music_session_user_histories.each do |msuh|
|
||||
|
|
|
|||
|
|
@ -544,6 +544,36 @@ describe "Active Music Session API ", :type => :api do
|
|||
music_session["join_requests"][0]["id"].should == join_request["id"]
|
||||
end
|
||||
|
||||
it "should allow join of teacher or student" do
|
||||
client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1")
|
||||
teacher = FactoryGirl.create(:teacher_user)
|
||||
lesson_session = normal_lesson(user, teacher)
|
||||
|
||||
|
||||
music_session = lesson_session.music_session
|
||||
|
||||
music_session.musician_access.should be false
|
||||
user2 = FactoryGirl.create(:user)
|
||||
client2 = FactoryGirl.create(:connection, :user => user2, :ip_address => "2.2.2.2")
|
||||
client3 = FactoryGirl.create(:connection, :user => teacher, :ip_address => "3.3.3.3")
|
||||
|
||||
login(user)
|
||||
post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
|
||||
login(user2)
|
||||
post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client2.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(422)
|
||||
rejected_join_attempt = JSON.parse(last_response.body)
|
||||
rejected_join_attempt["errors"]["musician_access"] = [ValidationMessages::INVITE_REQUIRED]
|
||||
|
||||
login(teacher)
|
||||
post "/api/sessions/#{music_session["id"]}/participants.json", { :client_id => client3.client_id, :as_musician => true, :tracks => [{"instrument_id" => "bass guitar", "sound" => "mono", "client_track_id" => "client_track_guid"}]}.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
end
|
||||
|
||||
it "should now allow join of approval_required=true session" do
|
||||
client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1")
|
||||
post '/api/sessions.json', defopts.merge({:approval_required => true}).to_json, "CONTENT_TYPE" => 'application/json'
|
||||
|
|
|
|||
Loading…
Reference in New Issue