VRFS-1677 fixed
This commit is contained in:
parent
a1f288fe4d
commit
57f1fab935
|
|
@ -157,4 +157,5 @@ notification_scheduled_session.sql
|
|||
music_notation.sql
|
||||
music_session_recurring_mode.sql
|
||||
add_timezone_music_session.sql
|
||||
scheduled_sessions_2.sql
|
||||
scheduled_sessions_2.sql
|
||||
started_at_music_session.sql
|
||||
|
|
@ -0,0 +1 @@
|
|||
ALTER TABLE music_sessions ADD COLUMN started_at TIMESTAMP WITHOUT TIME ZONE;
|
||||
|
|
@ -375,6 +375,9 @@ module JamRuby
|
|||
active_music_session.save
|
||||
|
||||
unless active_music_session.errors.any?
|
||||
music_session.started_at = active_music_session.created_at
|
||||
music_session.save(:validate => false)
|
||||
|
||||
# save session parameters for next session
|
||||
User.save_session_settings(user, music_session)
|
||||
|
||||
|
|
|
|||
|
|
@ -235,6 +235,10 @@ module JamRuby
|
|||
active_music_session && active_music_session.mount
|
||||
end
|
||||
|
||||
def can_delete? user
|
||||
self.creator == user && self.started_at.nil?
|
||||
end
|
||||
|
||||
def recordings
|
||||
Recording.where(music_session_id: self.id)
|
||||
end
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@ require 'aws-sdk'
|
|||
class ApiMusicSessionsController < ApiController
|
||||
|
||||
# have to be signed in currently to see this screen
|
||||
before_filter :api_signed_in_user, :except => [ :add_like, :show, :history_show ]
|
||||
before_filter :api_signed_in_user, :except => [ :add_like, :show, :show_history ]
|
||||
before_filter :lookup_session, only: [:show, :update, :delete, :claimed_recording_start, :claimed_recording_stop, :track_sync]
|
||||
skip_before_filter :api_signed_in_user, only: [:perf_upload]
|
||||
|
||||
|
|
@ -164,6 +164,23 @@ class ApiMusicSessionsController < ApiController
|
|||
end
|
||||
end
|
||||
|
||||
def destroy
|
||||
begin
|
||||
music_session = MusicSession.find(params[:id])
|
||||
if music_session.can_delete? current_user
|
||||
Notification.send_scheduled_session_cancelled music_session
|
||||
music_session.destroy
|
||||
|
||||
respond_with responder: ApiResponder, :status => 204
|
||||
else
|
||||
render :json => { :message => ValidationMessages::PERMISSION_VALIDATION_ERROR }, :status => 404
|
||||
end
|
||||
|
||||
rescue ActiveRecord::RecordNotFound
|
||||
render :json => { :message => ValidationMessages::SESSION_NOT_FOUND }, :status => 404
|
||||
end
|
||||
end
|
||||
|
||||
def participant_show
|
||||
@connection = Connection.find_by_client_id(params[:id])
|
||||
end
|
||||
|
|
|
|||
|
|
@ -151,6 +151,7 @@ SampleApp::Application.routes.draw do
|
|||
match '/sessions/scheduled' => 'api_music_sessions#scheduled', :via => :get
|
||||
match '/sessions/:id' => 'api_music_sessions#show', :via => :get, :as => 'api_session_detail'
|
||||
match '/sessions/:id' => 'api_music_sessions#update', :via => :put
|
||||
match '/sessions/:id' => 'api_music_sessions#destroy', :via => :delete
|
||||
match '/sessions' => 'api_music_sessions#index', :via => :get
|
||||
match '/sessions' => 'api_music_sessions#create', :via => :post
|
||||
match '/sessions/nindex/:client_id' => 'api_music_sessions#nindex', :via => :get
|
||||
|
|
|
|||
|
|
@ -27,6 +27,7 @@ describe "Scheduled Music Session API ", :type => :api do
|
|||
|
||||
before do
|
||||
#sign_in user
|
||||
ActiveMusicSession.delete_all
|
||||
MusicSession.delete_all
|
||||
|
||||
login(user)
|
||||
|
|
@ -65,5 +66,45 @@ describe "Scheduled Music Session API ", :type => :api do
|
|||
music_sessions.count.should eql(2)
|
||||
expect(Time.parse(music_sessions[0]["scheduled_start"]).to_i).to be < Time.parse(music_sessions[1]["scheduled_start"]).to_i
|
||||
end
|
||||
|
||||
it "should delete scheduled sessions" do
|
||||
user2 = FactoryGirl.create(:user)
|
||||
login(user)
|
||||
|
||||
post '/api/sessions.json', defopts.merge({start: Time.now + 3.hours}).to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
post '/api/sessions.json', defopts.merge({start: Time.now + 5.hours}).to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
post '/api/sessions.json', defopts.merge({start: Time.now + 7.hours}).to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
get '/api/sessions/scheduled.json'
|
||||
last_response.status.should eql(200)
|
||||
music_sessions = JSON.parse(last_response.body)
|
||||
music_sessions.count.should eql(3)
|
||||
|
||||
client = FactoryGirl.create(:connection, :user => user, :ip_address => "1.1.1.1", :client_id => "3")
|
||||
post "/api/sessions/#{music_sessions[0]["id"]}/participants.json",
|
||||
{ :client_id => client.client_id, :as_musician => true,
|
||||
:tracks => [{"instrument_id" => "electric guitar",
|
||||
"sound" => "mono",
|
||||
'client_track_id' => "client_track_guid"}]
|
||||
}.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should eql(201)
|
||||
|
||||
delete "/api/sessions/#{music_sessions[0]["id"]}.json"
|
||||
last_response.status.should eql(404)
|
||||
JSON.parse(last_response.body)["message"].should == ValidationMessages::PERMISSION_VALIDATION_ERROR
|
||||
|
||||
delete "/api/sessions/#{music_sessions[1]["id"]}.json"
|
||||
last_response.status.should eql(204)
|
||||
|
||||
login(user2)
|
||||
delete "/api/sessions/#{music_sessions[2]["id"]}.json"
|
||||
last_response.status.should eql(404)
|
||||
JSON.parse(last_response.body)["message"].should == ValidationMessages::PERMISSION_VALIDATION_ERROR
|
||||
end
|
||||
end
|
||||
end
|
||||
Loading…
Reference in New Issue