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:
Steven Miers 2014-10-10 11:07:36 -05:00
parent 0fb721b8ed
commit 4d08359ef1
5 changed files with 63 additions and 7 deletions

View File

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

View File

@ -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}") \

View File

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

View File

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

View File

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