mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
253 lines
9.2 KiB
Ruby
253 lines
9.2 KiB
Ruby
require 'test_helper'
|
|
|
|
class PoolbracketMatchupsTest < ActionDispatch::IntegrationTest
|
|
def setup
|
|
@tournament = Tournament.find(1)
|
|
@tournament.generateMatchups
|
|
end
|
|
|
|
def createTournament(numberOfWrestlers)
|
|
@id = 600 + numberOfWrestlers
|
|
tournament = create_tournament
|
|
create_school
|
|
create_weight
|
|
create_mat
|
|
create_wrestlers(numberOfWrestlers)
|
|
tournament
|
|
end
|
|
|
|
def create_tournament
|
|
tournament = Tournament.new(
|
|
id: @id,
|
|
tournament_type: "Pool to bracket",
|
|
name: "Something",
|
|
address: "Some Place",
|
|
director: "Some Guy",
|
|
director_email: "test@test.com"
|
|
)
|
|
tournament.save
|
|
tournament
|
|
end
|
|
|
|
def create_school
|
|
School.new(
|
|
id: @id,
|
|
name: "Shit Show",
|
|
tournament_id: @id
|
|
).save!
|
|
end
|
|
|
|
def create_mat
|
|
Mat.new(
|
|
id: @id,
|
|
name: "Mat 1",
|
|
tournament_id: @id
|
|
).save!
|
|
end
|
|
|
|
def create_weight
|
|
Weight.new(
|
|
id: @id,
|
|
tournament_id: @id,
|
|
max: @id
|
|
).save!
|
|
end
|
|
|
|
def create_wrestlers(numberOfWrestlers)
|
|
(1..numberOfWrestlers).each do |count|
|
|
Wrestler.new(
|
|
name: "Guy #{count}",
|
|
school_id: @id,
|
|
weight_id: @id,
|
|
original_seed: count,
|
|
season_loss: 0,
|
|
season_win: 0,
|
|
criteria: nil
|
|
).save!
|
|
end
|
|
end
|
|
|
|
def checkForByeInPool(tournament)
|
|
tournament.generateMatchups
|
|
matchups = tournament.matches
|
|
tournament.weights.each do |w|
|
|
w.wrestlers.each do |wr|
|
|
round = 1
|
|
if w.totalRounds(matchups) > 5
|
|
until round > w.poolRounds(matchups) do
|
|
if wr.boutByRound(round) == "BYE"
|
|
message = "BYE"
|
|
end
|
|
round += 1
|
|
end
|
|
assert_equal "BYE", message
|
|
message = nil
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
test "found tournament" do
|
|
refute_nil @tournament
|
|
end
|
|
|
|
test "tournament can be set to high school weight classes" do
|
|
@tournament.weights.destroy_all
|
|
@tournament.createCustomWeights("hs")
|
|
assert_equal Weight::HS_WEIGHT_CLASSES.size, @tournament.weights.size
|
|
end
|
|
|
|
test "tests bout numbers correspond to round" do
|
|
matchup_to_test = @tournament.matches.select{|m| m.bout_number == 4000}.first
|
|
assert_equal 4, matchup_to_test.round
|
|
end
|
|
|
|
test "tests bout_numbers are generated with smallest weight first regardless of id" do
|
|
weight = @tournament.weights.order(:max).limit(1).first
|
|
matchup = @tournament.matches.where(bout_number: 1000).limit(1).first
|
|
assert_equal weight.max, matchup.weight.max
|
|
end
|
|
|
|
test "tests number of matches in 5 man one pool" do
|
|
six_matches = @tournament.matches.select{|m| m.weight_max == 106}
|
|
assert_equal 10, six_matches.length
|
|
end
|
|
|
|
test "tests number of matches in 11 man pool bracket" do
|
|
twentysix_matches = @tournament.matches.select{|m| m.weight_max == 126}
|
|
assert_equal 22, twentysix_matches.length
|
|
end
|
|
|
|
test "tests number of matches in 9 man pool bracket" do
|
|
twentysix_matches = @tournament.matches.select{|m| m.weight_max == 113}
|
|
assert_equal 18, twentysix_matches.length
|
|
end
|
|
|
|
test "tests number of matches in 7 man pool bracket" do
|
|
twentysix_matches = @tournament.matches.select{|m| m.weight_max == 120}
|
|
assert_equal 13, twentysix_matches.length
|
|
end
|
|
|
|
test "tests number of matches in 16 man pool bracket" do
|
|
twentysix_matches = @tournament.matches.select{|m| m.weight_max == 132}
|
|
assert_equal 32, twentysix_matches.length
|
|
end
|
|
|
|
test "test if a wrestler can exceed five matches" do
|
|
(5...16).each do |count|
|
|
tourney = createTournament(count)
|
|
checkForByeInPool(tourney)
|
|
end
|
|
end
|
|
|
|
test "test loser names for 16 man bracket 3/4th place match" do
|
|
matches = @tournament.matches.where(weight_id: 5)
|
|
semi_bouts = matches.where(bracket_position: 'Semis')
|
|
third_fourth_match = matches.where(bracket_position: '3/4').first
|
|
assert_equal "Loser of #{semi_bouts.first.bout_number}", third_fourth_match.loser1_name
|
|
assert_equal "Loser of #{semi_bouts.second.bout_number}", third_fourth_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 16 man bracket 7/8th place match" do
|
|
matches = @tournament.matches.where(weight_id: 5)
|
|
conso_semi_bouts = matches.where(bracket_position: 'Conso Semis')
|
|
seven_eight_match = matches.where(bracket_position: '7/8').first
|
|
assert_equal "Loser of #{conso_semi_bouts.first.bout_number}", seven_eight_match.loser1_name
|
|
assert_equal "Loser of #{conso_semi_bouts.second.bout_number}", seven_eight_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 16 man bracket semis" do
|
|
matches = @tournament.matches.where(weight_id: 5)
|
|
semi_bouts = matches.where(bracket_position: 'Semis')
|
|
assert_equal "Winner Pool 1", semi_bouts.first.loser1_name
|
|
assert_equal "Winner Pool 4", semi_bouts.first.loser2_name
|
|
assert_equal "Winner Pool 2", semi_bouts.second.loser1_name
|
|
assert_equal "Winner Pool 3", semi_bouts.second.loser2_name
|
|
end
|
|
|
|
test "test loser names for 16 man bracket conso semis" do
|
|
matches = @tournament.matches.where(weight_id: 5)
|
|
conso_semi_bouts = matches.where(bracket_position: 'Conso Semis')
|
|
assert_equal "Runner Up Pool 1", conso_semi_bouts.first.loser1_name
|
|
assert_equal "Runner Up Pool 4", conso_semi_bouts.first.loser2_name
|
|
assert_equal "Runner Up Pool 2", conso_semi_bouts.second.loser1_name
|
|
assert_equal "Runner Up Pool 3", conso_semi_bouts.second.loser2_name
|
|
end
|
|
|
|
|
|
test "test loser names for 11 man bracket 3/4th place match" do
|
|
matches = @tournament.matches.where(weight_id: 4)
|
|
semi_bouts = matches.where(bracket_position: 'Semis')
|
|
third_fourth_match = matches.where(bracket_position: '3/4').first
|
|
assert_equal "Loser of #{semi_bouts.first.bout_number}", third_fourth_match.loser1_name
|
|
assert_equal "Loser of #{semi_bouts.second.bout_number}", third_fourth_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 11 man bracket 7/8th place match" do
|
|
matches = @tournament.matches.where(weight_id: 4)
|
|
conso_semi_bouts = matches.where(bracket_position: 'Conso Semis')
|
|
seven_eight_match = matches.where(bracket_position: '7/8').first
|
|
assert_equal "Loser of #{conso_semi_bouts.first.bout_number}", seven_eight_match.loser1_name
|
|
assert_equal "Loser of #{conso_semi_bouts.second.bout_number}", seven_eight_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 11 man bracket quarters" do
|
|
matches = @tournament.matches.where(weight_id: 4)
|
|
quarters = matches.where(bracket_position: 'Quarter')
|
|
assert_equal "Winner Pool 1", quarters.first.loser1_name
|
|
assert_equal "Runner Up Pool 2", quarters.first.loser2_name
|
|
assert_equal "Winner Pool 4", quarters.second.loser1_name
|
|
assert_equal "Runner Up Pool 3", quarters.second.loser2_name
|
|
assert_equal "Winner Pool 2", quarters.third.loser1_name
|
|
assert_equal "Runner Up Pool 1", quarters.third.loser2_name
|
|
assert_equal "Winner Pool 3", quarters.fourth.loser1_name
|
|
assert_equal "Runner Up Pool 4", quarters.fourth.loser2_name
|
|
end
|
|
|
|
test "test loser names for 11 man bracket conso semis" do
|
|
matches = @tournament.matches.where(weight_id: 4)
|
|
quarters = matches.where(bracket_position: 'Quarter')
|
|
conso_semi_bouts = matches.where(bracket_position: 'Conso Semis')
|
|
assert_equal "Loser of #{quarters.first.bout_number}", conso_semi_bouts.first.loser1_name
|
|
assert_equal "Loser of #{quarters.second.bout_number}", conso_semi_bouts.first.loser2_name
|
|
assert_equal "Loser of #{quarters.third.bout_number}", conso_semi_bouts.second.loser1_name
|
|
assert_equal "Loser of #{quarters.fourth.bout_number}", conso_semi_bouts.second.loser2_name
|
|
end
|
|
|
|
test "test loser names for 9 man bracket 3/4th place match" do
|
|
matches = @tournament.matches.where(weight_id: 3)
|
|
third_fourth_match = matches.where(bracket_position: '3/4').first
|
|
assert_equal "Runner Up Pool 1", third_fourth_match.loser1_name
|
|
assert_equal "Runner Up Pool 2", third_fourth_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 9 man bracket 1/2 place match" do
|
|
matches = @tournament.matches.where(weight_id: 3)
|
|
final_match = matches.where(bracket_position: '1/2').first
|
|
assert_equal "Winner Pool 1", final_match.loser1_name
|
|
assert_equal "Winner Pool 2", final_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 7 man bracket 3/4th place match" do
|
|
matches = @tournament.matches.where(weight_id: 2)
|
|
semi_bouts = matches.where(bracket_position: 'Semis')
|
|
third_fourth_match = matches.where(bracket_position: '3/4').first
|
|
assert_equal "Loser of #{semi_bouts.first.bout_number}", third_fourth_match.loser1_name
|
|
assert_equal "Loser of #{semi_bouts.second.bout_number}", third_fourth_match.loser2_name
|
|
end
|
|
|
|
test "test loser names for 7 man bracket semis" do
|
|
matches = @tournament.matches.where(weight_id: 2)
|
|
semi_bouts = matches.where(bracket_position: 'Semis')
|
|
assert_equal "Winner Pool 1", semi_bouts.first.loser1_name
|
|
assert_equal "Runner Up Pool 2", semi_bouts.first.loser2_name
|
|
assert_equal "Winner Pool 2", semi_bouts.second.loser1_name
|
|
assert_equal "Runner Up Pool 1", semi_bouts.second.loser2_name
|
|
end
|
|
test 'test mat assignment after match generation' do
|
|
matches = @tournament.matches.order(:bout_number)
|
|
assert_equal 'Mat1', matches.first.mat.name
|
|
end
|
|
|
|
end
|