jam-cloud/web/spec/controllers/claimed_recordings_spec.rb

101 lines
3.7 KiB
Ruby

require 'spec_helper'
describe ApiClaimedRecordingsController do
render_views
before(:each) do
@user = FactoryGirl.create(:user)
@connection = FactoryGirl.create(:connection, :user => @user)
@instrument = FactoryGirl.create(:instrument, :description => 'a great instrument')
@track = FactoryGirl.create(:track, :connection => @connection, :instrument => @instrument)
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
@music_session.connections << @connection
@music_session.save
@recording = Recording.start(@music_session, @user)
@recording.stop
@recording.reload
@genre = FactoryGirl.create(:genre)
@recording.claim(@user, "name", "description", @genre, true, true)
@recording.reload
@claimed_recording = @recording.claimed_recordings.first
end
describe "GET 'show'" do
it "should show the right thing when one recording just finished" do
controller.current_user = @user
get :show, :id => @claimed_recording.id
response.should be_success
json = JSON.parse(response.body)
json.should_not be_nil
json["id"].should == @claimed_recording.id
json["name"].should == @claimed_recording.name
json["recording"]["id"].should == @recording.id
json["recording"]["band"].should be_nil
json["recording"]["recorded_tracks"].length.should == 1
json["recording"]["recorded_tracks"].first["id"].should == @recording.recorded_tracks.first.id
json["recording"]["recorded_tracks"].first["instrument_id"].should == @instrument.id
json["recording"]["recorded_tracks"].first["user"]["id"].should == @user.id
end
it "should show the right thing when one recording was just uploaded" do
pending
@recording.recorded_tracks.first.upload_complete
controller.current_user = @user
get :show, :id => @claimed_recording.id
response.should be_success
json = JSON.parse(response.body)
json.should_not be_nil
json["recording"]["mixes"].length.should == 1
json["recording"]["mixes"].first["id"].should == @recording.mixes.first.id
json["recording"]["mixes"].first["url"].should == @recording.mixes.first.url
json["recording"]["mixes"].first["is_completed"].should == false
end
it "should show the right thing when the mix was just uploaded" do
pending
@recording.recorded_tracks.first.upload_complete
@mix = Mix.next("server")
@mix.finish(10000, "md5")
controller.current_user = @user
get :show, :id => @claimed_recording.id
response.should be_success
json = JSON.parse(response.body)
json.should_not be_nil
json["recording"]["mixes"].length.should == 1
json["recording"]["mixes"].first["id"].should == @recording.mixes.first.id
json["recording"]["mixes"].first["is_completed"].should == true
end
end
describe "GET 'index'" do
it "should generate a single output" do
controller.current_user = @user
get :index
response.should be_success
json = JSON.parse(response.body)
json.should_not be_nil
json.length.should == 1
json.first["id"].should == @claimed_recording.id
end
end
=begin
We can't test these because rspec doesn't like that we return 204. It causes rails to return a 406.
describe "DELETE 'destroy'" do
it "should delete properly" do
controller.current_user = @user
delete :delete, :id => @claimed_recording.id
puts response
puts response.body
response.should be_success
expect { ClaimedRecording.find(@claimed_recording.id) }.to raise_error
end
end
=end
end