VRFS-157 track API development
This commit is contained in:
parent
16c0421464
commit
3d2bfe5f4f
|
|
@ -47,9 +47,8 @@ class ApiInvitationsController < ApiController
|
|||
|
||||
@invitation.save
|
||||
|
||||
User.save_session_settings(current_user, music_session)
|
||||
|
||||
unless @invitation.errors.any?
|
||||
User.save_session_settings(current_user, music_session)
|
||||
invitation_notification = @message_factory.session_invitation(receiver.id, @invitation.id)
|
||||
@mq_router.publish_to_user(receiver.id, invitation_notification)
|
||||
respond_with @invitation, :responder => ApiResponder, :location => api_invitation_detail_url(@invitation)
|
||||
|
|
|
|||
|
|
@ -90,5 +90,41 @@ class ApiMusicSessionsController < ApiController
|
|||
respond_with @connection, responder: ApiResponder
|
||||
end
|
||||
|
||||
|
||||
def track_show
|
||||
#TODO: auth user
|
||||
@track = Track.find(params[:track_id])
|
||||
end
|
||||
|
||||
def track_index
|
||||
@tracks = Track.index(current_user, params[:id])
|
||||
end
|
||||
|
||||
def track_create
|
||||
# TODO: verify
|
||||
@track = Track.save(nil,
|
||||
params[:connection_id],
|
||||
params[:instrument_id],
|
||||
params[:sound])
|
||||
|
||||
respond_with @track, responder: ApiResponder, :status => 201, :location => api_session_track_detail_url(@track)
|
||||
end
|
||||
|
||||
def track_update
|
||||
@track = Track.save(params[:track_id],
|
||||
nil,
|
||||
params[:instrument_id],
|
||||
params[:sound])
|
||||
|
||||
respond_with @track, responder: ApiResponder, :status => 200
|
||||
end
|
||||
|
||||
def track_destroy
|
||||
@track = Track.find(params[:track_id])
|
||||
unless @track.nil?
|
||||
@track.delete
|
||||
respond_with responder: ApiResponder, :status => 204
|
||||
end
|
||||
|
||||
render :json => { :message => ValidationMessages::TRACK_NOT_FOUND }, :status => 404
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -206,8 +206,6 @@ class ApiUsersController < ApiController
|
|||
###################### FAVORITES ########################
|
||||
def favorite_index
|
||||
@user = User.find(params[:id])
|
||||
|
||||
# TODO: get band followings and merge (@user.band_followings)
|
||||
end
|
||||
|
||||
def favorite_create
|
||||
|
|
@ -225,7 +223,7 @@ class ApiUsersController < ApiController
|
|||
respond_with responder: ApiResponder, :status => 204
|
||||
end
|
||||
|
||||
###################### FRIENDS (TODO: refactor resource paths) ##########################
|
||||
###################### FRIENDS ##########################
|
||||
def friend_request_index
|
||||
auth_user(params[:id])
|
||||
# get all outgoing and incoming friend requests
|
||||
|
|
@ -285,7 +283,7 @@ class ApiUsersController < ApiController
|
|||
def band_invitation_index
|
||||
auth_user(params[:id])
|
||||
@user = current_user
|
||||
@invitations = @user.received_band_invitations#.merge(@user.sent_band_invitations)
|
||||
@invitations = @user.received_band_invitations
|
||||
respond_with @invitations, responder: ApiResponder, :status => 200
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -4,6 +4,6 @@ attributes :ip_address, :client_id
|
|||
node(:user_id, :if => lambda { |connection| connection.user.friends?(current_user) }) do |connection|
|
||||
connection.user_id
|
||||
end
|
||||
child(:connection_tracks => :tracks) {
|
||||
child(:tracks => :tracks) {
|
||||
attributes :id, :instrument_id, :sound
|
||||
}
|
||||
|
|
@ -12,7 +12,7 @@ child(:connections => :participants) {
|
|||
node(:user_id, :if => lambda { |connection| connection.user.friends?(current_user) }) do |connection|
|
||||
connection.user_id
|
||||
end
|
||||
child(:connection_tracks => :tracks) {
|
||||
child(:tracks => :tracks) {
|
||||
attributes :id, :instrument_id, :sound
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,3 @@
|
|||
object @track
|
||||
|
||||
extends "api_music_sessions/track_show"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
object @tracks
|
||||
|
||||
extends "api_music_sessions/track_show"
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
object @track
|
||||
|
||||
attributes :id, :connection_id, :sound, :instrument_id
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
object @track
|
||||
|
||||
extends "api_music_sessions/track_show"
|
||||
|
|
@ -43,6 +43,13 @@ SampleApp::Application.routes.draw do
|
|||
match '/sessions' => 'api_music_sessions#index', :via => :get
|
||||
match '/sessions' => 'api_music_sessions#create', :via => :post
|
||||
|
||||
# music session tracks
|
||||
match '/sessions/:id/tracks' => 'api_music_sessions#track_create', :via => :post
|
||||
match '/sessions/:id/tracks' => 'api_music_sessions#track_index', :via => :get
|
||||
match '/sessions/:id/tracks/:track_id' => 'api_music_sessions#track_update', :via => :post
|
||||
match '/sessions/:id/tracks/:track_id' => 'api_music_sessions#track_show', :via => :get, :as => 'api_session_track_detail'
|
||||
match '/sessions/:id/tracks/:track_id' => 'api_music_sessions#track_destroy', :via => :delete
|
||||
|
||||
# genres
|
||||
match '/genres' => 'api_genres#index', :via => :get
|
||||
|
||||
|
|
@ -55,7 +62,7 @@ SampleApp::Application.routes.draw do
|
|||
match '/users/confirm/:signup_token' => 'api_users#signup_confirm', :via => :post, :as => 'api_signup_confirmation'
|
||||
|
||||
# session settings
|
||||
match '/musicians/:id/session_settings' => 'api_users#session_settings_show', :via => :get
|
||||
match '/users/:id/session_settings' => 'api_users#session_settings_show', :via => :get
|
||||
|
||||
# login/logout
|
||||
match '/auth_session' => 'api_users#auth_session_create', :via => :post
|
||||
|
|
|
|||
|
|
@ -70,14 +70,48 @@ describe "Music Session API ", :type => :api do
|
|||
track["instrument_id"].should == "electric guitar"
|
||||
track["sound"].should == "mono"
|
||||
|
||||
get '/api/musicians/' + user.id + '/session_settings.json'
|
||||
# test session settings
|
||||
get '/api/users/' + user.id + '/session_settings.json'
|
||||
session_settings = JSON.parse(last_response.body)
|
||||
session_settings["musician_access"].should be_true
|
||||
session_settings["approval_required"].should be_false
|
||||
session_settings["fan_chat"].should be_true
|
||||
session_settings["fan_access"].should be_true
|
||||
end
|
||||
|
||||
# test Track-specific APIs
|
||||
get "/api/sessions/#{music_session["id"]}/tracks.json", "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
tracks = JSON.parse(last_response.body)
|
||||
tracks.size.should == 1
|
||||
tracks[0]["instrument_id"].should == "electric guitar"
|
||||
tracks[0]["sound"].should == "mono"
|
||||
|
||||
# change instrument
|
||||
post "/api/sessions/#{music_session["id"]}/tracks/#{tracks[0]["id"]}.json", { :instrument_id => "drums" }.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
|
||||
# get individual track
|
||||
get "/api/sessions/#{music_session["id"]}/tracks/#{tracks[0]["id"]}.json", "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
updated_track = JSON.parse(last_response.body)
|
||||
updated_track["instrument_id"].should == "drums"
|
||||
updated_track["sound"].should == "mono"
|
||||
|
||||
# change sound
|
||||
post "/api/sessions/#{music_session["id"]}/tracks/#{tracks[0]["id"]}.json", { :sound => "stereo" }.to_json, "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
|
||||
# get individual track
|
||||
get "/api/sessions/#{music_session["id"]}/tracks/#{tracks[0]["id"]}.json", "CONTENT_TYPE" => 'application/json'
|
||||
last_response.status.should == 200
|
||||
updated_track = JSON.parse(last_response.body)
|
||||
updated_track["instrument_id"].should == "drums"
|
||||
updated_track["sound"].should == "stereo"
|
||||
|
||||
# create a 2nd track for this session
|
||||
#post "/api/sessions/#{music_session["id"]}/tracks.json", :tracks => [{"connection_id" => "#{}", "instrument_id" => "electric guitar", "sound" => "mono"}], "CONTENT_TYPE" => 'application/json'
|
||||
#last_response.status.should == 201
|
||||
end
|
||||
|
||||
it "should delete session" do
|
||||
# check that there are no sessions
|
||||
|
|
@ -252,7 +286,7 @@ describe "Music Session API ", :type => :api do
|
|||
post '/api/sessions.json', defopts.merge({:client_id => client.client_id, :tracks => [{"instrument_id" => "electric guitar", "sound" => "mom"}]}).to_json, "CONTENT_TYPE" => 'application/json'
|
||||
|
||||
last_response.status.should eql(422)
|
||||
JSON.parse(last_response.body)["errors"]["connection_tracks"][0].should == "is invalid"
|
||||
JSON.parse(last_response.body)["errors"]["tracks"][0].should == "is invalid"
|
||||
|
||||
# check that the transaction was rolled back
|
||||
MusicSession.all().length.should == original_count
|
||||
|
|
|
|||
Loading…
Reference in New Issue