diff --git a/app/models/pool.rb b/app/models/pool.rb index cb823c8..36c26d5 100644 --- a/app/models/pool.rb +++ b/app/models/pool.rb @@ -1,6 +1,7 @@ class Pool def initialize(weight) @weight = weight + @tournament = @weight.tournament @pool = 1 end @@ -23,7 +24,7 @@ class Pool bouts = b.map bouts.each do |bout| if bout[0] != nil and bout[1] != nil - match = Match.new( + match = @tournament.matches.create( w1: bout[0].id, w2: bout[1].id, weight_id: @weight.id, diff --git a/app/models/tournament.rb b/app/models/tournament.rb index dd8c8b9..a211705 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -16,13 +16,11 @@ class Tournament < ActiveRecord::Base def createCustomWeights(value) self.weights.destroy_all if value == 'hs' - @weights = [106,113,120,132,138,145,152,160,170,182,195,220,285] - end - @weights.each do |w| - newWeight = Weight.new - newWeight.max = w - newWeight.tournament_id = self.id - newWeight.save + Weight::HS_WEIGHT_CLASSES.each do |w| + self.weights.create(max: w) + end + else + raise "Unspecified behavior" end end diff --git a/app/models/tournamentmatchgen.rb b/app/models/tournamentmatchgen.rb index 5285559..8e8b47f 100644 --- a/app/models/tournamentmatchgen.rb +++ b/app/models/tournamentmatchgen.rb @@ -42,6 +42,7 @@ class Tournamentmatchgen end def saveMatches + @tournament.save! @matches.each do |m| m.tournament_id = @tournament.id m.save diff --git a/app/models/weight.rb b/app/models/weight.rb index 3ae2cf8..bcb56f4 100644 --- a/app/models/weight.rb +++ b/app/models/weight.rb @@ -4,6 +4,8 @@ class Weight < ActiveRecord::Base attr_accessor :pools + HS_WEIGHT_CLASSES = [106,113,120,132,138,145,152,160,170,182,195,220,285] + before_save do self.tournament.destroyAllMatches end @@ -43,7 +45,7 @@ class Weight < ActiveRecord::Base end - def twoPoolNumbers(wrestlers) + def twoPoolNumbers(wrestlers) pool = 1 wrestlers.sort_by{|x|[x.original_seed]}.reverse.each do |w| if w.original_seed == 1 @@ -65,8 +67,8 @@ class Weight < ActiveRecord::Base end return wrestlers end - - def fourPoolNumbers(wrestlers) + + def fourPoolNumbers(wrestlers) pool = 1 wrestlers.sort_by{|x|[x.original_seed]}.reverse.each do |w| if w.original_seed == 1 @@ -98,20 +100,20 @@ class Weight < ActiveRecord::Base if self.wrestlers.size > 6 && self.wrestlers.size <= 8 return "twoPoolsToSemi" elsif self.wrestlers.size > 8 && self.wrestlers.size <= 10 - return "twoPoolsToFinal" + return "twoPoolsToFinal" elsif self.wrestlers.size == 11 || self.wrestlers.size == 12 return "fourPoolsToQuarter" elsif self.wrestlers.size > 12 && self.wrestlers.size <= 16 return "fourPoolsToSemi" end end - + def poolRounds(matches) @matchups = matches.select{|m| m.weight_id == self.id} @poolMatches = @matchups.select{|m| m.bracket_position == nil} return @poolMatches.sort_by{|m| m.round}.last.round end - + def totalRounds(matches) @matchups = matches.select{|m| m.weight_id == self.id} @lastRound = matches.sort_by{|m| m.round}.last.round @@ -125,5 +127,5 @@ class Weight < ActiveRecord::Base end return @count end - + end diff --git a/test/integration/poolbracket_matchups_test.rb b/test/integration/poolbracket_matchups_test.rb index 5f803b9..d5fec24 100644 --- a/test/integration/poolbracket_matchups_test.rb +++ b/test/integration/poolbracket_matchups_test.rb @@ -82,13 +82,19 @@ class PoolbracketMatchupsTest < ActionDispatch::IntegrationTest 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_number matches round" do @matchup_to_test = @genMatchups.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.map.sort_by{|x|[x.max]}.first + @weight = @tournament.weights.order(:max).limit(1).first @matchup = @genMatchups.select{|m| m.bout_number == 1000}.first assert_equal @weight.max, @matchup.weight_max end