VRFS-1749 more session info tests / fix "deprecated" warnings

This commit is contained in:
Brian Smith 2014-06-14 13:13:45 -04:00
parent 07864a0f76
commit a557e9966a
6 changed files with 107 additions and 26 deletions

View File

@ -468,7 +468,8 @@ module JamRuby
inner join rsvp_requests rr on rrrs.rsvp_request_id = rr.id inner join rsvp_requests rr on rrrs.rsvp_request_id = rr.id
inner join users u on u.id = rr.user_id inner join users u on u.id = rr.user_id
where rrrs.chosen = true and rs.music_session_id = '#{self.id}' where rrrs.chosen = true and rs.music_session_id = '#{self.id}'
order by u.id}) order by u.id}
)
users_collapsed_instruments = [] users_collapsed_instruments = []
user = User.new user = User.new
@ -481,10 +482,10 @@ module JamRuby
user.photo_url = u.photo_url user.photo_url = u.photo_url
user.first_name = u.first_name user.first_name = u.first_name
user.last_name = u.last_name user.last_name = u.last_name
user["instruments"] = [u.instrument_id] user.instrument_list = [u.instrument_id]
users_collapsed_instruments << user users_collapsed_instruments << user
else else
user["instruments"] << u.instrument_id user.instrument_list << u.instrument_id
end end
end end
@ -514,7 +515,8 @@ module JamRuby
inner join invitations i on u.id = i.receiver_id inner join invitations i on u.id = i.receiver_id
left join rsvp_requests rr on rr.user_id = i.receiver_id left join rsvp_requests rr on rr.user_id = i.receiver_id
where i.music_session_id = '#{self.id}' where i.music_session_id = '#{self.id}'
and rr.user_id is null}) and rr.user_id is null}
)
end end
def recordings def recordings

View File

@ -19,6 +19,9 @@ module JamRuby
# updating_password corresponds to a lost_password # updating_password corresponds to a lost_password
attr_accessor :updating_password, :updating_email, :updated_email, :update_email_confirmation_url, :administratively_created, :current_password, :setting_password, :confirm_current_password, :updating_avatar, :updating_progression_field, :mods_json attr_accessor :updating_password, :updating_email, :updated_email, :update_email_confirmation_url, :administratively_created, :current_password, :setting_password, :confirm_current_password, :updating_avatar, :updating_progression_field, :mods_json
# contains a list of instrument IDs (used to aggregate instruments under a user for various screens)
attr_accessor :instrument_list
belongs_to :icecast_server_group, class_name: "JamRuby::IcecastServerGroup", inverse_of: :users, foreign_key: 'icecast_server_group_id' belongs_to :icecast_server_group, class_name: "JamRuby::IcecastServerGroup", inverse_of: :users, foreign_key: 'icecast_server_group_id'
# authorizations (for facebook, etc -- omniauth) # authorizations (for facebook, etc -- omniauth)
@ -1240,6 +1243,19 @@ module JamRuby
User.where(:email => email).limit(1).pluck(:id).first User.where(:email => email).limit(1).pluck(:id).first
end end
def has_approved_rsvp(session)
approved_slots = RsvpSlot.find_by_sql(%Q{select rs.*
from rsvp_slots rs
inner join rsvp_requests_rsvp_slots rrrs on rrrs.rsvp_slot_id = rs.id
inner join rsvp_requests rr on rr.id = rrrs.rsvp_request_id
where rs.music_session_id = '#{session.id}'
and rr.user_id = '#{self.id}'
and rrrs.chosen = true
})
!approved_slots.blank?
end
# end devise compatibility # end devise compatibility
private private
def create_remember_token def create_remember_token

View File

@ -150,9 +150,6 @@ class ApiMusicSessionsController < ApiController
respond_with @music_session, responder: ApiResponder, :location => api_session_detail_url(@music_session) respond_with @music_session, responder: ApiResponder, :location => api_session_detail_url(@music_session)
end end
end end
end end
def show def show

View File

@ -41,14 +41,14 @@ class MusicSessionsController < ApplicationController
# session has started # session has started
else else
if @music_session.musician_access if @music_session.musician_access || current_user.id == @music_session.creator.id
if @music_session.approval_required @can_view = true
@can_view = false else
if current_user.has_approved_rsvp(@music_session)
@can_view = true
else else
@can_view = false @can_view = false
end end
else
@can_view = false
end end
end end
end end

View File

@ -80,7 +80,7 @@
.left.f11.ml10.rsvp-name .left.f11.ml10.rsvp-name
= rsvp.name = rsvp.name
.left.ml10 .left.ml10
- rsvp["instruments"].each do |i| - rsvp.instrument_list.each do |i|
%img.instrument-icon{'instrument-id' => i, height:24, width:24} %img.instrument-icon{'instrument-id' => i, height:24, width:24}
%br{:clear => "all"}/ %br{:clear => "all"}/

View File

