Fixes VRFS-2334 : re-add filter for users
Includes spec to reproduce, and additional specs that uncovered a problem with setting the client_video_source_id.
This commit is contained in:
parent
0fb721b8ed
commit
4d08359ef1
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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}") \
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue