mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-03-24 17:04:43 +00:00
83 lines
2.9 KiB
Ruby
83 lines
2.9 KiB
Ruby
require 'test_helper'
|
|
|
|
class TournamentCleanupJobTest < ActiveJob::TestCase
|
|
setup do
|
|
# Create an old empty tournament (1 week old, 0 finished matches)
|
|
@old_empty_tournament = tournaments(:one)
|
|
@old_empty_tournament.update(date: 2.weeks.ago.to_date)
|
|
|
|
# Create an old active tournament (1 week old, with finished matches)
|
|
@old_active_tournament = tournaments(:two)
|
|
@old_active_tournament.update(date: 2.weeks.ago.to_date)
|
|
|
|
# Add a finished match to the active tournament using create instead of fixtures
|
|
weight = Weight.create(max: 120, tournament: @old_active_tournament)
|
|
wrestler = Wrestler.create(name: "Test Wrestler", weight: weight, school: schools(:one))
|
|
|
|
@match = Match.create(
|
|
tournament: @old_active_tournament,
|
|
weight: weight,
|
|
bracket_position: "Pool",
|
|
round: 1,
|
|
finished: 1,
|
|
win_type: "Decision",
|
|
score: "10-5",
|
|
w1: wrestler.id,
|
|
winner_id: wrestler.id
|
|
)
|
|
|
|
# Add delegates to test removal
|
|
tournament_delegate = TournamentDelegate.create(tournament: @old_active_tournament, user: users(:one))
|
|
school = schools(:one)
|
|
school.update(tournament_id: @old_active_tournament.id)
|
|
school_delegate = SchoolDelegate.create(school: school, user: users(:one))
|
|
end
|
|
|
|
test "removes old empty tournaments" do
|
|
# In this test, only the empty tournament should be deleted
|
|
@match.update!(win_type: "Decision") # Ensure this tournament has a non-BYE match
|
|
|
|
assert_difference 'Tournament.count', -1 do
|
|
TournamentCleanupJob.perform_now
|
|
end
|
|
|
|
assert_raises(ActiveRecord::RecordNotFound) { @old_empty_tournament.reload }
|
|
assert_nothing_raised { @old_active_tournament.reload }
|
|
end
|
|
|
|
test "removes old empty tournaments with only a bye finished match" do
|
|
# Update the win_type to BYE and score to empty as required by validation
|
|
@match.update!(win_type: "BYE", score: "")
|
|
assert_equal "BYE", @match.reload.win_type
|
|
assert_equal "", @match.score
|
|
|
|
# Both tournaments should be deleted (the empty one and the one with only BYE matches)
|
|
assert_difference 'Tournament.count', -2 do
|
|
TournamentCleanupJob.perform_now
|
|
end
|
|
|
|
assert_raises(ActiveRecord::RecordNotFound) { @old_empty_tournament.reload }
|
|
assert_raises(ActiveRecord::RecordNotFound) { @old_active_tournament.reload }
|
|
end
|
|
|
|
test "cleans up old active tournaments" do
|
|
# Ensure this tournament has a non-BYE match
|
|
@match.update!(win_type: "Decision")
|
|
|
|
TournamentCleanupJob.perform_now
|
|
|
|
# Tournament should still exist
|
|
@old_active_tournament.reload
|
|
|
|
# User association should be removed
|
|
assert_nil @old_active_tournament.user_id
|
|
|
|
# Tournament delegates should be removed
|
|
assert_equal 0, @old_active_tournament.delegates.count
|
|
|
|
# School delegates should be removed
|
|
@old_active_tournament.schools.each do |school|
|
|
assert_equal 0, school.delegates.count
|
|
end
|
|
end
|
|
end |