Raise exceptions upon error in group_stage_service
This commit is contained in:
parent
0f7279de97
commit
db1518bdbd
|
|
@ -7,10 +7,11 @@ class AddGroupStageToTournament
|
||||||
tournament = context.tournament
|
tournament = context.tournament
|
||||||
groups = context.groups
|
groups = context.groups
|
||||||
context.fail! unless tournament.stages.empty?
|
context.fail! unless tournament.stages.empty?
|
||||||
if (group_stage = GroupStageService.generate_group_stage(groups))
|
begin
|
||||||
|
group_stage = GroupStageService.generate_group_stage(groups)
|
||||||
tournament.stages = [group_stage]
|
tournament.stages = [group_stage]
|
||||||
context.tournament = tournament
|
context.tournament = tournament
|
||||||
else
|
rescue StandardError
|
||||||
context.fail!
|
context.fail!
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -2,15 +2,13 @@
|
||||||
|
|
||||||
class GroupStageService
|
class GroupStageService
|
||||||
def self.generate_group_stage(groups)
|
def self.generate_group_stage(groups)
|
||||||
return false if groups.length.zero?
|
raise 'Cannot generate group stage without groups' if groups.length.zero?
|
||||||
|
|
||||||
average_group_size = (groups.flatten.length.to_f / groups.length.to_f)
|
average_group_size = (groups.flatten.length.to_f / groups.length.to_f)
|
||||||
if (average_group_size % 1).zero?
|
raise 'Groups need to be equal size' unless (average_group_size % 1).zero?
|
||||||
groups = groups.map(&method(:get_group_object_from))
|
|
||||||
Stage.new level: -1, groups: groups
|
groups = groups.map(&method(:get_group_object_from))
|
||||||
else
|
Stage.new level: -1, groups: groups
|
||||||
false
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.get_group_object_from(team_array)
|
def self.get_group_object_from(team_array)
|
||||||
|
|
|
||||||
|
|
@ -35,14 +35,26 @@ RSpec.describe AddGroupStageToTournament do
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
context 'playoff generation fails' do
|
context 'empty groups' do
|
||||||
before do
|
before do
|
||||||
expect(class_double('GroupStageService').as_stubbed_const(transfer_nested_constants: true))
|
expect(class_double('GroupStageService').as_stubbed_const(transfer_nested_constants: true))
|
||||||
.to receive(:generate_group_stage).with(@groups)
|
.to receive(:generate_group_stage).with(@groups)
|
||||||
.and_return(false)
|
.and_raise('Cannot generate group stage without groups')
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'fails' do
|
it 'playoff generation fails' do
|
||||||
|
expect(empty_tournament_context).to be_a_failure
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
context 'unequal group sizes' do
|
||||||
|
before do
|
||||||
|
expect(class_double('GroupStageService').as_stubbed_const(transfer_nested_constants: true))
|
||||||
|
.to receive(:generate_group_stage).with(@groups)
|
||||||
|
.and_raise('Groups need to be equal size')
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'playoff generation fails' do
|
||||||
expect(empty_tournament_context).to be_a_failure
|
expect(empty_tournament_context).to be_a_failure
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
||||||
|
|
@ -23,11 +23,16 @@ RSpec.describe GroupStageService do
|
||||||
expect(group_stage_teams).to match_array(@groups.flatten)
|
expect(group_stage_teams).to match_array(@groups.flatten)
|
||||||
end
|
end
|
||||||
|
|
||||||
it 'returns false when given different sizes of groups' do
|
it 'raises exception when given different sizes of groups' do
|
||||||
unequal_groups = @groups
|
unequal_groups = @groups
|
||||||
unequal_groups.first.pop
|
unequal_groups.first.pop
|
||||||
group_stage = GroupStageService.generate_group_stage(@groups)
|
expect { GroupStageService.generate_group_stage(unequal_groups) }
|
||||||
expect(group_stage).to eq(false)
|
.to raise_exception 'Groups need to be equal size'
|
||||||
|
end
|
||||||
|
|
||||||
|
it 'raises exception when given no groups' do
|
||||||
|
expect { GroupStageService.generate_group_stage([]) }
|
||||||
|
.to raise_exception 'Cannot generate group stage without groups'
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue