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

90 lines
3.5 KiB
Ruby

require 'spec_helper'
describe ApiRecordingsController do
render_views
before(:each) do
@user = FactoryGirl.create(:user)
@instrument = FactoryGirl.create(:instrument, :description => 'a great instrument')
@music_session = FactoryGirl.create(:music_session, :creator => @user, :musician_access => true)
@connection = FactoryGirl.create(:connection, :user => @user, :music_session => @music_session)
@track = FactoryGirl.create(:track, :connection => @connection, :instrument => @instrument)
controller.current_user = @user
end
describe "start" do
it "should work" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
response.should be_success
response_body = JSON.parse(response.body)
response_body['id'].should_not be_nil
recording = Recording.find(response_body['id'])
end
it "should not allow multiple starts" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
post :start, { :format => 'json', :music_session_id => @music_session.id }
response.status.should == 422
response_body = JSON.parse(response.body)
response_body["errors"]["music_session"][0].should == ValidationMessages::ALREADY_BEING_RECORDED
end
it "should not allow start by somebody not in the music session" do
user2 = FactoryGirl.create(:user)
controller.current_user = user2
post :start, { :format => 'json', :music_session_id => @music_session.id }
response.status.should == 403
end
end
describe "get" do
it "should work" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
response.should be_success
response_body = JSON.parse(response.body)
response_body['id'].should_not be_nil
recordingId = response_body['id']
get :show, {:format => 'json', :id => recordingId}
response.should be_success
response_body = JSON.parse(response.body)
response_body['id'].should == recordingId
end
end
describe "stop" do
it "should work" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
response_body = JSON.parse(response.body)
recording = Recording.find(response_body['id'])
post :stop, { :format => 'json', :id => recording.id }
response.should be_success
response_body = JSON.parse(response.body)
response_body['id'].should_not be_nil
Recording.find(response_body['id']).id.should == recording.id
end
it "should not allow stop on a session not being recorded" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
response_body = JSON.parse(response.body)
recording = Recording.find(response_body['id'])
post :stop, { :format => 'json', :id => recording.id }
post :stop, { :format => 'json', :id => recording.id }
response.status.should == 422
response_body = JSON.parse(response.body)
end
it "should not allow stop on a session requested by a different member" do
post :start, { :format => 'json', :music_session_id => @music_session.id }
response_body = JSON.parse(response.body)
recording = Recording.find(response_body['id'])
user2 = FactoryGirl.create(:user)
controller.current_user = user2
post :stop, { :format => 'json', :id => recording.id }
response.status.should == 403
end
end
end