diff --git a/ruby/lib/jam_ruby/models/recorded_video.rb b/ruby/lib/jam_ruby/models/recorded_video.rb index 63837c53a..fc787d20a 100644 --- a/ruby/lib/jam_ruby/models/recorded_video.rb +++ b/ruby/lib/jam_ruby/models/recorded_video.rb @@ -9,7 +9,7 @@ module JamRuby def self.create_from_video_source(video_source, recording) recorded_video_source = self.new recorded_video_source.recording = recording - recorded_video_source.client_video_source_id = video_source.id + recorded_video_source.client_video_source_id = video_source.client_video_source_id recorded_video_source.user = video_source.connection.user recorded_video_source.save recorded_video_source diff --git a/ruby/lib/jam_ruby/models/recording.rb b/ruby/lib/jam_ruby/models/recording.rb index 4368c3234..f467fe563 100644 --- a/ruby/lib/jam_ruby/models/recording.rb +++ b/ruby/lib/jam_ruby/models/recording.rb @@ -314,6 +314,7 @@ module JamRuby track_arel = RecordedTrack.select([ :id, :recording_id, + :user_id, :url, :fully_uploaded, :upload_failures, @@ -327,6 +328,7 @@ module JamRuby vid_arel = RecordedVideo.select([ :id, :recording_id, + :user_id, :url, :fully_uploaded, :upload_failures, @@ -343,6 +345,7 @@ module JamRuby arel = arel.select([ :id, :recording_id, + :user_id, :url, :fully_uploaded, :upload_failures, @@ -352,6 +355,7 @@ module JamRuby # Further joining and criteria for the unioned object: arel = arel.joins("INNER JOIN (SELECT id as rec_id, all_discarded, duration FROM recordings) recs ON rec_id=recorded_items.recording_id") \ + .where('recorded_items.user_id' => user.id) \ .where('recorded_items.fully_uploaded =?', false) \ .where('recorded_items.id > ?', since) \ .where("upload_failures <= #{APP_CONFIG.max_track_upload_failures}") \ diff --git a/ruby/spec/factories.rb b/ruby/spec/factories.rb index 2d030b752..26a4d5389 100644 --- a/ruby/spec/factories.rb +++ b/ruby/spec/factories.rb @@ -232,7 +232,8 @@ FactoryGirl.define do end factory :video_source, :class => JamRuby::VideoSource do - client_video_source_id "test_source_id" + #client_video_source_id "test_source_id" + sequence(:client_video_source_id) { |n| "client_video_source_id#{n}"} end factory :recorded_track, :class => JamRuby::RecordedTrack do @@ -250,8 +251,12 @@ FactoryGirl.define do factory :recorded_video, :class => JamRuby::RecordedVideo do sequence(:client_id) { |n| "client_id-#{n}"} - sequence(:track_id) { |n| "track_id-#{n}"} - sequence(:client_track_id) { |n| "client_track_id-#{n}"} + sequence(:recording_id) { |n| "recording_id-#{n}"} + sequence(:client_video_source_id) { |n| "client_video_source_id-#{n}"} + fully_uploaded true + length 1 + association :user, factory: :user + association :recording, factory: :recording end factory :instrument, :class => JamRuby::Instrument do diff --git a/ruby/spec/jam_ruby/models/recorded_video_spec.rb b/ruby/spec/jam_ruby/models/recorded_video_spec.rb index e8043f24a..b6283ae67 100644 --- a/ruby/spec/jam_ruby/models/recorded_video_spec.rb +++ b/ruby/spec/jam_ruby/models/recorded_video_spec.rb @@ -14,7 +14,7 @@ describe RecordedVideo do recorded_video_source.should_not be_nil recorded_video_source.user.id.should == video_source.connection.user.id recorded_video_source.fully_uploaded.should == false - recorded_video_source.client_video_source_id.should == video_source.id + recorded_video_source.client_video_source_id.should == video_source.client_video_source_id end end diff --git a/ruby/spec/jam_ruby/models/recording_spec.rb b/ruby/spec/jam_ruby/models/recording_spec.rb index d7a5cf709..6a6ab6ee6 100644 --- a/ruby/spec/jam_ruby/models/recording_spec.rb +++ b/ruby/spec/jam_ruby/models/recording_spec.rb @@ -3,7 +3,7 @@ require 'spec_helper' describe Recording do before do - @user = FactoryGirl.create(:user) + @user = FactoryGirl.create(:user) @instrument = FactoryGirl.create(:instrument, :description => 'a great instrument') @music_session = FactoryGirl.create(:active_music_session, :creator => @user, :musician_access => true) @connection = FactoryGirl.create(:connection, :user => @user, :music_session => @music_session) @@ -298,7 +298,7 @@ describe Recording do @recorded_videos = RecordedVideo.where(:recording_id => @recording.id) @recorded_videos.should have(1).items - @recorded_videos[0].client_video_source_id.should eq(@video_source.id) + @recorded_videos[0].client_video_source_id.should eq(@video_source.client_video_source_id) end it "should include video when listing uploads" do @@ -343,6 +343,53 @@ describe Recording do uploads["uploads"].should have(0).items end + it "should only retrieve tracks and videos from user" do + user2 = FactoryGirl.create(:user) # in the jam session + music_session2 = FactoryGirl.create(:active_music_session, :creator => @user, :musician_access => true) + music_session_member2 = FactoryGirl.create(:connection, :user => user2, :music_session => @music_session, :ip_address => "2.2.2.2", :client_id => "2") + connection2 = FactoryGirl.create(:connection, :user => user2, :music_session => @music_session) + track2 = FactoryGirl.create(:track, :connection => connection2, :instrument => @instrument) + + video_source = FactoryGirl.create(:video_source, :connection => @connection) + video_source2 = FactoryGirl.create(:video_source, :connection => connection2) + + @recording = Recording.start(@music_session, @user) + @recording.stop + @recording.reload + @genre = FactoryGirl.create(:genre) + @recording.claim(@user, "Recording", "Recording Description", @genre, true) + + # We should have 2 items; a track and a video: + uploads = Recording.list_uploads(@user) + uploads["uploads"].should have(2).items + uploads["uploads"][0][:type].should eq("recorded_track") + uploads["uploads"][1][:type].should eq("recorded_video") + uploads["uploads"][0].should include(:client_track_id) + uploads["uploads"][1].should include(:client_video_source_id) + uploads["uploads"][0][:client_track_id].should eq(@track.client_track_id) + uploads["uploads"][1][:client_video_source_id].should eq(video_source.client_video_source_id) + + # Next page should have nothing: + uploads = Recording.list_uploads(@user, 10, uploads["next"]) + uploads["uploads"].should have(0).items + + # List uploads for user2. We should have 2 items; a track and a video: + # The track and video source IDs should be different than above: + uploads = Recording.list_uploads(user2) + uploads["uploads"].should have(2).items + uploads["uploads"][0][:type].should eq("recorded_track") + uploads["uploads"][1][:type].should eq("recorded_video") + uploads["uploads"][0].should include(:client_track_id) + uploads["uploads"][1].should include(:client_video_source_id) + uploads["uploads"][0][:client_track_id].should eq(track2.client_track_id) + uploads["uploads"][1][:client_video_source_id].should eq(video_source2.client_video_source_id) + + # Next page should have nothing: + uploads = Recording.list_uploads(@user, 10, uploads["next"]) + uploads["uploads"].should have(0).items + + end + end