From c8f69ccb1676672cbcc611d5b390841419f5210f Mon Sep 17 00:00:00 2001 From: Malaber <32635600+Malaber@users.noreply.github.com> Date: Wed, 12 Jun 2019 21:00:54 +0200 Subject: [PATCH] Dry out tests for unacceptable playoff_teams_amount --- .../tournaments_controller_spec.rb | 43 ++++++++++++------- 1 file changed, 28 insertions(+), 15 deletions(-) diff --git a/spec/controllers/tournaments_controller_spec.rb b/spec/controllers/tournaments_controller_spec.rb index 4855d63..33e985b 100644 --- a/spec/controllers/tournaments_controller_spec.rb +++ b/spec/controllers/tournaments_controller_spec.rb @@ -196,25 +196,38 @@ RSpec.describe TournamentsController, type: :controller do end context 'playoff_teams_amount unacceptable' do - it 'is not a power of two' do - post :create, params: create_group_tournament_data.merge(playoff_teams_amount: 18) - expect(response).to have_http_status(:unprocessable_entity) - expect(deserialize_response(response).values.first.first) - .to eq('playoff_teams_amount needs to be a positive power of two') + shared_examples_for 'wrong playoff_teams_amount' do + it 'fails' do + expect(response).to have_http_status(:unprocessable_entity) + end + it 'returns the correct error message' do + expect(deserialize_response(response).values.first.first) + .to eq('playoff_teams_amount needs to be a positive power of two') + end end - it 'isn\'t positive' do - post :create, params: create_group_tournament_data.merge(playoff_teams_amount: -16) - expect(response).to have_http_status(:unprocessable_entity) - expect(deserialize_response(response).values.first.first) - .to eq('playoff_teams_amount needs to be a positive power of two') + context 'is not a power of two' do + before do + post :create, params: create_group_tournament_data.merge(playoff_teams_amount: 18) + end + + it_should_behave_like 'wrong playoff_teams_amount' end - it 'isn\'t positive nor a power of two' do - post :create, params: create_group_tournament_data.merge(playoff_teams_amount: -42) - expect(response).to have_http_status(:unprocessable_entity) - expect(deserialize_response(response).values.first.first) - .to eq('playoff_teams_amount needs to be a positive power of two') + context 'isn\'t positive' do + before do + post :create, params: create_group_tournament_data.merge(playoff_teams_amount: -16) + end + + it_should_behave_like 'wrong playoff_teams_amount' + end + + context 'isn\'t positive nor a power of two' do + before do + post :create, params: create_group_tournament_data.merge(playoff_teams_amount: -42) + end + + it_should_behave_like 'wrong playoff_teams_amount' end end end