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
|
||||
groups = context.groups
|
||||
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]
|
||||
context.tournament = tournament
|
||||
else
|
||||
rescue StandardError
|
||||
context.fail!
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -2,15 +2,13 @@
|
|||
|
||||
class GroupStageService
|
||||
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)
|
||||
if (average_group_size % 1).zero?
|
||||
groups = groups.map(&method(:get_group_object_from))
|
||||
Stage.new level: -1, groups: groups
|
||||
else
|
||||
false
|
||||
end
|
||||
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
|
||||
end
|
||||
|
||||
def self.get_group_object_from(team_array)
|
||||
|
|
|
|||
|
|
@ -35,14 +35,26 @@ RSpec.describe AddGroupStageToTournament do
|
|||
end
|
||||
end
|
||||
|
||||
context 'playoff generation fails' do
|
||||
context 'empty groups' do
|
||||
before do
|
||||
expect(class_double('GroupStageService').as_stubbed_const(transfer_nested_constants: true))
|
||||
.to receive(:generate_group_stage).with(@groups)
|
||||
.and_return(false)
|
||||
.and_raise('Cannot generate group stage without groups')
|
||||
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
|
||||
end
|
||||
end
|
||||
|
|
|
|||
|
|
@ -23,11 +23,16 @@ RSpec.describe GroupStageService do
|
|||
expect(group_stage_teams).to match_array(@groups.flatten)
|
||||
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.first.pop
|
||||
group_stage = GroupStageService.generate_group_stage(@groups)
|
||||
expect(group_stage).to eq(false)
|
||||
expect { GroupStageService.generate_group_stage(unequal_groups) }
|
||||
.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
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue