* adding a method called 'unique_users in MusicSessionHistory so that you can easily see what users joined the session VRFS-268
This commit is contained in:
parent
dfad349bc0
commit
b09b2a5ad4
|
|
@ -34,6 +34,14 @@ module JamRuby
|
|||
return query
|
||||
end
|
||||
|
||||
def unique_users
|
||||
User
|
||||
.joins(:music_session_user_histories)
|
||||
.group("users.id")
|
||||
.order("users.id")
|
||||
.where(%Q{ music_sessions_user_history.music_session_id = '#{music_session_id}'})
|
||||
end
|
||||
|
||||
def self.save(music_session)
|
||||
session_history = MusicSessionHistory.find_by_music_session_id(music_session.id)
|
||||
|
||||
|
|
|
|||
|
|
@ -94,6 +94,7 @@ module JamRuby
|
|||
|
||||
# session history
|
||||
has_many :music_session_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionHistory"
|
||||
has_many :music_session_user_histories, :foreign_key => "user_id", :class_name => "JamRuby::MusicSessionUserHistory"
|
||||
|
||||
# saved tracks
|
||||
has_many :recorded_tracks, :foreign_key => "user_id", :class_name => "JamRuby::RecordedTrack", :inverse_of => :user
|
||||
|
|
|
|||
|
|
@ -30,8 +30,29 @@ FactoryGirl.define do
|
|||
approval_required false
|
||||
musician_access true
|
||||
legal_terms true
|
||||
association :creator, :factory => :user
|
||||
end
|
||||
|
||||
after(:create) { |session| MusicSessionHistory.save(session) }
|
||||
factory :music_session_history, :class => JamRuby::MusicSessionHistory do
|
||||
ignore do
|
||||
music_session nil
|
||||
end
|
||||
|
||||
music_session_id { music_session.id }
|
||||
description { music_session.description }
|
||||
user_id { music_session.user_id }
|
||||
band_id { music_session.band_id }
|
||||
end
|
||||
|
||||
factory :music_session_user_history, :class => JamRuby::MusicSessionUserHistory do
|
||||
ignore do
|
||||
history nil
|
||||
user nil
|
||||
end
|
||||
|
||||
music_session_id { history.music_session_id }
|
||||
user_id { user.id }
|
||||
sequence(:client_id) { |n| "Connection #{n}" }
|
||||
end
|
||||
|
||||
factory :connection, :class => JamRuby::Connection do
|
||||
|
|
|
|||
|
|
@ -0,0 +1,28 @@
|
|||
require 'spec_helper'
|
||||
|
||||
describe MusicSessionHistory do
|
||||
|
||||
let(:some_user) { FactoryGirl.create(:user) }
|
||||
let(:music_session) { FactoryGirl.create(:music_session) }
|
||||
let(:history) { FactoryGirl.create(:music_session_history, :music_session => music_session) }
|
||||
let(:user_history1) { FactoryGirl.create(:music_session_user_history, :history => history, :user => music_session.creator) }
|
||||
let(:user_history2) { FactoryGirl.create(:music_session_user_history, :history => history, :user => some_user) }
|
||||
|
||||
it "create" do
|
||||
history.description.should eql(music_session.description)
|
||||
end
|
||||
|
||||
it "unique users" do
|
||||
user_history1.should_not be_nil
|
||||
user_history2.should_not be_nil
|
||||
users = history.unique_users
|
||||
|
||||
users.length.should eql(2)
|
||||
|
||||
users.include?(some_user).should be_true
|
||||
users.include?(music_session.creator).should be_true
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
|
||||
|
|
@ -17,6 +17,9 @@ require 'spork'
|
|||
require 'database_cleaner'
|
||||
require 'factories'
|
||||
|
||||
# uncomment this to see active record logs
|
||||
# ActiveRecord::Base.logger = Logger.new(STDOUT) if defined?(ActiveRecord::Base)
|
||||
|
||||
include JamRuby
|
||||
|
||||
# manually register observers
|
||||
|
|
|
|||
Loading…
Reference in New Issue