diff --git a/spec/services/match_service_spec.rb b/spec/services/match_service_spec.rb index 09fc450..3c46148 100644 --- a/spec/services/match_service_spec.rb +++ b/spec/services/match_service_spec.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true RSpec.describe MatchService do - describe '#generate_matches' do + describe 'generates' do [ { team_size: 2 }, { team_size: 4 }, @@ -11,7 +11,7 @@ RSpec.describe MatchService do { team_size: 64 } ].each do |parameters| result = parameters[:team_size] / 2 - it "generates #{result} matches from #{parameters[:team_size]} teams" do + it "#{result} matches from #{parameters[:team_size]} teams" do teams = build_list(:team, parameters[:team_size], tournament: create(:tournament)) generated_matches = MatchService.generate_matches teams expect(generated_matches.size).to eq(result) @@ -67,7 +67,29 @@ RSpec.describe MatchService do end end - # TODO: matches right teams for !powers of 2 + [ + { team_size: 3 }, + { team_size: 5 }, + { team_size: 7 }, + { team_size: 19 }, + { team_size: 41 }, + { team_size: 52 }, + { team_size: 111 } + + ].each do |parameters| + it "matches the right teams for team numbers that are not powers of 2 (#{parameters[:team_size]})" ,focus: true do + team_size = parameters[:team_size] + teams = build_list(:team, team_size, tournament: create(:tournament)) + generated_matches = MatchService.generate_matches teams + team_order = [] + generated_matches.each do |match| + match.match_scores.each do |score| + team_order << score.team + end + end + expect(team_order).to eq(teams) + end + end [ { team_size: 3, single_team_matches: 1 },