mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-25 01:14:43 +00:00
Fixed bug with pool to bracket advancement. This bug was conceived due to the removing of tests and logic when making pool and pool_placement database fields.
This commit is contained in:
@@ -19,7 +19,8 @@ class Match < ActiveRecord::Base
|
||||
calculate_school_points
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
BRACKET_POSITIONS = ["Pool","1/2","3/4","5/6","7/8","Quarter","Semis","Conso Semis"]
|
||||
WIN_TYPES = ["Decision", "Major", "Tech Fall", "Pin", "Forfeit", "Injury Default", "Default", "DQ"]
|
||||
|
||||
def calculate_school_points
|
||||
@@ -29,6 +30,13 @@ class Match < ActiveRecord::Base
|
||||
end
|
||||
end
|
||||
|
||||
def wrestler_in_match(wrestler)
|
||||
if self.w1 == wrestler.id or self.w2 == wrestler.id
|
||||
return true
|
||||
else
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
def mat_assigned
|
||||
if self.mat
|
||||
|
||||
@@ -48,8 +48,8 @@ class Weight < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def all_pool_matches_finished(pool)
|
||||
@wrestlers = wrestlers_in_pool(pool)
|
||||
@wrestlers.each do |w|
|
||||
wrestlers = wrestlers_in_pool(pool)
|
||||
wrestlers.each do |w|
|
||||
if w.pool_matches.size != w.finished_pool_matches.size
|
||||
return false
|
||||
end
|
||||
@@ -58,14 +58,14 @@ class Weight < ActiveRecord::Base
|
||||
end
|
||||
|
||||
def pools
|
||||
@wrestlers = self.wrestlers
|
||||
if @wrestlers.size <= 6
|
||||
wrestlers = self.wrestlers
|
||||
if wrestlers.size <= 6
|
||||
self.pools = 1
|
||||
elsif (@wrestlers.size > 6) && (@wrestlers.size <= 10)
|
||||
elsif (wrestlers.size > 6) && (wrestlers.size <= 10)
|
||||
self.pools = 2
|
||||
elsif (@wrestlers.size > 10) && (@wrestlers.size <= 16)
|
||||
elsif (wrestlers.size > 10) && (wrestlers.size <= 16)
|
||||
self.pools = 4
|
||||
elsif (@wrestlers.size > 16) && (@wrestlers.size <= 24)
|
||||
elsif (wrestlers.size > 16) && (wrestlers.size <= 24)
|
||||
self.pools = 8
|
||||
end
|
||||
end
|
||||
|
||||
@@ -17,12 +17,10 @@ class AdvanceWrestler
|
||||
end
|
||||
|
||||
def pool_to_bracket_advancement
|
||||
if @wrestler.weight.all_pool_matches_finished(@wrestler.pool) and (@wrestler.finished_bracket_matches.size == 0 or @wrestler.weight.pools == 1)
|
||||
if @wrestler.weight.all_pool_matches_finished(@wrestler.pool) and (@wrestler.finished_bracket_matches.size < 1)
|
||||
PoolOrder.new(@wrestler.weight.wrestlers_in_pool(@wrestler.pool)).getPoolOrder
|
||||
end
|
||||
if @wrestler.weight.all_pool_matches_finished(@wrestler.pool)
|
||||
PoolAdvance.new(@wrestler,@wrestler.last_match).advanceWrestler
|
||||
end
|
||||
PoolAdvance.new(@wrestler).advanceWrestler
|
||||
end
|
||||
|
||||
end
|
||||
@@ -1,12 +1,12 @@
|
||||
class PoolAdvance
|
||||
|
||||
def initialize(wrestler,previousMatch)
|
||||
def initialize(wrestler)
|
||||
@wrestler = wrestler
|
||||
@previousMatch = previousMatch
|
||||
@last_match = @wrestler.last_match
|
||||
end
|
||||
|
||||
def advanceWrestler
|
||||
if @wrestler.pool_placement and @wrestler.weight.pools > 1
|
||||
if @wrestler.weight.pools > 1 and @wrestler.finished_bracket_matches.size < 1
|
||||
poolToBracketAdvancment
|
||||
end
|
||||
if @wrestler.finished_bracket_matches.size > 0
|
||||
@@ -15,19 +15,25 @@ class PoolAdvance
|
||||
end
|
||||
|
||||
def poolToBracketAdvancment
|
||||
if @wrestler.pool_placement == 2
|
||||
runnerUpMatch.replace_loser_name_with_wrestler(runnerUp,"Runner Up Pool #{pool}")
|
||||
pool = @wrestler.pool
|
||||
# This has to always run because the last match in a pool might not be a pool winner or runner up
|
||||
winner = Wrestler.where("weight_id = ? and pool_placement = 1 and pool = ?",@wrestler.weight.id, pool).first
|
||||
runner_up = Wrestler.where("weight_id = ? and pool_placement = 2 and pool = ?",@wrestler.weight.id, pool).first
|
||||
if runner_up
|
||||
runner_up_match = Match.where("weight_id = ? and (loser1_name = ? or loser2_name = ?)",@wrestler.weight.id, "Runner Up Pool #{pool}", "Runner Up Pool #{pool}").first
|
||||
runner_up_match.replace_loser_name_with_wrestler(runner_up,"Runner Up Pool #{pool}")
|
||||
end
|
||||
if @wrestler.pool_placement == 1
|
||||
winnerMatch.replace_loser_name_with_wrestler(winner,"Winner Pool #{pool}")
|
||||
if winner
|
||||
winner_match = Match.where("weight_id = ? and (loser1_name = ? or loser2_name = ?)",@wrestler.weight.id, "Winner Pool #{pool}", "Winner Pool #{pool}").first
|
||||
winner_match.replace_loser_name_with_wrestler(winner,"Winner Pool #{pool}")
|
||||
end
|
||||
end
|
||||
|
||||
def bracketAdvancment
|
||||
if @previousMatch.winner_id == @wrestler.id
|
||||
if @last_match.winner_id == @wrestler.id
|
||||
winnerAdvance
|
||||
end
|
||||
if @previousMatch.winner_id != @wrestler.id
|
||||
if @last_match.winner_id != @wrestler.id
|
||||
loserAdvance
|
||||
end
|
||||
end
|
||||
|
||||
37
test/integration/pool_to_bracket_advancement_test.rb
Normal file
37
test/integration/pool_to_bracket_advancement_test.rb
Normal file
@@ -0,0 +1,37 @@
|
||||
require 'test_helper'
|
||||
|
||||
class PoolToBracketAdvancementTest < ActionDispatch::IntegrationTest
|
||||
|
||||
def setup
|
||||
@tournament = create_pool_tournament_single_weight(10)
|
||||
@weight = Weight.where("tournament_id = ? and max = 106", @tournament.id).first
|
||||
end
|
||||
|
||||
def end_all_pool_matches
|
||||
matches = Match.where("weight_id = ? and bracket_position = 'Pool'",@weight.id)
|
||||
matches.each do |match|
|
||||
if match.wrestler1.bracket_line < match.wrestler2.bracket_line
|
||||
match.winner_id = match.w1
|
||||
else
|
||||
match.winner_id = match.w2
|
||||
end
|
||||
match.finished = 1
|
||||
match.score = "2-1"
|
||||
match.save
|
||||
end
|
||||
end
|
||||
|
||||
test "Pool winners are wrestling for first and pool losers are wrestling for third in two pools to finals pool bracket" do
|
||||
end_all_pool_matches
|
||||
pool_winner_1 = Wrestler.where("weight_id = ? and pool = 1 and pool_placement = 1",@weight.id).first
|
||||
pool_runnerup_1 = Wrestler.where("weight_id = ? and pool = 1 and pool_placement = 2",@weight.id).first
|
||||
pool_winner_2 = Wrestler.where("weight_id = ? and pool = 2 and pool_placement = 1",@weight.id).first
|
||||
pool_runnerup_2 = Wrestler.where("weight_id = ? and pool = 2 and pool_placement = 2",@weight.id).first
|
||||
match_1_2 = Match.where("weight_id = ? and bracket_position = '1/2'", @weight.id).first
|
||||
match_3_4 = Match.where("weight_id = ? and bracket_position = '3/4'", @weight.id).first
|
||||
assert match_1_2.wrestler_in_match(pool_winner_1) == true
|
||||
assert match_1_2.wrestler_in_match(pool_winner_2) == true
|
||||
assert match_3_4.wrestler_in_match(pool_runnerup_1) == true
|
||||
assert match_3_4.wrestler_in_match(pool_runnerup_2) == true
|
||||
end
|
||||
end
|
||||
@@ -32,6 +32,7 @@ class ActiveSupport::TestCase
|
||||
@weight.save
|
||||
create_wrestlers_for_weight(@weight, @school, number_of_wrestlers, 1)
|
||||
GenerateTournamentMatches.new(@tournament).generate
|
||||
return @tournament
|
||||
end
|
||||
|
||||
def create_pool_tournament
|
||||
|
||||
Reference in New Issue
Block a user