jam-cloud/web/spec/controllers/api_user_syncs_controller_s...

164 lines
6.4 KiB
Ruby

require 'spec_helper'
describe ApiUserSyncsController do
render_views
let(:user1) {FactoryGirl.create(:user)}
let(:user2) {FactoryGirl.create(:user)}
before(:each) {
controller.current_user = user1
}
it "requires logged in" do
controller.current_user = nil
get :index
json = JSON.parse(response.body, :symbolize_names => true)
json.should == {message: "not logged in"}
end
it "can return empty results" do
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 0
end
describe "one recording with two users" do
let!(:recording1) {
recording = FactoryGirl.create(:recording, owner: user1, band: nil, duration:1)
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: recording.owner)
recording.recorded_tracks << FactoryGirl.create(:recorded_track, recording: recording, user: user2)
recording.save!
recording.reload
recording
}
let(:sorted_tracks) {
Array.new(recording1.recorded_tracks).sort_by! {|rt| -rt.id}
}
it "no claimed_recordings" do
# every is supposed to upload immediately, but no downloads until you try claim it. The assertions below validate this
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 2
recorded_track1 = json[:entries][0]
recorded_track1[:upload][:should_upload].should be_true
recorded_track1[:upload][:too_many_upload_failures].should be_false
recorded_track1[:download][:should_download].should be_false
recorded_track1[:download][:too_many_downloads].should be_false
recorded_track2 = json[:entries][1]
recorded_track2[:upload][:should_upload].should be_true
recorded_track2[:upload][:too_many_upload_failures].should be_false
recorded_track2[:download][:should_download].should be_false
recorded_track2[:download][:too_many_downloads].should be_false
end
it "recording isn't over" do
recording1.duration = nil
recording1.save!
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 0
end
it "one user decides to keep the recording" do
FactoryGirl.create(:claimed_recording, user: user1, recording: recording1, discarded:false)
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 2
recorded_track1 = json[:entries][0]
recorded_track1[:upload][:should_upload].should be_true
recorded_track1[:upload][:too_many_upload_failures].should be_false
recorded_track1[:download][:should_download].should be_true
recorded_track1[:download][:too_many_downloads].should be_false
recorded_track2 = json[:entries][1]
recorded_track2[:upload][:should_upload].should be_true
recorded_track2[:upload][:too_many_upload_failures].should be_false
recorded_track2[:download][:should_download].should be_true
recorded_track2[:download][:too_many_downloads].should be_false
controller.current_user = user2
get :index, { :format => 'json', :id => user2.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 2
recorded_track1 = json[:entries][0]
recorded_track1[:upload][:should_upload].should be_true
recorded_track1[:upload][:too_many_upload_failures].should be_false
recorded_track1[:download][:should_download].should be_false
recorded_track1[:download][:too_many_downloads].should be_false
recorded_track2 = json[:entries][1]
recorded_track2[:upload][:should_upload].should be_true
recorded_track2[:upload][:too_many_upload_failures].should be_false
recorded_track2[:download][:should_download].should be_false
recorded_track2[:download][:too_many_downloads].should be_false
end
it "one user decides to discard the recording" do
FactoryGirl.create(:claimed_recording, user: user1, recording: recording1, discarded:true)
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 2
recorded_track1 = json[:entries][0]
recorded_track1[:upload][:should_upload].should be_true
recorded_track1[:upload][:too_many_upload_failures].should be_false
recorded_track1[:download][:should_download].should be_false
recorded_track1[:download][:too_many_downloads].should be_false
recorded_track2 = json[:entries][1]
recorded_track2[:upload][:should_upload].should be_true
recorded_track2[:upload][:too_many_upload_failures].should be_false
recorded_track2[:download][:should_download].should be_false
recorded_track2[:download][:too_many_downloads].should be_false
controller.current_user = user2
get :index, { :format => 'json', :id => user2.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 2
recorded_track1 = json[:entries][0]
recorded_track1[:upload][:should_upload].should be_true
recorded_track1[:upload][:too_many_upload_failures].should be_false
recorded_track1[:download][:should_download].should be_false
recorded_track1[:download][:too_many_downloads].should be_false
recorded_track2 = json[:entries][1]
recorded_track2[:upload][:should_upload].should be_true
recorded_track2[:upload][:too_many_upload_failures].should be_false
recorded_track2[:download][:should_download].should be_false
recorded_track2[:download][:too_many_downloads].should be_false
end
it "both users decide to discard the recording" do
recording1.all_discarded = true
recording1.save!
get :index, { :format => 'json', :id => user1.id }
json = JSON.parse(response.body, :symbolize_names => true)
json[:next].should be_nil
json[:entries].length.should == 0
end
end
end