* VRFS-92 stub out music session params
This commit is contained in:
parent
ed76fe8699
commit
1a99565ea4
|
|
@ -27,6 +27,7 @@ require "jam_ruby/models/connection"
|
|||
require "jam_ruby/models/friendship"
|
||||
require "jam_ruby/models/music_session"
|
||||
require "jam_ruby/models/invitation"
|
||||
require "jam_ruby/models/fan_invitation"
|
||||
require "jam_ruby/models/friend_request"
|
||||
require "jam_ruby/models/instrument"
|
||||
require "jam_ruby/models/connection_track"
|
||||
|
|
|
|||
|
|
@ -0,0 +1,32 @@
|
|||
module JamRuby
|
||||
class FanInvitation < ActiveRecord::Base
|
||||
|
||||
FRIENDSHIP_REQUIRED_VALIDATION_ERROR = "You can only invite friends"
|
||||
MEMBERSHIP_REQUIRED_OF_MUSIC_SESSION = "You must be a member of the music session to send invitations on behalf of it"
|
||||
|
||||
self.primary_key = 'id'
|
||||
belongs_to :sender, :inverse_of => :sent_fan_invitations, :class_name => "JamRuby::User", :foreign_key => "sender_id"
|
||||
belongs_to :receiver, :inverse_of => :received_fan_invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id"
|
||||
belongs_to :music_session, :inverse_of => :fan_invitations, :class_name => "JamRuby::MusicSession"
|
||||
|
||||
validates :sender, :presence => true
|
||||
validates :receiver, :presence => true
|
||||
validates :music_session, :presence => true
|
||||
|
||||
validate :require_sender_in_music_session, :require_are_friends
|
||||
|
||||
private
|
||||
|
||||
def require_sender_in_music_session
|
||||
unless music_session.users.exists? sender
|
||||
errors.add(:music_session, MEMBERSHIP_REQUIRED_OF_MUSIC_SESSION)
|
||||
end
|
||||
end
|
||||
|
||||
def require_are_friends
|
||||
unless receiver.friends.exists? sender
|
||||
errors.add(:receiver, FRIENDSHIP_REQUIRED_VALIDATION_ERROR)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
@ -3,16 +3,26 @@ module JamRuby
|
|||
|
||||
self.primary_key = 'id'
|
||||
|
||||
attr_accessible :creator, :musician_access, :approval_required, :fan_chat, :fan_access
|
||||
|
||||
belongs_to :creator, :inverse_of => :music_sessions, :class_name => "JamRuby::User", :foreign_key => "user_id"
|
||||
|
||||
has_many :connections, :class_name => "JamRuby::Connection"
|
||||
has_many :users, :through => :connections, :class_name => "JamRuby::User"
|
||||
has_and_belongs_to_many :genres, :class_name => "::JamRuby::Genre", :join_table => "genres_music_sessions"
|
||||
has_many :invitations, :foreign_key => "music_session_id", :inverse_of => :music_session, :class_name => "JamRuby::Invitation"
|
||||
has_many :invited_users, :through => :invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id", :source => :receiver
|
||||
has_many :invited_musicians, :through => :invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id", :source => :receiver
|
||||
|
||||
has_many :fan_invitations, :foreign_key => "music_session_id", :inverse_of => :music_session, :class_name => "JamRuby::FanInvitation"
|
||||
has_many :invited_fans, :through => :fan_invitations, :class_name => "JamRuby::User", :foreign_key => "receiver_id", :source => :receiver
|
||||
|
||||
after_save :require_at_least_one_genre, :limit_to_three_genres
|
||||
|
||||
validates :fan_chat, :inclusion => {:in => [true, false]}
|
||||
validates :fan_access, :inclusion => {:in => [true, false]}
|
||||
validates :approval_required, :inclusion => {:in => [true, false]}
|
||||
validates :musician_access, :inclusion => {:in => [true, false]}
|
||||
|
||||
def self.index(current_user)
|
||||
return MusicSession.includes(:invitations, :connections => [:user => [:friendships]]).order("(invitations.id is NULL) ASC, (friendships.friend_id != '#{current_user.id}' OR friendships.friend_id is NULL) ASC, music_sessions.created_at DESC").where("invitations.receiver_id = '#{current_user.id}' OR (friendships.friend_id = '#{current_user.id}') OR musician_access = true")
|
||||
end
|
||||
|
|
@ -23,7 +33,7 @@ module JamRuby
|
|||
return true
|
||||
else
|
||||
# the creator can always join, and the invited users can join
|
||||
return self.creator == user || self.invited_users.exists?(user)
|
||||
return self.creator == user || self.invited_musicians.exists?(user)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -33,7 +43,7 @@ module JamRuby
|
|||
return true
|
||||
else
|
||||
# the creator can always see, and the invited users can see it too
|
||||
return self.creator == user || self.invited_users.exists?(user)
|
||||
return self.creator == user || self.invited_musicians.exists?(user)
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -52,6 +52,10 @@ module JamRuby
|
|||
has_many :received_invitations, :foreign_key => "receiver_id", :inverse_of => :receiver, :class_name => "JamRuby::Invitation"
|
||||
has_many :sent_invitations, :foreign_key => "sender_id", :inverse_of => :sender, :class_name => "JamRuby::Invitation"
|
||||
|
||||
# fan_invitations
|
||||
has_many :received_fan_invitations, :foreign_key => "receiver_id", :inverse_of => :receiver, :class_name => "JamRuby::FanInvitation"
|
||||
has_many :sent_fan_invitations, :foreign_key => "sender_id", :inverse_of => :sender, :class_name => "JamRuby::FanInvitation"
|
||||
|
||||
|
||||
# This causes the authenticate method to be generated (among other stuff)
|
||||
has_secure_password
|
||||
|
|
|
|||
|
|
@ -6,14 +6,18 @@ FactoryGirl.define do
|
|||
password_confirmation "foobar"
|
||||
email_confirmed true
|
||||
|
||||
|
||||
factory :admin do
|
||||
admin true
|
||||
end
|
||||
end
|
||||
|
||||
factory :music_session, :class => JamRuby::MusicSession do
|
||||
factory :music_session, :class => "JamRuby::MusicSession" do
|
||||
sequence(:description) { |n| "Music Session #{n}" }
|
||||
musician_access true
|
||||
fan_chat true
|
||||
fan_access true
|
||||
approval_required false
|
||||
musician_access true
|
||||
end
|
||||
|
||||
factory :connection, :class => JamRuby::Connection do
|
||||
|
|
|
|||
|
|
@ -18,7 +18,7 @@ describe ConnectionManager do
|
|||
|
||||
def create_music_session(user_id)
|
||||
description = "some session"
|
||||
@conn.exec("INSERT INTO music_sessions (user_id, description, musician_access) VALUES ($1, $2, $3) RETURNING id", [user_id, description, 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, true, false, true, true]) do |result|
|
||||
return result.getvalue(0, 0)
|
||||
end
|
||||
end
|
||||
|
|
|
|||
Loading…
Reference in New Issue