* VRFS-1880 - fixed issue and added test
This commit is contained in:
parent
74b63c5aa5
commit
27fe4f4ae9
|
|
@ -19,6 +19,10 @@ module JamRuby
|
|||
Nav.home(dialog: 'accept-friend-request', dialog_opts: {d1: friend_request_id})
|
||||
end
|
||||
|
||||
def self.session_detail(music_session)
|
||||
"#{base_url}/account/sessionDetail/#{music_session.id}"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def self.base_url
|
||||
|
|
|
|||
|
|
@ -4,9 +4,15 @@ module JamRuby
|
|||
belongs_to :user, :class_name => "JamRuby::User"
|
||||
has_many :rsvp_requests_rsvp_slots, :class_name => "JamRuby::RsvpRequestRsvpSlot", :foreign_key => "rsvp_request_id"
|
||||
has_many :rsvp_slots, :class_name => "JamRuby::RsvpSlot", :through => :rsvp_requests_rsvp_slots
|
||||
|
||||
|
||||
validates :user, presence: true
|
||||
validates :canceled, :inclusion => {:in => [nil, true, false]}
|
||||
|
||||
# pulls all instruments from the associated rsvp_slots
|
||||
def instrument_list
|
||||
rsvp_slots.map(&:instrument)
|
||||
end
|
||||
|
||||
def self.index(music_session, user=nil, options={})
|
||||
query = RsvpRequest
|
||||
.includes(:user)
|
||||
|
|
|
|||
|
|
@ -351,4 +351,16 @@ describe RsvpRequest do
|
|||
expect {RsvpRequest.cancel({:id => rsvp.id, :session_id => @music_session.id, :cancelled => "all", :message => "I'm gonna cancel all your RSVPs"}, user)}.to raise_error(PermissionError)
|
||||
end
|
||||
end
|
||||
|
||||
describe "instrument_list" do
|
||||
it "single instrument" do
|
||||
rsvp_request = FactoryGirl.create(:rsvp_request, rsvp_slots: [@slot1], user: @session_invitee)
|
||||
rsvp_request.instrument_list.should == [ JamRuby::Instrument.find('electric guitar')]
|
||||
end
|
||||
|
||||
it "multiple instruments" do
|
||||
rsvp_request = FactoryGirl.create(:rsvp_request, rsvp_slots: [@slot1, @slot2], user: @session_invitee)
|
||||
rsvp_request.instrument_list.should == [ @slot1.instrument, @slot2.instrument ]
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -173,13 +173,13 @@
|
|||
var latencyHtml = "";
|
||||
$.each(sessionData.pending_rsvp_requests, function(index, request) {
|
||||
if (request.user_id != context.JK.currentUserId) {
|
||||
if ("instrument_list" in request.user && request.user.instrument_list != null) {
|
||||
$.each(request.user.instrument_list, function (index, instrument) {
|
||||
var inst = '../assets/content/icon_instrument_default24.png';
|
||||
if ("instrument_list" in request && request.instrument_list != null) {
|
||||
$.each(request.instrument_list, function (index, instrument) {
|
||||
var inst = '/assets/content/icon_instrument_default24.png';
|
||||
if (instrument.id in instrument_logo_map) {
|
||||
inst = instrument_logo_map[instrument.id].asset;
|
||||
}
|
||||
instrumentLogoHtml += '<img src="' + inst + '" width="24" height="24" /> ';
|
||||
instrumentLogoHtml += '<img data-instrument-id="' + instrument.id + '" src="' + inst + '" width="24" height="24" /> ';
|
||||
})
|
||||
}
|
||||
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
$.each(sessionData.approved_rsvps, function(index, request) {
|
||||
if ("instrument_list" in request) {
|
||||
$.each(request.instrument_list, function(index, instrument) {
|
||||
var inst = '../assets/content/icon_instrument_default24.png';
|
||||
var inst = '/assets/content/icon_instrument_default24.png';
|
||||
if (instrument.id in instrument_logo_map) {
|
||||
inst = instrument_logo_map[instrument.id].asset;
|
||||
}
|
||||
|
|
@ -250,7 +250,7 @@
|
|||
var resultHtml = "";
|
||||
var slotHtml = "";
|
||||
$.each(sessionData.open_slots, function(index, slot) {
|
||||
var inst = '../assets/content/icon_instrument_default24.png';
|
||||
var inst = '/assets/content/icon_instrument_default24.png';
|
||||
if ("instrument_id" in slot) {
|
||||
inst = instrument_logo_map[slot.instrument_id].asset;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -107,10 +107,10 @@ else
|
|||
}
|
||||
|
||||
child({:pending_rsvp_requests => :pending_rsvp_requests}) {
|
||||
attributes :id, :email, :photo_url, :user_id
|
||||
attributes :id, :email, :photo_url, :user_id, :instrument_list
|
||||
|
||||
child({:user => :user}) {
|
||||
attributes :id, :photo_url, :name, :first_name, :last_name, :instrument_list
|
||||
attributes :id, :photo_url, :name, :first_name, :last_name
|
||||
|
||||
node do |user|
|
||||
{ latency: user_score(user.id), name: user.name }
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
.box-header
|
||||
%h2.left
|
||||
RSVPs
|
||||
.right
|
||||
.right.rsvp-help-notice
|
||||
{{data.notification_msg}}
|
||||
.clearall
|
||||
#pendingRSVPs
|
||||
|
|
|
|||
|
|
@ -488,7 +488,8 @@ FactoryGirl.define do
|
|||
factory :rsvp_slot, class: JamRuby::RsvpSlot do
|
||||
|
||||
proficiency_level 'beginner'
|
||||
instrument { Instrument.find('electric guitar') }
|
||||
instrument { Instrument.find('electric guitar') }
|
||||
association :music_session, :factory => :music_session
|
||||
|
||||
factory :chosen_rsvp_slot do
|
||||
ignore do
|
||||
|
|
@ -500,6 +501,17 @@ FactoryGirl.define do
|
|||
rsvp_request_rsvp_slot = FactoryGirl.create(:rsvp_request_rsvp_slot, chosen:true, rsvp_request: rsvp_request, rsvp_slot:rsvp_slot)
|
||||
}
|
||||
end
|
||||
|
||||
factory :requested_rsvp_slot do
|
||||
ignore do
|
||||
user nil
|
||||
end
|
||||
|
||||
after(:create) { |rsvp_slot, evaluator|
|
||||
rsvp_request = FactoryGirl.create(:rsvp_request, user: evaluator.user)
|
||||
rsvp_request_rsvp_slot = FactoryGirl.create(:rsvp_request_rsvp_slot, chosen:nil, rsvp_request: rsvp_request, rsvp_slot:rsvp_slot)
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
factory :rsvp_request, class: JamRuby::RsvpRequest do
|
||||
|
|
|
|||
|
|
@ -0,0 +1,29 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe "Session Detail", :js => true, :type => :feature, :capybara_feature => true do
|
||||
|
||||
|
||||
let(:searcher) { FactoryGirl.create(:user) }
|
||||
let(:requested_rsvp_slot) {FactoryGirl.create(:requested_rsvp_slot, user: searcher)}
|
||||
|
||||
before(:each) do
|
||||
SessionInfoComment.delete_all
|
||||
Notification.delete_all
|
||||
RsvpRequestRsvpSlot.delete_all
|
||||
RsvpRequest.delete_all
|
||||
RsvpSlot.delete_all
|
||||
Invitation.delete_all
|
||||
MusicSession.delete_all
|
||||
|
||||
stub_const("APP_CONFIG", web_config)
|
||||
end
|
||||
|
||||
it "view pending requests" do
|
||||
fast_signin(requested_rsvp_slot.music_session.creator, Nav.session_detail(requested_rsvp_slot.music_session))
|
||||
|
||||
find('h2', text: 'RSVPs')
|
||||
find('div.rsvp-help-notice', text: 'You have new RSVPs to review and approve, see details.')
|
||||
find('#pendingRSVPs .rsvp-table td', text: searcher.name)
|
||||
find("#pendingRSVPs .rsvp-table img[data-instrument-id='#{requested_rsvp_slot.instrument_id}']")
|
||||
end
|
||||
end
|
||||
|
|
@ -37,25 +37,19 @@ describe "Session Info", :js => true, :type => :feature, :capybara_feature => tr
|
|||
FactoryGirl.create(:friendship, :user => @rsvp_declined_user, :friend => @session_creator)
|
||||
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, :musician_access => true, :approval_required => true, :open_rsvps => false)
|
||||
@music_session.save
|
||||
@music_session = FactoryGirl.create(:music_session, :creator => @session_creator, :scheduled_start => Time.now.utc + 2.days, :musician_access => true, :approval_required => true, :open_rsvps => false)
|
||||
|
||||
@url = "/sessions/#{@music_session.id}/details"
|
||||
|
||||
@slot1 = FactoryGirl.build(:rsvp_slot, :music_session => @music_session, :instrument => JamRuby::Instrument.find('electric guitar'))
|
||||
@slot1.save
|
||||
@slot1 = FactoryGirl.create(:rsvp_slot, :music_session => @music_session, :instrument => JamRuby::Instrument.find('electric guitar'))
|
||||
|
||||
@slot2 = FactoryGirl.build(:rsvp_slot, :music_session => @music_session, :instrument => JamRuby::Instrument.find('drums'))
|
||||
@slot2.save
|
||||
@slot2 = FactoryGirl.create(:rsvp_slot, :music_session => @music_session, :instrument => JamRuby::Instrument.find('drums'))
|
||||
|
||||
@invitation = FactoryGirl.build(:invitation, :sender => @session_creator, :receiver => @session_invitee, :music_session => @music_session)
|
||||
@invitation.save
|
||||
@invitation = FactoryGirl.create(:invitation, :sender => @session_creator, :receiver => @session_invitee, :music_session => @music_session)
|
||||
|
||||
@invitation = FactoryGirl.build(:invitation, :sender => @session_creator, :receiver => @rsvp_approved_user, :music_session => @music_session)
|
||||
@invitation.save
|
||||
@invitation = FactoryGirl.create(:invitation, :sender => @session_creator, :receiver => @rsvp_approved_user, :music_session => @music_session)
|
||||
|
||||
@invitation = FactoryGirl.build(:invitation, :sender => @session_creator, :receiver => @rsvp_declined_user, :music_session => @music_session)
|
||||
@invitation.save
|
||||
@invitation = FactoryGirl.create(:invitation, :sender => @session_creator, :receiver => @rsvp_declined_user, :music_session => @music_session)
|
||||
|
||||
# create RSVP request 1
|
||||
@rsvp1 = RsvpRequest.create({:session_id => @music_session.id, :rsvp_slots => [@slot1.id, @slot2.id], :message => "Let's Jam!"}, @rsvp_approved_user)
|
||||
|
|
|
|||
Loading…
Reference in New Issue