jam-cloud/web/spec/controllers/api_favorites_controller_sp...

88 lines
2.5 KiB
Ruby
Raw Permalink Normal View History

2014-02-20 20:54:35 +00:00
require 'spec_helper'
describe ApiFavoritesController, type: :controller do
2014-02-20 20:54:35 +00:00
render_views
let(:user) { FactoryGirl.create(:user) }
let(:user2) { FactoryGirl.create(:user) }
let(:band) { FactoryGirl.create(:band) }
2014-05-06 13:34:38 +00:00
let(:music_session) { FactoryGirl.create(:active_music_session, creator: user) }
let(:claimed_recording) { FactoryGirl.create(:claimed_recording) }
2014-02-20 20:54:35 +00:00
before(:each) do
RecordingLiker.delete_all
2014-02-20 20:54:35 +00:00
ClaimedRecording.delete_all
controller.current_user = nil
end
describe "index" do
it "insists on login" do
get :index
response.status.should == 403
end
2014-02-20 20:54:35 +00:00
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, { user: user}
json = JSON.parse(response.body, :symbolize_names => true)
json[:entries].length.should == 0
json[:since].should be_nil
end
2014-02-20 20:54:35 +00:00
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)
2014-02-20 20:54:35 +00:00
controller.current_user = user
get :index, { user: user}
json = JSON.parse(response.body, :symbolize_names => true)
json[:entries].length.should == 1
json[:since].should be_nil
end
2014-02-20 20:54:35 +00:00
end
describe "update" do
it "insists on login" do
post :update, {id: '1'}
response.status.should == 403
end
it "404 if no like for record" do
controller.current_user = user
post :update, {id: claimed_recording.id}
response.status.should == 404
end
2014-02-20 20:54:35 +00:00
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', 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', id: claimed_recording.id, favorite:false}
response.status.should == 200
like.reload
like.favorite.should be false
end
2014-02-20 20:54:35 +00:00
end
2014-02-20 20:54:35 +00:00
end