88 lines
2.6 KiB
Ruby
88 lines
2.6 KiB
Ruby
require 'spec_helper'
|
|
|
|
describe ApiFavoritesController, type: :controller do
|
|
render_views
|
|
|
|
let(:user) { FactoryGirl.create(:user) }
|
|
let(:user2) { FactoryGirl.create(:user) }
|
|
let(:band) { FactoryGirl.create(:band) }
|
|
let(:music_session) { FactoryGirl.create(:active_music_session, creator: user) }
|
|
let(:claimed_recording) { FactoryGirl.create(:claimed_recording) }
|
|
|
|
before(:each) do
|
|
RecordingLiker.delete_all
|
|
ClaimedRecording.delete_all
|
|
controller.current_user = nil
|
|
end
|
|
|
|
describe "index" do
|
|
it "insists on login" do
|
|
get :index
|
|
response.status.should == 403
|
|
end
|
|
|
|
it "requires user param" do
|
|
controller.current_user = user
|
|
expect { get :index }.to raise_error "user must be specified"
|
|
end
|
|
|
|
it "can return nothing" do
|
|
controller.current_user = user
|
|
get :index, params: { user: user}
|
|
|
|
json = JSON.parse(response.body, :symbolize_names => true)
|
|
json[:entries].length.should == 0
|
|
json[:since].should be_nil
|
|
end
|
|
|
|
it "returns one thing" do
|
|
claimed_recording.touch
|
|
like = FactoryGirl.create(:recording_like, user: user, claimed_recording: claimed_recording, recording: claimed_recording.recording, favorite: true)
|
|
|
|
controller.current_user = user
|
|
get :index, params: { user: user}
|
|
|
|
json = JSON.parse(response.body, :symbolize_names => true)
|
|
json[:entries].length.should == 1
|
|
json[:since].should be_nil
|
|
end
|
|
end
|
|
|
|
|
|
describe "update" do
|
|
|
|
it "insists on login" do
|
|
post :update, params: {id: '1'}
|
|
response.status.should == 403
|
|
end
|
|
|
|
it "404 if no like for record" do
|
|
controller.current_user = user
|
|
post :update, params: {id: claimed_recording.id}
|
|
response.status.should == 404
|
|
end
|
|
|
|
it "no favorite specified leaves record alone" do
|
|
controller.current_user = user
|
|
like = FactoryGirl.create(:recording_like, user: user, claimed_recording: claimed_recording, recording: claimed_recording.recording, favorite: true)
|
|
post :update, :format => 'json', params: {id: claimed_recording.id}
|
|
response.status.should == 200
|
|
|
|
like.reload
|
|
like.favorite.should be true
|
|
end
|
|
|
|
it "can set favorite to false" do
|
|
controller.current_user = user
|
|
like = FactoryGirl.create(:recording_like, user: user, claimed_recording: claimed_recording, recording: claimed_recording.recording, favorite: true)
|
|
post :update, :format => 'json', params: { id: claimed_recording.id, favorite:false }
|
|
response.status.should == 200
|
|
|
|
like.reload
|
|
like.favorite.should be false
|
|
end
|
|
|
|
end
|
|
|
|
end
|