mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-24 17:04:43 +00:00
Fix advance wrestler not running if the winner id changes
This commit is contained in:
@@ -5,7 +5,13 @@ class Match < ApplicationRecord
|
||||
has_many :wrestlers, :through => :weight
|
||||
has_many :schools, :through => :wrestlers
|
||||
validate :score_validation, :win_type_validation, :bracket_position_validation, :overtime_type_validation
|
||||
after_update :after_finished_actions, :if => :saved_change_to_finished? or :saved_change_to_winner_id? or :saved_change_to_win_type? or :saved_change_to_score?
|
||||
after_update :after_finished_actions, if: -> {
|
||||
saved_change_to_finished? ||
|
||||
saved_change_to_winner_id? ||
|
||||
saved_change_to_win_type? ||
|
||||
saved_change_to_score? ||
|
||||
saved_change_to_overtime_type?
|
||||
}
|
||||
|
||||
def after_finished_actions
|
||||
if self.w1
|
||||
@@ -14,7 +20,7 @@ class Match < ApplicationRecord
|
||||
if self.w2
|
||||
wrestler2.touch
|
||||
end
|
||||
if self.finished == 1 && self.winner_id != nil
|
||||
if self.reload.finished == 1 && self.reload.winner_id != nil
|
||||
if self.mat
|
||||
self.mat.assign_next_match
|
||||
end
|
||||
|
||||
74
test/integration/fix_match_winner_test.rb
Normal file
74
test/integration/fix_match_winner_test.rb
Normal file
@@ -0,0 +1,74 @@
|
||||
require 'test_helper'
|
||||
|
||||
class FixMatchWinner < ActionDispatch::IntegrationTest
|
||||
def setup
|
||||
end
|
||||
|
||||
def winner_by_name(winner_name,match)
|
||||
wrestler = @tournament.weights.first.wrestlers.select{|w| w.name == winner_name}.first
|
||||
match.winner_id = wrestler.id
|
||||
match.finished = 1
|
||||
match.win_type = "Decision"
|
||||
match.score = "1-0"
|
||||
match.save
|
||||
end
|
||||
|
||||
test "Double elimination advance wrestler should run if the winner changes" do
|
||||
create_double_elim_tournament_single_weight(4, "Regular Double Elimination 1-8")
|
||||
|
||||
round1 = @tournament.reload.matches.select{|m| m.round == 1}
|
||||
winner_by_name("Test1", round1.select{|m| m.bracket_position_number == 1}.first)
|
||||
winner_by_name("Test2", round1.select{|m| m.bracket_position_number == 2}.first)
|
||||
|
||||
round1 = @tournament.reload.matches.select{|m| m.round == 1}
|
||||
winner_by_name("Test4", round1.select{|m| m.bracket_position_number == 1}.first)
|
||||
|
||||
first_finals = @tournament.reload.matches.select{|m| m.bracket_position == "1/2"}.first
|
||||
third_finals = @tournament.reload.matches.select{|m| m.bracket_position == "3/4"}.first
|
||||
|
||||
assert first_finals.wrestler1.name == "Test4"
|
||||
assert first_finals.wrestler2.name == "Test2"
|
||||
|
||||
assert third_finals.wrestler1.name == "Test1"
|
||||
assert third_finals.wrestler2.name == "Test3"
|
||||
end
|
||||
|
||||
test "Pool to bracket pool order should run if the winner changes" do
|
||||
create_pool_tournament_single_weight(6)
|
||||
|
||||
end_match(match_wrestler_vs("Test1","Test2"),"Test1")
|
||||
end_match(match_wrestler_vs("Test1","Test3"),"Test1")
|
||||
end_match(match_wrestler_vs("Test1","Test4"),"Test1")
|
||||
end_match(match_wrestler_vs("Test1","Test5"),"Test1")
|
||||
end_match(match_wrestler_vs("Test1","Test6"),"Test1")
|
||||
|
||||
end_match(match_wrestler_vs("Test2","Test3"),"Test2")
|
||||
end_match(match_wrestler_vs("Test2","Test4"),"Test2")
|
||||
end_match(match_wrestler_vs("Test2","Test5"),"Test2")
|
||||
end_match(match_wrestler_vs("Test2","Test6"),"Test2")
|
||||
|
||||
end_match(match_wrestler_vs("Test3","Test4"),"Test3")
|
||||
end_match(match_wrestler_vs("Test3","Test5"),"Test3")
|
||||
end_match(match_wrestler_vs("Test3","Test6"),"Test3")
|
||||
|
||||
end_match(match_wrestler_vs("Test4","Test5"),"Test4")
|
||||
end_match(match_wrestler_vs("Test4","Test6"),"Test4")
|
||||
|
||||
end_match(match_wrestler_vs("Test5","Test6"),"Test5")
|
||||
|
||||
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement == 1
|
||||
assert Wrestler.find(translate_name_to_id("Test2")).pool_placement == 2
|
||||
assert Wrestler.find(translate_name_to_id("Test3")).pool_placement == 3
|
||||
assert Wrestler.find(translate_name_to_id("Test4")).pool_placement == 4
|
||||
assert Wrestler.find(translate_name_to_id("Test5")).pool_placement == 5
|
||||
assert Wrestler.find(translate_name_to_id("Test6")).pool_placement == 6
|
||||
|
||||
end_match(match_wrestler_vs("Test1","Test2"),"Test2")
|
||||
assert Wrestler.find(translate_name_to_id("Test2")).pool_placement == 1
|
||||
assert Wrestler.find(translate_name_to_id("Test1")).pool_placement == 2
|
||||
assert Wrestler.find(translate_name_to_id("Test3")).pool_placement == 3
|
||||
assert Wrestler.find(translate_name_to_id("Test4")).pool_placement == 4
|
||||
assert Wrestler.find(translate_name_to_id("Test5")).pool_placement == 5
|
||||
assert Wrestler.find(translate_name_to_id("Test6")).pool_placement == 6
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user