diff --git a/spec/controllers/stages_controller_spec.rb b/spec/controllers/stages_controller_spec.rb index bc9eb7a..a292400 100644 --- a/spec/controllers/stages_controller_spec.rb +++ b/spec/controllers/stages_controller_spec.rb @@ -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