* 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:
Seth Call 2013-07-02 20:11:04 -05:00
parent dfad349bc0
commit b09b2a5ad4
5 changed files with 62 additions and 1 deletions

View File

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

View File

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

View File

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

View File

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

View File

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