Use let more effectively

This commit is contained in:
Daniel Schädler 2019-06-18 22:23:02 +02:00
parent fa9f47903b
commit 945ab4981a
1 changed files with 24 additions and 22 deletions

View File

@ -3,45 +3,47 @@
require 'rails_helper'
RSpec.describe StagesController, type: :controller do
before do
@stage = create(:playoff_stage)
let(:stage) do
create(:playoff_stage)
end
describe 'GET #show' do
it 'returns a success response' do
get :show, params: { id: @stage.to_param }
get :show, params: { id: stage.to_param }
expect(response).to be_successful
end
it 'should return the correct stage' do
get :show, params: { id: @stage.to_param }
get :show, params: { id: stage.to_param }
body = deserialize_response response
expect(Stage.find_by(id: body[:id])).to eq(@stage)
expect(body[:level]).to eq(@stage.level)
expect(body[:state]).to eq(@stage.state)
expect(Stage.find_by(id: body[:id])).to eq(stage)
expect(body[:level]).to eq(stage.level)
expect(body[:state]).to eq(stage.state)
end
end
describe 'PUT #update' do
let(:finished) do
{ state: 'finished' }
end
context 'group_stage with matches that are done' do
before do
@running_group_stage = create(:group_stage, match_factory: :finished_group_match)
let(:running_group_stage) do
create(:group_stage, match_factory: :finished_group_match)
end
FINISHED = { state: 'finished' }.freeze
it 'doesn\'t have any other stages besides it before update' do
expect(@running_group_stage.tournament.stages.size).to eq(1)
expect(running_group_stage.tournament.stages.size).to eq(1)
end
context 'as owner' do
before(:each) do
apply_authentication_headers_for @running_group_stage.owner
apply_authentication_headers_for running_group_stage.owner
end
before do
put :update, params: { id: @running_group_stage.to_param }.merge(FINISHED)
@running_group_stage.reload
put :update, params: { id: running_group_stage.to_param }.merge(finished)
running_group_stage.reload
end
it 'succeeds' do
@ -49,16 +51,16 @@ RSpec.describe StagesController, type: :controller do
end
it 'stops the stage' do
expect(@running_group_stage.state).to eq(FINISHED[:state])
expect(running_group_stage.state).to eq('finished')
end
it 'adds new stages to the tournament' do
expect(@running_group_stage.tournament.stages.size).to be > 1
expect(running_group_stage.tournament.stages.size).to be > 1
end
it 'adds the right teams' do
expect(@running_group_stage.tournament.stages.max_by(&:level).teams)
.to match_array(GroupStageService.get_advancing_teams(@running_group_stage))
expect(running_group_stage.tournament.stages.max_by(&:level).teams)
.to match_array(GroupStageService.get_advancing_teams(running_group_stage))
end
end
@ -68,7 +70,7 @@ RSpec.describe StagesController, type: :controller do
end
it 'returns an error' do
put :update, params: { id: @stage.to_param }.merge(FINISHED)
put :update, params: { id: stage.to_param }.merge(finished)
expect(response).to have_http_status(:forbidden)
end
end
@ -81,7 +83,7 @@ RSpec.describe StagesController, type: :controller do
before do
apply_authentication_headers_for group_stage.owner
put :update, params: { id: group_stage.to_param }.merge(state: 'finished')
put :update, params: { id: group_stage.to_param }.merge(finished)
end
it 'it returns unprocessable entity' do
@ -104,7 +106,7 @@ RSpec.describe StagesController, type: :controller do
before do
apply_authentication_headers_for finished_group_stage.owner
put :update, params: { id: finished_group_stage.to_param }.merge(state: 'finished')
put :update, params: { id: finished_group_stage.to_param }.merge(finished)
end
it 'it returns unprocessable entity' do