From 062396da0afc9633f45f3802c36bf2305741c8da Mon Sep 17 00:00:00 2001 From: RJ Osborne Date: Wed, 27 May 2015 23:57:37 -0400 Subject: [PATCH] A Tournament can now generate its own matches. This was again extracted as a module. Modules get more powerful as they get more generic. This is far from generic. --- app/models/generates_tournament_matches.rb | 28 ++++++++++++++ app/models/tournament.rb | 23 +++--------- app/models/tournamentmatchgen.rb | 37 ------------------- test/integration/poolbracket_matchups_test.rb | 1 - 4 files changed, 34 insertions(+), 55 deletions(-) create mode 100644 app/models/generates_tournament_matches.rb delete mode 100644 app/models/tournamentmatchgen.rb diff --git a/app/models/generates_tournament_matches.rb b/app/models/generates_tournament_matches.rb new file mode 100644 index 0000000..752292b --- /dev/null +++ b/app/models/generates_tournament_matches.rb @@ -0,0 +1,28 @@ +module GeneratesTournamentMatches + + def generateMatchups + poolToBracket() if tournament_type == "Pool to bracket" + matches + end + + def poolToBracket + destroyAllMatches + buildTournamentWeights + generateMatches + end + + def buildTournamentWeights + weights.order(:max).each do |weight| + Pool.new(weight).generatePools() + last_match = matches.where(weight: weight).order(round: :desc).limit(1).first + highest_round = last_match.round + Poolbracket.new(weight, highest_round).generateBracketMatches() + end + end + + def generateMatches + assignBouts + assignLoserNames + end + +end diff --git a/app/models/tournament.rb b/app/models/tournament.rb index b4b5c43..5d935dd 100644 --- a/app/models/tournament.rb +++ b/app/models/tournament.rb @@ -1,26 +1,23 @@ class Tournament < ActiveRecord::Base - include GeneratesLoserNames + include GeneratesLoserNames + include GeneratesTournamentMatches has_many :schools, dependent: :destroy has_many :weights, dependent: :destroy has_many :mats, dependent: :destroy has_many :wrestlers, through: :weights - + has_many :matches, dependent: :destroy def tournament_types ["Pool to bracket"] end - def matches - @matches = Match.where(tournament_id: self.id) - end - - def createCustomWeights(value) - self.weights.destroy_all + def createCustomWeights(value) + weights.destroy_all if value == 'hs' Weight::HS_WEIGHT_CLASSES.each do |w| - self.weights.create(max: w) + weights.create(max: w) end else raise "Unspecified behavior" @@ -28,15 +25,7 @@ class Tournament < ActiveRecord::Base end def upcomingMatches - if matches.nil? - return nil - else matches - end - end - - def generateMatchups - @matches = Tournamentmatchgen.new(self).genMatches() end def destroyAllMatches diff --git a/app/models/tournamentmatchgen.rb b/app/models/tournamentmatchgen.rb deleted file mode 100644 index b706778..0000000 --- a/app/models/tournamentmatchgen.rb +++ /dev/null @@ -1,37 +0,0 @@ -class Tournamentmatchgen - - def initialize(tournament) - @tournament = tournament - end - - def genMatches - if @tournament.tournament_type == "Pool to bracket" - poolToBracket() - end - @tournament.matches - end - - def poolToBracket - destroyMatches - buildTournamentWeights - generateMatches - end - - def destroyMatches - @tournament.destroyAllMatches - end - - def buildTournamentWeights - @tournament.weights.order(:max).each do |weight| - Pool.new(weight).generatePools() - last_match = @tournament.matches.where(weight: weight).order(round: :desc).limit(1).first - highest_round = last_match.round - Poolbracket.new(weight, highest_round).generateBracketMatches() - end - end - - def generateMatches - @tournament.assignBouts - @tournament.assignLoserNames - end -end diff --git a/test/integration/poolbracket_matchups_test.rb b/test/integration/poolbracket_matchups_test.rb index 1d0e682..37db1c7 100644 --- a/test/integration/poolbracket_matchups_test.rb +++ b/test/integration/poolbracket_matchups_test.rb @@ -124,7 +124,6 @@ class PoolbracketMatchupsTest < ActionDispatch::IntegrationTest 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)