@ -37,7 +37,7 @@ describe "Session Info", :js => true, :type => :feature, :capybara_feature => tr
FactoryGirl.create(:friendship, :user => @rsvp_declined_user, :friend => @session_creator) FactoryGirl.create(:friendship, :user => @rsvp_declined_user, :friend => @session_creator)
FactoryGirl.create(:friendship, :user => @session_creator, :friend => @rsvp_declined_user) FactoryGirl.create(:friendship, :user => @session_creator, :friend => @rsvp_declined_user)
@music_session = FactoryGirl.build(:music_session, :creator => @session_creator, :scheduled_start => Time.now.utc + 2.days) @music_session = FactoryGirl.build(:music_session, :creator => @session_creator, :scheduled_start => Time.now.utc + 2.days, :musician_access => true, :approval_required => true)
@music_session.save @music_session.save
@url = "/sessions/#{@music_session.id}/details" @url = "/sessions/#{@music_session.id}/details"
@ -119,6 +119,8 @@ describe "Session Info", :js => true, :type => :feature, :capybara_feature => tr
describe "view" do describe "view" do
########### BEGIN SESSION STARTS ###########
it "should render for any musician for sessions with open RSVPs before session starts" do it "should render for any musician for sessions with open RSVPs before session starts" do
@music_session.open_rsvps = true @music_session.open_rsvps = true
@ -187,46 +189,110 @@ describe "Session Info", :js => true, :type => :feature, :capybara_feature => tr
sign_out_poltergeist sign_out_poltergeist
end end
# musician_access = false, approval_required = false ########### AFTER SESSION STARTS ###########
it "should allow only RSVP approvals to view for 'XXX' option after session starts" do
# attempt to access with musician who wasn't invited
# musician_access = false, approval_required = false
it "should allow only RSVP approvals to view for 'rsvp_only' option after session starts" do
@music_session.musician_access = false
@music_session.approval_required = false
@music_session.scheduled_start = Time.now.utc - 1.hours
@music_session.save!
# attempt to access with musician who was invited but didn't RSVP # attempt to access with musician who was invited but didn't RSVP
sign_in_poltergeist(@session_invitee)
visit @url
ensure_failure
sign_out_poltergeist
# attempt to access with musician who wasn't invited
sign_in_poltergeist(@non_session_invitee)
visit @url
ensure_failure
sign_out_poltergeist
# attempt to access with musician who RSVP'ed but wasn't approved # attempt to access with musician who RSVP'ed but wasn't approved
sign_in_poltergeist(@rsvp_declined_user)
visit @url
ensure_failure
sign_out_poltergeist
# attempt to access with musician who RSVP'ed and was approved # attempt to access with musician who RSVP'ed and was approved
sign_in_poltergeist(@rsvp_approved_user)
visit @url
ensure_success({:show_cta => true, :button_text => 'CANCEL RSVP'})
sign_out_poltergeist
# attempt to access with session creator
sign_in_poltergeist(@session_creator)
visit @url
ensure_success({:show_cta => false})
sign_out_poltergeist
end end
# musician_access = true, approval_required = false # musician_access = true, approval_required = false
it "should allow anyone to view for 'at will' option after session starts" do it "should allow anyone to view for 'at will' option after session starts" do
# attempt to access with musician who wasn't invited
# attempt to access with musician who was invited but didn't RSVP # attempt to access with musician who was invited but didn't RSVP
sign_in_poltergeist(@session_invitee)
visit @url
ensure_success({:show_cta => true, :button_text => 'RSVP NOW!'})
sign_out_poltergeist
# attempt to access with musician who wasn't invited
sign_in_poltergeist(@non_session_invitee)
visit @url
ensure_failure # NON-INVITEE SHOULD NOT BE ABLE TO VIEW FOR CLOSED RSVPs
sign_out_poltergeist
# attempt to access with musician who RSVP'ed but wasn't approved # attempt to access with musician who RSVP'ed but wasn't approved
sign_in_poltergeist(@rsvp_declined_user)
visit @url
ensure_success({:show_cta => false})
sign_out_poltergeist
# attempt to access with musician who RSVP'ed and was approved # attempt to access with musician who RSVP'ed and was approved
sign_in_poltergeist(@rsvp_approved_user)
visit @url
ensure_success({:show_cta => true, :button_text => 'CANCEL RSVP'})
sign_out_poltergeist
# attempt to access with session creator
sign_in_poltergeist(@session_creator)
visit @url
ensure_success({:show_cta => false})
sign_out_poltergeist
end end
# musician_access = true, approval_required = true # musician_access = true, approval_required = true
it "should allow anyone to view for 'join by approval' option after session starts" do it "should allow anyone to view for 'join by approval' option after session starts" do
# attempt to access with musician who wasn't invited
# attempt to access with musician who was invited but didn't RSVP # attempt to access with musician who was invited but didn't RSVP
sign_in_poltergeist(@session_invitee)
visit @url
ensure_success({:show_cta => true, :button_text => 'RSVP NOW!'})
sign_out_poltergeist
# attempt to access with musician who wasn't invited
sign_in_poltergeist(@non_session_invitee)
visit @url
ensure_failure # NON-INVITEE SHOULD NOT BE ABLE TO VIEW FOR CLOSED RSVPs
sign_out_poltergeist
# attempt to access with musician who RSVP'ed but wasn't approved # attempt to access with musician who RSVP'ed but wasn't approved
sign_in_poltergeist(@rsvp_declined_user)
visit @url
ensure_success({:show_cta => false})
sign_out_poltergeist
# attempt to access with musician who RSVP'ed and was approved # attempt to access with musician who RSVP'ed and was approved
sign_in_poltergeist(@rsvp_approved_user)
visit @url
ensure_success({:show_cta => true, :button_text => 'CANCEL RSVP'})
sign_out_poltergeist
# attempt to access with session creator
sign_in_poltergeist(@session_creator)
visit @url
ensure_success({:show_cta => false})
sign_out_poltergeist
end end
it "should allow only RSVP approvals or session invitees to add comments" do it "should allow only RSVP approvals or session invitees to add comments" do