allow teachers/students to always get in

This commit is contained in:
Seth Call 2018-07-29 13:26:09 -05:00
parent 753cc8e4d9
commit 8a9eb794b7
4 changed files with 49 additions and 4 deletions

View File

@ -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

View File

@ -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

View File

@ -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|

View File

@ -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'