このコミットが含まれているのは:
@@ -320,10 +320,11 @@ RSpec.describe 'Theatres API', type: :request do
|
||||
|
||||
describe 'PUT /theatres/:id/skip_vote' do
|
||||
subject(:do_request) do
|
||||
put "/theatres/#{theatre.id}/skip_vote"
|
||||
put "/theatres/#{theatre.id}/skip_vote", params: { post_id: requested_post_id }
|
||||
end
|
||||
|
||||
let(:third_user) { create(:user, :member, name: 'third user') }
|
||||
let(:requested_post_id) { niconico_post.id }
|
||||
|
||||
before do
|
||||
theatre.update!(current_post: niconico_post, current_post_started_at: 10.seconds.ago)
|
||||
@@ -374,9 +375,25 @@ RSpec.describe 'Theatres API', type: :request do
|
||||
expect(event.tags).to contain_exactly(tag)
|
||||
expect(TheatreSkipVote.where(theatre:, post: niconico_post)).to be_empty
|
||||
end
|
||||
|
||||
it 'does not record a vote when requested post is no longer current' do
|
||||
theatre.update!(current_post: second_niconico_post)
|
||||
sign_in_as(member)
|
||||
|
||||
expect { do_request }.not_to change(TheatreSkipVote, :count)
|
||||
|
||||
expect(response).to have_http_status(:conflict)
|
||||
expect(json['post_id']).to eq(second_niconico_post.id)
|
||||
expect(json['skip_vote']).to include(
|
||||
'votes_count' => 0,
|
||||
'voted' => false
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'DELETE /theatres/:id/skip_vote' do
|
||||
let(:requested_post_id) { niconico_post.id }
|
||||
|
||||
before do
|
||||
theatre.update!(current_post: niconico_post, current_post_started_at: 10.seconds.ago)
|
||||
TheatreWatchingUser.create!(theatre:, user: member, expires_at: 10.seconds.from_now)
|
||||
@@ -386,7 +403,7 @@ RSpec.describe 'Theatres API', type: :request do
|
||||
|
||||
it 'removes the current user vote' do
|
||||
expect {
|
||||
delete "/theatres/#{theatre.id}/skip_vote"
|
||||
delete "/theatres/#{theatre.id}/skip_vote", params: { post_id: requested_post_id }
|
||||
}.to change(TheatreSkipVote, :count).by(-1)
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
@@ -397,6 +414,43 @@ RSpec.describe 'Theatres API', type: :request do
|
||||
'voted' => false
|
||||
)
|
||||
end
|
||||
|
||||
it 'does not remove a vote when requested post is no longer current' do
|
||||
theatre.update!(current_post: second_niconico_post)
|
||||
|
||||
expect {
|
||||
delete "/theatres/#{theatre.id}/skip_vote", params: { post_id: requested_post_id }
|
||||
}.not_to change(TheatreSkipVote, :count)
|
||||
|
||||
expect(response).to have_http_status(:conflict)
|
||||
expect(json['post_id']).to eq(second_niconico_post.id)
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /theatres/:id/skip_events' do
|
||||
before do
|
||||
sign_in_as(member)
|
||||
end
|
||||
|
||||
it 'does not expose skip voters' do
|
||||
event = TheatreSkipEvent.create!(
|
||||
theatre:,
|
||||
post: niconico_post,
|
||||
skipped_by_user: member,
|
||||
created_at: Time.current
|
||||
)
|
||||
TheatreSkipEventVoter.create!(theatre_skip_event: event, user: member)
|
||||
|
||||
get "/theatres/#{theatre.id}/skip_events"
|
||||
|
||||
expect(response).to have_http_status(:ok)
|
||||
expect(json.first).to include(
|
||||
'id' => event.id,
|
||||
'theatre_id' => theatre.id
|
||||
)
|
||||
expect(json.first).not_to have_key('voters')
|
||||
expect(json.first).not_to have_key('skipped_by_user')
|
||||
end
|
||||
end
|
||||
|
||||
describe 'GET /theatres/:id/post_selection_weights' do
|
||||
|
||||
新しい課題から参照
ユーザをブロックする