diff --git a/app/services/group_stage_service.rb b/app/services/group_stage_service.rb index 504ff24..5e92a1d 100644 --- a/app/services/group_stage_service.rb +++ b/app/services/group_stage_service.rb @@ -8,7 +8,7 @@ class GroupStageService # raise an error if the average group size is not a whole number raise 'Groups need to be equal size' unless (groups.flatten.length.to_f / groups.length.to_f % 1).zero? - groups = groups.map(&method(:get_group_object_from)) + groups = groups.map(&method(:get_group_object_from)).each_with_index { |group, i| group.number = i + 1 } Stage.new level: -1, groups: groups, state: :in_progress end diff --git a/spec/services/group_stage_service_spec.rb b/spec/services/group_stage_service_spec.rb index 2a41658..b5ebf06 100644 --- a/spec/services/group_stage_service_spec.rb +++ b/spec/services/group_stage_service_spec.rb @@ -1,6 +1,6 @@ # frozen_string_literal: true -RSpec.describe GroupStageService, focus: true do +RSpec.describe GroupStageService do before do @teams1 = create_list(:team, 4) @teams2 = create_list(:team, 4) @@ -19,6 +19,13 @@ RSpec.describe GroupStageService, focus: true do expect(prepared_groups_groupstage.state).to eq('in_progress') end + it 'assigns unique numbers to each group' do + groups = prepared_groups_groupstage.groups + groups.sort_by(&:number).each_with_index do |group, i| + expect(group.number).to eq(i + 1) + end + end + it 'returns a stage object with level -1' do expect(prepared_groups_groupstage.level).to be(-1) end